From ce0fd31b6e4f3d970986dc0fb38d6894833ca4c3 Mon Sep 17 00:00:00 2001 From: cyberbox <468042667@qq.com> Date: Wed, 8 May 2024 20:27:27 +0800 Subject: [PATCH] upgrade libffi from 3.3 to 3.4.2 Signed-off-by: cyberbox <468042667@qq.com> Change-Id: Iea600df9e263a0765f9a6a813150a4fcce08d7c7 --- BUILD.gn | 216 +- ChangeLog | 1551 ++ ChangeLog.old | 7407 ------ LICENSE | 2 +- LICENSE-BUILDTOOLS | 353 - Makefile.am | 159 - Makefile.in | 2024 -- README.OpenSource | 2 +- README.md | 137 +- acinclude.m4 | 479 - aclocal.m4 | 2118 -- bundle.json | 8 +- compile | 348 - config.guess | 1466 -- config.sub | 1836 -- configure | 21915 ---------------- configure.ac | 394 - configure.host | 303 - depcomp | 791 - doc/Makefile.am | 3 - doc/Makefile.in | 814 - doc/libffi.info | 1016 - doc/libffi.pdf | Bin 169865 -> 0 bytes doc/libffi.texi | 997 - doc/mdate-sh | 228 - doc/stamp-vti | 4 - doc/texinfo.tex | 11727 --------- doc/version.texi | 4 - fficonfig.h | 180 - fficonfig.h.in | 214 - generate-darwin-source-and-headers.py | 203 - include/Makefile.am | 9 - include/Makefile.in | 607 - include/ffi-aarch64.h | 500 - include/ffi-arm.h | 500 - include/ffi-x86_64.h | 500 - include/ffi.h | 21 - include/ffi.h.in | 515 - include/ffi_cfi.h | 55 - include/ffi_common.h | 153 - include/ffitarget-aarch64.h | 88 - include/ffitarget-arm.h | 82 - include/ffitarget-x86_64.h | 147 - include/ffitarget.h | 21 - install-sh | 518 - install.py | 77 + libffi-3.4.2.tar.gz | Bin 0 -> 1351355 bytes libffi.map.in | 80 - libffi.pc.in | 11 - libffi.xcodeproj/project.pbxproj | 1043 - libtool-ldflags | 106 - libtool-version | 29 - ltmain.sh | 11149 -------- m4/asmcfi.m4 | 13 - m4/ax_append_flag.m4 | 50 - m4/ax_cc_maxopt.m4 | 194 - m4/ax_cflags_warn_all.m4 | 122 - m4/ax_check_compile_flag.m4 | 53 - m4/ax_compiler_vendor.m4 | 88 - m4/ax_configure_args.m4 | 49 - m4/ax_enable_builddir.m4 | 302 - m4/ax_gcc_archflag.m4 | 267 - m4/ax_gcc_x86_cpuid.m4 | 89 - m4/ax_require_defined.m4 | 37 - m4/libtool.m4 | 8372 ------ m4/ltoptions.m4 | 437 - m4/ltsugar.m4 | 124 - m4/ltversion.m4 | 23 - m4/lt~obsolete.m4 | 99 - make_sunver.pl | 333 - man/Makefile.am | 8 - man/Makefile.in | 561 - man/ffi.3 | 41 - man/ffi_call.3 | 103 - man/ffi_prep_cif.3 | 68 - man/ffi_prep_cif_var.3 | 73 - missing | 215 - msvc_build/aarch64/Ffi_staticLib.sln | 33 - msvc_build/aarch64/Ffi_staticLib.vcxproj | 130 - .../aarch64/Ffi_staticLib.vcxproj.filters | 57 - msvc_build/aarch64/Ffi_staticLib.vcxproj.user | 4 - msvc_build/aarch64/aarch64_include/ffi.h | 511 - .../aarch64/aarch64_include/fficonfig.h | 219 - msvcc.sh | 353 - ...ck-for-invalid-varargs-arguments-707.patch | 197 + ...rt-Fix-signed-vs-unsigned-comparison.patch | 74 + patch/backport-openharmony-adapt.patch | 2718 ++ patch/backport-openharmony-dummy.patch | 0 ...uble-jump-table-slot-size-for-CET-71.patch | 54 + patch/fix-AARCH64EB-support.patch | 28 + patch/libffi-Add-sw64-architecture.patch | 1164 + ...eturn-types-smaller-than-ffi_arg-680.patch | 51 + src/aarch64/ffi.c | 1009 - src/aarch64/ffitarget.h | 92 - src/aarch64/internal.h | 67 - src/aarch64/sysv.S | 440 - src/aarch64/win64_armasm.S | 506 - src/alpha/ffi.c | 521 - src/alpha/ffitarget.h | 57 - src/alpha/internal.h | 23 - src/alpha/osf.S | 282 - src/arc/arcompact.S | 135 - src/arc/ffi.c | 266 - src/arc/ffitarget.h | 53 - src/arm/ffi.c | 854 - src/arm/ffitarget.h | 89 - src/arm/internal.h | 7 - src/arm/sysv.S | 385 - src/arm/sysv_msvc_arm32.S | 311 - src/avr32/ffi.c | 423 - src/avr32/ffitarget.h | 55 - src/avr32/sysv.S | 208 - src/bfin/ffi.c | 196 - src/bfin/ffitarget.h | 43 - src/bfin/sysv.S | 179 - src/closures.c | 998 - src/cris/ffi.c | 386 - src/cris/ffitarget.h | 56 - src/cris/sysv.S | 215 - src/debug.c | 64 - src/dlmalloc.c | 5166 ---- src/frv/eabi.S | 128 - src/frv/ffi.c | 292 - src/frv/ffitarget.h | 62 - src/ia64/ffi.c | 604 - src/ia64/ffitarget.h | 56 - src/ia64/ia64_flags.h | 40 - src/ia64/unix.S | 567 - src/java_raw_api.c | 374 - src/m32r/ffi.c | 232 - src/m32r/ffitarget.h | 53 - src/m32r/sysv.S | 121 - src/m68k/ffi.c | 362 - src/m68k/ffitarget.h | 54 - src/m68k/sysv.S | 357 - src/m88k/ffi.c | 400 - src/m88k/ffitarget.h | 49 - src/m88k/obsd.S | 209 - src/metag/ffi.c | 330 - src/metag/ffitarget.h | 53 - src/metag/sysv.S | 311 - src/microblaze/ffi.c | 321 - src/microblaze/ffitarget.h | 53 - src/microblaze/sysv.S | 302 - src/mips/ffi.c | 1130 - src/mips/ffitarget.h | 244 - src/mips/n32.S | 663 - src/mips/o32.S | 502 - src/moxie/eabi.S | 101 - src/moxie/ffi.c | 285 - src/moxie/ffitarget.h | 52 - src/nios2/ffi.c | 304 - src/nios2/ffitarget.h | 52 - src/nios2/sysv.S | 136 - src/or1k/ffi.c | 328 - src/or1k/ffitarget.h | 58 - src/or1k/sysv.S | 107 - src/pa/ffi.c | 719 - src/pa/ffitarget.h | 85 - src/pa/hpux32.S | 368 - src/pa/linux.S | 378 - src/powerpc/aix.S | 566 - src/powerpc/aix_closure.S | 694 - src/powerpc/asm.h | 125 - src/powerpc/darwin.S | 378 - src/powerpc/darwin_closure.S | 571 - src/powerpc/ffi.c | 175 - src/powerpc/ffi_darwin.c | 1440 - src/powerpc/ffi_linux64.c | 1153 - src/powerpc/ffi_powerpc.h | 105 - src/powerpc/ffi_sysv.c | 923 - src/powerpc/ffitarget.h | 204 - src/powerpc/linux64.S | 283 - src/powerpc/linux64_closure.S | 552 - src/powerpc/ppc_closure.S | 397 - src/powerpc/sysv.S | 175 - src/prep_cif.c | 263 - src/raw_api.c | 267 - src/riscv/ffi.c | 481 - src/riscv/ffitarget.h | 69 - src/riscv/sysv.S | 293 - src/s390/ffi.c | 756 - src/s390/ffitarget.h | 70 - src/s390/internal.h | 11 - src/s390/sysv.S | 325 - src/sh/ffi.c | 717 - src/sh/ffitarget.h | 54 - src/sh/sysv.S | 850 - src/sh64/ffi.c | 469 - src/sh64/ffitarget.h | 58 - src/sh64/sysv.S | 539 - src/sparc/ffi.c | 468 - src/sparc/ffi64.c | 608 - src/sparc/ffitarget.h | 81 - src/sparc/internal.h | 26 - src/sparc/v8.S | 443 - src/sparc/v9.S | 440 - src/tile/ffi.c | 355 - src/tile/ffitarget.h | 65 - src/tile/tile.S | 360 - src/types.c | 108 - src/vax/elfbsd.S | 195 - src/vax/ffi.c | 276 - src/vax/ffitarget.h | 49 - src/x86/asmnames.h | 30 - src/x86/ffi.c | 761 - src/x86/ffi64.c | 886 - src/x86/ffitarget.h | 147 - src/x86/ffiw64.c | 311 - src/x86/internal.h | 29 - src/x86/internal64.h | 22 - src/x86/sysv.S | 1129 - src/x86/sysv_intel.S | 995 - src/x86/unix64.S | 566 - src/x86/win64.S | 237 - src/x86/win64_intel.S | 237 - src/xtensa/ffi.c | 298 - src/xtensa/ffitarget.h | 53 - src/xtensa/sysv.S | 258 - testsuite/Makefile.am | 122 - testsuite/Makefile.in | 647 - testsuite/config/default.exp | 1 - testsuite/lib/libffi.exp | 640 - testsuite/lib/target-libpath.exp | 283 - testsuite/lib/wrapper.exp | 45 - testsuite/libffi.bhaible/Makefile | 28 - testsuite/libffi.bhaible/README | 78 - testsuite/libffi.bhaible/alignof.h | 50 - testsuite/libffi.bhaible/bhaible.exp | 63 - testsuite/libffi.bhaible/test-call.c | 1745 -- testsuite/libffi.bhaible/test-callback.c | 2885 -- testsuite/libffi.bhaible/testcases.c | 743 - testsuite/libffi.call/align_mixed.c | 46 - testsuite/libffi.call/align_stdcall.c | 46 - testsuite/libffi.call/call.exp | 54 - testsuite/libffi.call/err_bad_typedef.c | 26 - testsuite/libffi.call/ffitest.h | 138 - testsuite/libffi.call/float.c | 59 - testsuite/libffi.call/float1.c | 60 - testsuite/libffi.call/float2.c | 61 - testsuite/libffi.call/float3.c | 74 - testsuite/libffi.call/float4.c | 62 - testsuite/libffi.call/float_va.c | 107 - testsuite/libffi.call/many.c | 59 - testsuite/libffi.call/many2.c | 57 - testsuite/libffi.call/many_double.c | 70 - testsuite/libffi.call/many_mixed.c | 78 - testsuite/libffi.call/negint.c | 52 - testsuite/libffi.call/offsets.c | 46 - testsuite/libffi.call/pr1172638.c | 127 - testsuite/libffi.call/promotion.c | 59 - testsuite/libffi.call/pyobjc-tc.c | 114 - testsuite/libffi.call/return_dbl.c | 36 - testsuite/libffi.call/return_dbl1.c | 43 - testsuite/libffi.call/return_dbl2.c | 42 - testsuite/libffi.call/return_fl.c | 35 - testsuite/libffi.call/return_fl1.c | 36 - testsuite/libffi.call/return_fl2.c | 49 - testsuite/libffi.call/return_fl3.c | 42 - testsuite/libffi.call/return_ldl.c | 34 - testsuite/libffi.call/return_ll.c | 41 - testsuite/libffi.call/return_ll1.c | 43 - testsuite/libffi.call/return_sc.c | 36 - testsuite/libffi.call/return_sl.c | 38 - testsuite/libffi.call/return_uc.c | 38 - testsuite/libffi.call/return_ul.c | 38 - testsuite/libffi.call/strlen.c | 44 - testsuite/libffi.call/strlen2.c | 49 - testsuite/libffi.call/strlen3.c | 49 - testsuite/libffi.call/strlen4.c | 55 - testsuite/libffi.call/struct1.c | 67 - testsuite/libffi.call/struct10.c | 57 - testsuite/libffi.call/struct2.c | 67 - testsuite/libffi.call/struct3.c | 60 - testsuite/libffi.call/struct4.c | 64 - testsuite/libffi.call/struct5.c | 66 - testsuite/libffi.call/struct6.c | 64 - testsuite/libffi.call/struct7.c | 74 - testsuite/libffi.call/struct8.c | 81 - testsuite/libffi.call/struct9.c | 68 - testsuite/libffi.call/uninitialized.c | 61 - testsuite/libffi.call/va_1.c | 196 - testsuite/libffi.call/va_struct1.c | 121 - testsuite/libffi.call/va_struct2.c | 123 - testsuite/libffi.call/va_struct3.c | 125 - testsuite/libffi.closures/closure.exp | 67 - testsuite/libffi.closures/closure_fn0.c | 89 - testsuite/libffi.closures/closure_fn1.c | 81 - testsuite/libffi.closures/closure_fn2.c | 81 - testsuite/libffi.closures/closure_fn3.c | 82 - testsuite/libffi.closures/closure_fn4.c | 89 - testsuite/libffi.closures/closure_fn5.c | 92 - testsuite/libffi.closures/closure_fn6.c | 90 - testsuite/libffi.closures/closure_loc_fn0.c | 95 - testsuite/libffi.closures/closure_simple.c | 55 - testsuite/libffi.closures/cls_12byte.c | 94 - testsuite/libffi.closures/cls_16byte.c | 95 - testsuite/libffi.closures/cls_18byte.c | 96 - testsuite/libffi.closures/cls_19byte.c | 102 - testsuite/libffi.closures/cls_1_1byte.c | 89 - testsuite/libffi.closures/cls_20byte.c | 91 - testsuite/libffi.closures/cls_20byte1.c | 93 - testsuite/libffi.closures/cls_24byte.c | 113 - testsuite/libffi.closures/cls_2byte.c | 90 - testsuite/libffi.closures/cls_3_1byte.c | 95 - testsuite/libffi.closures/cls_3byte1.c | 90 - testsuite/libffi.closures/cls_3byte2.c | 90 - testsuite/libffi.closures/cls_3float.c | 95 - testsuite/libffi.closures/cls_4_1byte.c | 98 - testsuite/libffi.closures/cls_4byte.c | 90 - testsuite/libffi.closures/cls_5_1_byte.c | 109 - testsuite/libffi.closures/cls_5byte.c | 98 - testsuite/libffi.closures/cls_64byte.c | 124 - testsuite/libffi.closures/cls_6_1_byte.c | 113 - testsuite/libffi.closures/cls_6byte.c | 99 - testsuite/libffi.closures/cls_7_1_byte.c | 117 - testsuite/libffi.closures/cls_7byte.c | 97 - testsuite/libffi.closures/cls_8byte.c | 88 - testsuite/libffi.closures/cls_9byte1.c | 90 - testsuite/libffi.closures/cls_9byte2.c | 91 - testsuite/libffi.closures/cls_align_double.c | 93 - testsuite/libffi.closures/cls_align_float.c | 91 - .../libffi.closures/cls_align_longdouble.c | 92 - .../cls_align_longdouble_split.c | 132 - .../cls_align_longdouble_split2.c | 115 - testsuite/libffi.closures/cls_align_pointer.c | 95 - testsuite/libffi.closures/cls_align_sint16.c | 91 - testsuite/libffi.closures/cls_align_sint32.c | 91 - testsuite/libffi.closures/cls_align_sint64.c | 92 - testsuite/libffi.closures/cls_align_uint16.c | 91 - testsuite/libffi.closures/cls_align_uint32.c | 91 - testsuite/libffi.closures/cls_align_uint64.c | 93 - testsuite/libffi.closures/cls_dbls_struct.c | 66 - testsuite/libffi.closures/cls_double.c | 43 - testsuite/libffi.closures/cls_double_va.c | 61 - testsuite/libffi.closures/cls_float.c | 42 - testsuite/libffi.closures/cls_longdouble.c | 105 - testsuite/libffi.closures/cls_longdouble_va.c | 61 - .../libffi.closures/cls_many_mixed_args.c | 70 - .../cls_many_mixed_float_double.c | 55 - testsuite/libffi.closures/cls_multi_schar.c | 74 - testsuite/libffi.closures/cls_multi_sshort.c | 74 - .../libffi.closures/cls_multi_sshortchar.c | 86 - testsuite/libffi.closures/cls_multi_uchar.c | 91 - testsuite/libffi.closures/cls_multi_ushort.c | 74 - .../libffi.closures/cls_multi_ushortchar.c | 86 - testsuite/libffi.closures/cls_pointer.c | 74 - testsuite/libffi.closures/cls_pointer_stack.c | 142 - testsuite/libffi.closures/cls_schar.c | 44 - testsuite/libffi.closures/cls_sint.c | 42 - testsuite/libffi.closures/cls_sshort.c | 42 - testsuite/libffi.closures/cls_struct_va1.c | 114 - testsuite/libffi.closures/cls_uchar.c | 42 - testsuite/libffi.closures/cls_uchar_va.c | 44 - testsuite/libffi.closures/cls_uint.c | 43 - testsuite/libffi.closures/cls_uint_va.c | 45 - testsuite/libffi.closures/cls_ulong_va.c | 45 - testsuite/libffi.closures/cls_ulonglong.c | 47 - testsuite/libffi.closures/cls_ushort.c | 43 - testsuite/libffi.closures/cls_ushort_va.c | 44 - testsuite/libffi.closures/err_bad_abi.c | 36 - testsuite/libffi.closures/ffitest.h | 138 - testsuite/libffi.closures/huge_struct.c | 341 - testsuite/libffi.closures/nested_struct.c | 152 - testsuite/libffi.closures/nested_struct1.c | 161 - testsuite/libffi.closures/nested_struct10.c | 134 - testsuite/libffi.closures/nested_struct11.c | 121 - testsuite/libffi.closures/nested_struct2.c | 110 - testsuite/libffi.closures/nested_struct3.c | 111 - testsuite/libffi.closures/nested_struct4.c | 111 - testsuite/libffi.closures/nested_struct5.c | 112 - testsuite/libffi.closures/nested_struct6.c | 131 - testsuite/libffi.closures/nested_struct7.c | 111 - testsuite/libffi.closures/nested_struct8.c | 131 - testsuite/libffi.closures/nested_struct9.c | 131 - testsuite/libffi.closures/problem1.c | 90 - testsuite/libffi.closures/stret_large.c | 145 - testsuite/libffi.closures/stret_large2.c | 148 - testsuite/libffi.closures/stret_medium.c | 124 - testsuite/libffi.closures/stret_medium2.c | 125 - testsuite/libffi.closures/testclosure.c | 70 - testsuite/libffi.closures/unwindtest.cc | 117 - .../libffi.closures/unwindtest_ffi_call.cc | 54 - .../libffi.complex/cls_align_complex.inc | 91 - .../libffi.complex/cls_align_complex_double.c | 10 - .../libffi.complex/cls_align_complex_float.c | 10 - .../cls_align_complex_longdouble.c | 10 - testsuite/libffi.complex/cls_complex.inc | 42 - testsuite/libffi.complex/cls_complex_double.c | 10 - testsuite/libffi.complex/cls_complex_float.c | 10 - .../libffi.complex/cls_complex_longdouble.c | 10 - .../libffi.complex/cls_complex_struct.inc | 71 - .../cls_complex_struct_double.c | 10 - .../libffi.complex/cls_complex_struct_float.c | 10 - .../cls_complex_struct_longdouble.c | 10 - testsuite/libffi.complex/cls_complex_va.inc | 80 - .../libffi.complex/cls_complex_va_double.c | 10 - .../libffi.complex/cls_complex_va_float.c | 16 - .../cls_complex_va_longdouble.c | 10 - testsuite/libffi.complex/complex.exp | 36 - testsuite/libffi.complex/complex.inc | 51 - .../libffi.complex/complex_defs_double.inc | 7 - .../libffi.complex/complex_defs_float.inc | 7 - .../complex_defs_longdouble.inc | 7 - testsuite/libffi.complex/complex_double.c | 10 - testsuite/libffi.complex/complex_float.c | 10 - testsuite/libffi.complex/complex_int.c | 86 - testsuite/libffi.complex/complex_longdouble.c | 10 - testsuite/libffi.complex/ffitest.h | 1 - testsuite/libffi.complex/many_complex.inc | 78 - .../libffi.complex/many_complex_double.c | 10 - testsuite/libffi.complex/many_complex_float.c | 10 - .../libffi.complex/many_complex_longdouble.c | 10 - testsuite/libffi.complex/return_complex.inc | 37 - testsuite/libffi.complex/return_complex1.inc | 41 - .../libffi.complex/return_complex1_double.c | 10 - .../libffi.complex/return_complex1_float.c | 10 - .../return_complex1_longdouble.c | 10 - testsuite/libffi.complex/return_complex2.inc | 44 - .../libffi.complex/return_complex2_double.c | 10 - .../libffi.complex/return_complex2_float.c | 10 - .../return_complex2_longdouble.c | 10 - .../libffi.complex/return_complex_double.c | 10 - .../libffi.complex/return_complex_float.c | 10 - .../return_complex_longdouble.c | 10 - testsuite/libffi.go/aa-direct.c | 34 - testsuite/libffi.go/closure1.c | 28 - testsuite/libffi.go/ffitest.h | 1 - testsuite/libffi.go/go.exp | 36 - testsuite/libffi.go/static-chain.h | 19 - 430 files changed, 6154 insertions(+), 151572 deletions(-) delete mode 100644 ChangeLog.old delete mode 100644 LICENSE-BUILDTOOLS delete mode 100644 Makefile.am delete mode 100644 Makefile.in delete mode 100644 acinclude.m4 delete mode 100644 aclocal.m4 delete mode 100755 compile delete mode 100644 config.guess delete mode 100644 config.sub delete mode 100755 configure delete mode 100644 configure.ac delete mode 100644 configure.host delete mode 100755 depcomp delete mode 100644 doc/Makefile.am delete mode 100644 doc/Makefile.in delete mode 100644 doc/libffi.info delete mode 100644 doc/libffi.pdf delete mode 100644 doc/libffi.texi delete mode 100755 doc/mdate-sh delete mode 100644 doc/stamp-vti delete mode 100644 doc/texinfo.tex delete mode 100644 doc/version.texi delete mode 100644 fficonfig.h delete mode 100644 fficonfig.h.in delete mode 100755 generate-darwin-source-and-headers.py delete mode 100644 include/Makefile.am delete mode 100644 include/Makefile.in delete mode 100644 include/ffi-aarch64.h delete mode 100644 include/ffi-arm.h delete mode 100644 include/ffi-x86_64.h delete mode 100644 include/ffi.h delete mode 100644 include/ffi.h.in delete mode 100644 include/ffi_cfi.h delete mode 100644 include/ffi_common.h delete mode 100644 include/ffitarget-aarch64.h delete mode 100644 include/ffitarget-arm.h delete mode 100644 include/ffitarget-x86_64.h delete mode 100644 include/ffitarget.h delete mode 100755 install-sh create mode 100755 install.py create mode 100644 libffi-3.4.2.tar.gz delete mode 100644 libffi.map.in delete mode 100644 libffi.pc.in delete mode 100644 libffi.xcodeproj/project.pbxproj delete mode 100755 libtool-ldflags delete mode 100644 libtool-version delete mode 100644 ltmain.sh delete mode 100644 m4/asmcfi.m4 delete mode 100644 m4/ax_append_flag.m4 delete mode 100644 m4/ax_cc_maxopt.m4 delete mode 100644 m4/ax_cflags_warn_all.m4 delete mode 100644 m4/ax_check_compile_flag.m4 delete mode 100644 m4/ax_compiler_vendor.m4 delete mode 100644 m4/ax_configure_args.m4 delete mode 100644 m4/ax_enable_builddir.m4 delete mode 100644 m4/ax_gcc_archflag.m4 delete mode 100644 m4/ax_gcc_x86_cpuid.m4 delete mode 100644 m4/ax_require_defined.m4 delete mode 100644 m4/libtool.m4 delete mode 100644 m4/ltoptions.m4 delete mode 100644 m4/ltsugar.m4 delete mode 100644 m4/ltversion.m4 delete mode 100644 m4/lt~obsolete.m4 delete mode 100644 make_sunver.pl delete mode 100644 man/Makefile.am delete mode 100644 man/Makefile.in delete mode 100644 man/ffi.3 delete mode 100644 man/ffi_call.3 delete mode 100644 man/ffi_prep_cif.3 delete mode 100644 man/ffi_prep_cif_var.3 delete mode 100755 missing delete mode 100644 msvc_build/aarch64/Ffi_staticLib.sln delete mode 100644 msvc_build/aarch64/Ffi_staticLib.vcxproj delete mode 100644 msvc_build/aarch64/Ffi_staticLib.vcxproj.filters delete mode 100644 msvc_build/aarch64/Ffi_staticLib.vcxproj.user delete mode 100644 msvc_build/aarch64/aarch64_include/ffi.h delete mode 100644 msvc_build/aarch64/aarch64_include/fficonfig.h delete mode 100755 msvcc.sh create mode 100644 patch/backport-Fix-check-for-invalid-varargs-arguments-707.patch create mode 100644 patch/backport-Fix-signed-vs-unsigned-comparison.patch create mode 100644 patch/backport-openharmony-adapt.patch create mode 100644 patch/backport-openharmony-dummy.patch create mode 100644 patch/backport-x86-64-Always-double-jump-table-slot-size-for-CET-71.patch create mode 100644 patch/fix-AARCH64EB-support.patch create mode 100644 patch/libffi-Add-sw64-architecture.patch create mode 100644 patch/riscv-extend-return-types-smaller-than-ffi_arg-680.patch delete mode 100644 src/aarch64/ffi.c delete mode 100644 src/aarch64/ffitarget.h delete mode 100644 src/aarch64/internal.h delete mode 100644 src/aarch64/sysv.S delete mode 100644 src/aarch64/win64_armasm.S delete mode 100644 src/alpha/ffi.c delete mode 100644 src/alpha/ffitarget.h delete mode 100644 src/alpha/internal.h delete mode 100644 src/alpha/osf.S delete mode 100644 src/arc/arcompact.S delete mode 100644 src/arc/ffi.c delete mode 100644 src/arc/ffitarget.h delete mode 100644 src/arm/ffi.c delete mode 100644 src/arm/ffitarget.h delete mode 100644 src/arm/internal.h delete mode 100644 src/arm/sysv.S delete mode 100644 src/arm/sysv_msvc_arm32.S delete mode 100644 src/avr32/ffi.c delete mode 100644 src/avr32/ffitarget.h delete mode 100644 src/avr32/sysv.S delete mode 100644 src/bfin/ffi.c delete mode 100644 src/bfin/ffitarget.h delete mode 100644 src/bfin/sysv.S delete mode 100644 src/closures.c delete mode 100644 src/cris/ffi.c delete mode 100644 src/cris/ffitarget.h delete mode 100644 src/cris/sysv.S delete mode 100644 src/debug.c delete mode 100644 src/dlmalloc.c delete mode 100644 src/frv/eabi.S delete mode 100644 src/frv/ffi.c delete mode 100644 src/frv/ffitarget.h delete mode 100644 src/ia64/ffi.c delete mode 100644 src/ia64/ffitarget.h delete mode 100644 src/ia64/ia64_flags.h delete mode 100644 src/ia64/unix.S delete mode 100644 src/java_raw_api.c delete mode 100644 src/m32r/ffi.c delete mode 100644 src/m32r/ffitarget.h delete mode 100644 src/m32r/sysv.S delete mode 100644 src/m68k/ffi.c delete mode 100644 src/m68k/ffitarget.h delete mode 100644 src/m68k/sysv.S delete mode 100644 src/m88k/ffi.c delete mode 100644 src/m88k/ffitarget.h delete mode 100644 src/m88k/obsd.S delete mode 100644 src/metag/ffi.c delete mode 100644 src/metag/ffitarget.h delete mode 100644 src/metag/sysv.S delete mode 100644 src/microblaze/ffi.c delete mode 100644 src/microblaze/ffitarget.h delete mode 100644 src/microblaze/sysv.S delete mode 100644 src/mips/ffi.c delete mode 100644 src/mips/ffitarget.h delete mode 100644 src/mips/n32.S delete mode 100644 src/mips/o32.S delete mode 100644 src/moxie/eabi.S delete mode 100644 src/moxie/ffi.c delete mode 100644 src/moxie/ffitarget.h delete mode 100644 src/nios2/ffi.c delete mode 100644 src/nios2/ffitarget.h delete mode 100644 src/nios2/sysv.S delete mode 100644 src/or1k/ffi.c delete mode 100644 src/or1k/ffitarget.h delete mode 100644 src/or1k/sysv.S delete mode 100644 src/pa/ffi.c delete mode 100644 src/pa/ffitarget.h delete mode 100644 src/pa/hpux32.S delete mode 100644 src/pa/linux.S delete mode 100644 src/powerpc/aix.S delete mode 100644 src/powerpc/aix_closure.S delete mode 100644 src/powerpc/asm.h delete mode 100644 src/powerpc/darwin.S delete mode 100644 src/powerpc/darwin_closure.S delete mode 100644 src/powerpc/ffi.c delete mode 100644 src/powerpc/ffi_darwin.c delete mode 100644 src/powerpc/ffi_linux64.c delete mode 100644 src/powerpc/ffi_powerpc.h delete mode 100644 src/powerpc/ffi_sysv.c delete mode 100644 src/powerpc/ffitarget.h delete mode 100644 src/powerpc/linux64.S delete mode 100644 src/powerpc/linux64_closure.S delete mode 100644 src/powerpc/ppc_closure.S delete mode 100644 src/powerpc/sysv.S delete mode 100644 src/prep_cif.c delete mode 100644 src/raw_api.c delete mode 100644 src/riscv/ffi.c delete mode 100644 src/riscv/ffitarget.h delete mode 100644 src/riscv/sysv.S delete mode 100644 src/s390/ffi.c delete mode 100644 src/s390/ffitarget.h delete mode 100644 src/s390/internal.h delete mode 100644 src/s390/sysv.S delete mode 100644 src/sh/ffi.c delete mode 100644 src/sh/ffitarget.h delete mode 100644 src/sh/sysv.S delete mode 100644 src/sh64/ffi.c delete mode 100644 src/sh64/ffitarget.h delete mode 100644 src/sh64/sysv.S delete mode 100644 src/sparc/ffi.c delete mode 100644 src/sparc/ffi64.c delete mode 100644 src/sparc/ffitarget.h delete mode 100644 src/sparc/internal.h delete mode 100644 src/sparc/v8.S delete mode 100644 src/sparc/v9.S delete mode 100644 src/tile/ffi.c delete mode 100644 src/tile/ffitarget.h delete mode 100644 src/tile/tile.S delete mode 100644 src/types.c delete mode 100644 src/vax/elfbsd.S delete mode 100644 src/vax/ffi.c delete mode 100644 src/vax/ffitarget.h delete mode 100644 src/x86/asmnames.h delete mode 100644 src/x86/ffi.c delete mode 100644 src/x86/ffi64.c delete mode 100644 src/x86/ffitarget.h delete mode 100644 src/x86/ffiw64.c delete mode 100644 src/x86/internal.h delete mode 100644 src/x86/internal64.h delete mode 100644 src/x86/sysv.S delete mode 100644 src/x86/sysv_intel.S delete mode 100644 src/x86/unix64.S delete mode 100644 src/x86/win64.S delete mode 100644 src/x86/win64_intel.S delete mode 100644 src/xtensa/ffi.c delete mode 100644 src/xtensa/ffitarget.h delete mode 100644 src/xtensa/sysv.S delete mode 100644 testsuite/Makefile.am delete mode 100644 testsuite/Makefile.in delete mode 100644 testsuite/config/default.exp delete mode 100644 testsuite/lib/libffi.exp delete mode 100644 testsuite/lib/target-libpath.exp delete mode 100644 testsuite/lib/wrapper.exp delete mode 100644 testsuite/libffi.bhaible/Makefile delete mode 100644 testsuite/libffi.bhaible/README delete mode 100644 testsuite/libffi.bhaible/alignof.h delete mode 100644 testsuite/libffi.bhaible/bhaible.exp delete mode 100644 testsuite/libffi.bhaible/test-call.c delete mode 100644 testsuite/libffi.bhaible/test-callback.c delete mode 100644 testsuite/libffi.bhaible/testcases.c delete mode 100644 testsuite/libffi.call/align_mixed.c delete mode 100644 testsuite/libffi.call/align_stdcall.c delete mode 100644 testsuite/libffi.call/call.exp delete mode 100644 testsuite/libffi.call/err_bad_typedef.c delete mode 100644 testsuite/libffi.call/ffitest.h delete mode 100644 testsuite/libffi.call/float.c delete mode 100644 testsuite/libffi.call/float1.c delete mode 100644 testsuite/libffi.call/float2.c delete mode 100644 testsuite/libffi.call/float3.c delete mode 100644 testsuite/libffi.call/float4.c delete mode 100644 testsuite/libffi.call/float_va.c delete mode 100644 testsuite/libffi.call/many.c delete mode 100644 testsuite/libffi.call/many2.c delete mode 100644 testsuite/libffi.call/many_double.c delete mode 100644 testsuite/libffi.call/many_mixed.c delete mode 100644 testsuite/libffi.call/negint.c delete mode 100644 testsuite/libffi.call/offsets.c delete mode 100644 testsuite/libffi.call/pr1172638.c delete mode 100644 testsuite/libffi.call/promotion.c delete mode 100644 testsuite/libffi.call/pyobjc-tc.c delete mode 100644 testsuite/libffi.call/return_dbl.c delete mode 100644 testsuite/libffi.call/return_dbl1.c delete mode 100644 testsuite/libffi.call/return_dbl2.c delete mode 100644 testsuite/libffi.call/return_fl.c delete mode 100644 testsuite/libffi.call/return_fl1.c delete mode 100644 testsuite/libffi.call/return_fl2.c delete mode 100644 testsuite/libffi.call/return_fl3.c delete mode 100644 testsuite/libffi.call/return_ldl.c delete mode 100644 testsuite/libffi.call/return_ll.c delete mode 100644 testsuite/libffi.call/return_ll1.c delete mode 100644 testsuite/libffi.call/return_sc.c delete mode 100644 testsuite/libffi.call/return_sl.c delete mode 100644 testsuite/libffi.call/return_uc.c delete mode 100644 testsuite/libffi.call/return_ul.c delete mode 100644 testsuite/libffi.call/strlen.c delete mode 100644 testsuite/libffi.call/strlen2.c delete mode 100644 testsuite/libffi.call/strlen3.c delete mode 100644 testsuite/libffi.call/strlen4.c delete mode 100644 testsuite/libffi.call/struct1.c delete mode 100644 testsuite/libffi.call/struct10.c delete mode 100644 testsuite/libffi.call/struct2.c delete mode 100644 testsuite/libffi.call/struct3.c delete mode 100644 testsuite/libffi.call/struct4.c delete mode 100644 testsuite/libffi.call/struct5.c delete mode 100644 testsuite/libffi.call/struct6.c delete mode 100644 testsuite/libffi.call/struct7.c delete mode 100644 testsuite/libffi.call/struct8.c delete mode 100644 testsuite/libffi.call/struct9.c delete mode 100644 testsuite/libffi.call/uninitialized.c delete mode 100644 testsuite/libffi.call/va_1.c delete mode 100644 testsuite/libffi.call/va_struct1.c delete mode 100644 testsuite/libffi.call/va_struct2.c delete mode 100644 testsuite/libffi.call/va_struct3.c delete mode 100644 testsuite/libffi.closures/closure.exp delete mode 100644 testsuite/libffi.closures/closure_fn0.c delete mode 100644 testsuite/libffi.closures/closure_fn1.c delete mode 100644 testsuite/libffi.closures/closure_fn2.c delete mode 100644 testsuite/libffi.closures/closure_fn3.c delete mode 100644 testsuite/libffi.closures/closure_fn4.c delete mode 100644 testsuite/libffi.closures/closure_fn5.c delete mode 100644 testsuite/libffi.closures/closure_fn6.c delete mode 100644 testsuite/libffi.closures/closure_loc_fn0.c delete mode 100644 testsuite/libffi.closures/closure_simple.c delete mode 100644 testsuite/libffi.closures/cls_12byte.c delete mode 100644 testsuite/libffi.closures/cls_16byte.c delete mode 100644 testsuite/libffi.closures/cls_18byte.c delete mode 100644 testsuite/libffi.closures/cls_19byte.c delete mode 100644 testsuite/libffi.closures/cls_1_1byte.c delete mode 100644 testsuite/libffi.closures/cls_20byte.c delete mode 100644 testsuite/libffi.closures/cls_20byte1.c delete mode 100644 testsuite/libffi.closures/cls_24byte.c delete mode 100644 testsuite/libffi.closures/cls_2byte.c delete mode 100644 testsuite/libffi.closures/cls_3_1byte.c delete mode 100644 testsuite/libffi.closures/cls_3byte1.c delete mode 100644 testsuite/libffi.closures/cls_3byte2.c delete mode 100644 testsuite/libffi.closures/cls_3float.c delete mode 100644 testsuite/libffi.closures/cls_4_1byte.c delete mode 100644 testsuite/libffi.closures/cls_4byte.c delete mode 100644 testsuite/libffi.closures/cls_5_1_byte.c delete mode 100644 testsuite/libffi.closures/cls_5byte.c delete mode 100644 testsuite/libffi.closures/cls_64byte.c delete mode 100644 testsuite/libffi.closures/cls_6_1_byte.c delete mode 100644 testsuite/libffi.closures/cls_6byte.c delete mode 100644 testsuite/libffi.closures/cls_7_1_byte.c delete mode 100644 testsuite/libffi.closures/cls_7byte.c delete mode 100644 testsuite/libffi.closures/cls_8byte.c delete mode 100644 testsuite/libffi.closures/cls_9byte1.c delete mode 100644 testsuite/libffi.closures/cls_9byte2.c delete mode 100644 testsuite/libffi.closures/cls_align_double.c delete mode 100644 testsuite/libffi.closures/cls_align_float.c delete mode 100644 testsuite/libffi.closures/cls_align_longdouble.c delete mode 100644 testsuite/libffi.closures/cls_align_longdouble_split.c delete mode 100644 testsuite/libffi.closures/cls_align_longdouble_split2.c delete mode 100644 testsuite/libffi.closures/cls_align_pointer.c delete mode 100644 testsuite/libffi.closures/cls_align_sint16.c delete mode 100644 testsuite/libffi.closures/cls_align_sint32.c delete mode 100644 testsuite/libffi.closures/cls_align_sint64.c delete mode 100644 testsuite/libffi.closures/cls_align_uint16.c delete mode 100644 testsuite/libffi.closures/cls_align_uint32.c delete mode 100644 testsuite/libffi.closures/cls_align_uint64.c delete mode 100644 testsuite/libffi.closures/cls_dbls_struct.c delete mode 100644 testsuite/libffi.closures/cls_double.c delete mode 100644 testsuite/libffi.closures/cls_double_va.c delete mode 100644 testsuite/libffi.closures/cls_float.c delete mode 100644 testsuite/libffi.closures/cls_longdouble.c delete mode 100644 testsuite/libffi.closures/cls_longdouble_va.c delete mode 100644 testsuite/libffi.closures/cls_many_mixed_args.c delete mode 100644 testsuite/libffi.closures/cls_many_mixed_float_double.c delete mode 100644 testsuite/libffi.closures/cls_multi_schar.c delete mode 100644 testsuite/libffi.closures/cls_multi_sshort.c delete mode 100644 testsuite/libffi.closures/cls_multi_sshortchar.c delete mode 100644 testsuite/libffi.closures/cls_multi_uchar.c delete mode 100644 testsuite/libffi.closures/cls_multi_ushort.c delete mode 100644 testsuite/libffi.closures/cls_multi_ushortchar.c delete mode 100644 testsuite/libffi.closures/cls_pointer.c delete mode 100644 testsuite/libffi.closures/cls_pointer_stack.c delete mode 100644 testsuite/libffi.closures/cls_schar.c delete mode 100644 testsuite/libffi.closures/cls_sint.c delete mode 100644 testsuite/libffi.closures/cls_sshort.c delete mode 100644 testsuite/libffi.closures/cls_struct_va1.c delete mode 100644 testsuite/libffi.closures/cls_uchar.c delete mode 100644 testsuite/libffi.closures/cls_uchar_va.c delete mode 100644 testsuite/libffi.closures/cls_uint.c delete mode 100644 testsuite/libffi.closures/cls_uint_va.c delete mode 100644 testsuite/libffi.closures/cls_ulong_va.c delete mode 100644 testsuite/libffi.closures/cls_ulonglong.c delete mode 100644 testsuite/libffi.closures/cls_ushort.c delete mode 100644 testsuite/libffi.closures/cls_ushort_va.c delete mode 100644 testsuite/libffi.closures/err_bad_abi.c delete mode 100644 testsuite/libffi.closures/ffitest.h delete mode 100644 testsuite/libffi.closures/huge_struct.c delete mode 100644 testsuite/libffi.closures/nested_struct.c delete mode 100644 testsuite/libffi.closures/nested_struct1.c delete mode 100644 testsuite/libffi.closures/nested_struct10.c delete mode 100644 testsuite/libffi.closures/nested_struct11.c delete mode 100644 testsuite/libffi.closures/nested_struct2.c delete mode 100644 testsuite/libffi.closures/nested_struct3.c delete mode 100644 testsuite/libffi.closures/nested_struct4.c delete mode 100644 testsuite/libffi.closures/nested_struct5.c delete mode 100644 testsuite/libffi.closures/nested_struct6.c delete mode 100644 testsuite/libffi.closures/nested_struct7.c delete mode 100644 testsuite/libffi.closures/nested_struct8.c delete mode 100644 testsuite/libffi.closures/nested_struct9.c delete mode 100644 testsuite/libffi.closures/problem1.c delete mode 100644 testsuite/libffi.closures/stret_large.c delete mode 100644 testsuite/libffi.closures/stret_large2.c delete mode 100644 testsuite/libffi.closures/stret_medium.c delete mode 100644 testsuite/libffi.closures/stret_medium2.c delete mode 100644 testsuite/libffi.closures/testclosure.c delete mode 100644 testsuite/libffi.closures/unwindtest.cc delete mode 100644 testsuite/libffi.closures/unwindtest_ffi_call.cc delete mode 100644 testsuite/libffi.complex/cls_align_complex.inc delete mode 100644 testsuite/libffi.complex/cls_align_complex_double.c delete mode 100644 testsuite/libffi.complex/cls_align_complex_float.c delete mode 100644 testsuite/libffi.complex/cls_align_complex_longdouble.c delete mode 100644 testsuite/libffi.complex/cls_complex.inc delete mode 100644 testsuite/libffi.complex/cls_complex_double.c delete mode 100644 testsuite/libffi.complex/cls_complex_float.c delete mode 100644 testsuite/libffi.complex/cls_complex_longdouble.c delete mode 100644 testsuite/libffi.complex/cls_complex_struct.inc delete mode 100644 testsuite/libffi.complex/cls_complex_struct_double.c delete mode 100644 testsuite/libffi.complex/cls_complex_struct_float.c delete mode 100644 testsuite/libffi.complex/cls_complex_struct_longdouble.c delete mode 100644 testsuite/libffi.complex/cls_complex_va.inc delete mode 100644 testsuite/libffi.complex/cls_complex_va_double.c delete mode 100644 testsuite/libffi.complex/cls_complex_va_float.c delete mode 100644 testsuite/libffi.complex/cls_complex_va_longdouble.c delete mode 100644 testsuite/libffi.complex/complex.exp delete mode 100644 testsuite/libffi.complex/complex.inc delete mode 100644 testsuite/libffi.complex/complex_defs_double.inc delete mode 100644 testsuite/libffi.complex/complex_defs_float.inc delete mode 100644 testsuite/libffi.complex/complex_defs_longdouble.inc delete mode 100644 testsuite/libffi.complex/complex_double.c delete mode 100644 testsuite/libffi.complex/complex_float.c delete mode 100644 testsuite/libffi.complex/complex_int.c delete mode 100644 testsuite/libffi.complex/complex_longdouble.c delete mode 100644 testsuite/libffi.complex/ffitest.h delete mode 100644 testsuite/libffi.complex/many_complex.inc delete mode 100644 testsuite/libffi.complex/many_complex_double.c delete mode 100644 testsuite/libffi.complex/many_complex_float.c delete mode 100644 testsuite/libffi.complex/many_complex_longdouble.c delete mode 100644 testsuite/libffi.complex/return_complex.inc delete mode 100644 testsuite/libffi.complex/return_complex1.inc delete mode 100644 testsuite/libffi.complex/return_complex1_double.c delete mode 100644 testsuite/libffi.complex/return_complex1_float.c delete mode 100644 testsuite/libffi.complex/return_complex1_longdouble.c delete mode 100644 testsuite/libffi.complex/return_complex2.inc delete mode 100644 testsuite/libffi.complex/return_complex2_double.c delete mode 100644 testsuite/libffi.complex/return_complex2_float.c delete mode 100644 testsuite/libffi.complex/return_complex2_longdouble.c delete mode 100644 testsuite/libffi.complex/return_complex_double.c delete mode 100644 testsuite/libffi.complex/return_complex_float.c delete mode 100644 testsuite/libffi.complex/return_complex_longdouble.c delete mode 100644 testsuite/libffi.go/aa-direct.c delete mode 100644 testsuite/libffi.go/closure1.c delete mode 100644 testsuite/libffi.go/ffitest.h delete mode 100644 testsuite/libffi.go/go.exp delete mode 100644 testsuite/libffi.go/static-chain.h diff --git a/BUILD.gn b/BUILD.gn index 9e7cb8e..1f15ab6 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -2,14 +2,128 @@ import("//build/ohos.gni") -if (target_cpu == "arm") { - config("ffi_config") { - visibility = [ ":*" ] +libffi_dir = "${target_gen_dir}/libffi-3.4.2" +action("libffi_action") { + print("libffi_action is exec") + script = "//third_party/libffi/install.py" + outputs = [ + "$libffi_dir/src/raw_api.c", + "$libffi_dir/src/tramp.c", + "$libffi_dir/src/closures.c", + "$libffi_dir/src/debug.c", + "$libffi_dir/src/types.c", + "$libffi_dir/src/java_raw_api.c", + "$libffi_dir/src/dlmalloc.c", + "$libffi_dir/src/prep_cif.c", + "$libffi_dir/src/cris/sysv.S", + "$libffi_dir/src/cris/ffi.c", + "$libffi_dir/src/arc/ffi.c", + "$libffi_dir/src/arc/arcompact.S", + "$libffi_dir/src/s390/sysv.S", + "$libffi_dir/src/s390/ffi.c", + "$libffi_dir/src/or1k/sysv.S", + "$libffi_dir/src/or1k/ffi.c", + "$libffi_dir/src/avr32/sysv.S", + "$libffi_dir/src/avr32/ffi.c", + "$libffi_dir/src/tile/ffi.c", + "$libffi_dir/src/tile/tile.S", + "$libffi_dir/src/pa/linux.S", + "$libffi_dir/src/pa/ffi.c", + "$libffi_dir/src/pa/hpux32.S", + "$libffi_dir/src/x86/win64_intel.S", + "$libffi_dir/src/x86/sysv.S", + "$libffi_dir/src/x86/ffi.c", + "$libffi_dir/src/x86/sysv_intel.S", + "$libffi_dir/src/x86/ffi64.c", + "$libffi_dir/src/x86/ffiw64.c", + "$libffi_dir/src/x86/win64.S", + "$libffi_dir/src/x86/unix64.S", + "$libffi_dir/src/alpha/ffi.c", + "$libffi_dir/src/alpha/osf.S", + "$libffi_dir/src/csky/sysv.S", + "$libffi_dir/src/csky/ffi.c", + "$libffi_dir/src/bfin/sysv.S", + "$libffi_dir/src/bfin/ffi.c", + "$libffi_dir/src/sh/sysv.S", + "$libffi_dir/src/sh/ffi.c", + "$libffi_dir/src/arm/sysv.S", + "$libffi_dir/src/arm/ffi.c", + "$libffi_dir/src/arm/sysv_msvc_arm32.S", + "$libffi_dir/src/sparc/v9.S", + "$libffi_dir/src/sparc/ffi.c", + "$libffi_dir/src/sparc/ffi64.c", + "$libffi_dir/src/sparc/v8.S", + "$libffi_dir/src/xtensa/sysv.S", + "$libffi_dir/src/xtensa/ffi.c", + "$libffi_dir/src/moxie/ffi.c", + "$libffi_dir/src/moxie/eabi.S", + "$libffi_dir/src/frv/ffi.c", + "$libffi_dir/src/frv/eabi.S", + "$libffi_dir/src/m88k/ffi.c", + "$libffi_dir/src/m88k/obsd.S", + "$libffi_dir/src/ia64/ffi.c", + "$libffi_dir/src/ia64/unix.S", + "$libffi_dir/src/nios2/sysv.S", + "$libffi_dir/src/nios2/ffi.c", + "$libffi_dir/src/riscv/sysv.S", + "$libffi_dir/src/riscv/ffi.c", + "$libffi_dir/src/m68k/sysv.S", + "$libffi_dir/src/m68k/ffi.c", + "$libffi_dir/src/sh64/sysv.S", + "$libffi_dir/src/sh64/ffi.c", + "$libffi_dir/src/powerpc/ffi_linux64.c", + "$libffi_dir/src/powerpc/darwin.S", + "$libffi_dir/src/powerpc/darwin_closure.S", + "$libffi_dir/src/powerpc/sysv.S", + "$libffi_dir/src/powerpc/ffi_sysv.c", + "$libffi_dir/src/powerpc/ffi.c", + "$libffi_dir/src/powerpc/aix_closure.S", + "$libffi_dir/src/powerpc/linux64_closure.S", + "$libffi_dir/src/powerpc/linux64.S", + "$libffi_dir/src/powerpc/ffi_darwin.c", + "$libffi_dir/src/powerpc/aix.S", + "$libffi_dir/src/powerpc/ppc_closure.S", + "$libffi_dir/src/aarch64/sysv.S", + "$libffi_dir/src/aarch64/ffi.c", + "$libffi_dir/src/aarch64/win64_armasm.S", + "$libffi_dir/src/microblaze/sysv.S", + "$libffi_dir/src/microblaze/ffi.c", + "$libffi_dir/src/metag/sysv.S", + "$libffi_dir/src/metag/ffi.c", + "$libffi_dir/src/mips/o32.S", + "$libffi_dir/src/mips/n32.S", + "$libffi_dir/src/mips/ffi.c", + "$libffi_dir/src/sw_64/ffi.c", + "$libffi_dir/src/sw_64/osf.S", + "$libffi_dir/src/m32r/sysv.S", + "$libffi_dir/src/m32r/ffi.c", + "$libffi_dir/src/kvx/sysv.S", + "$libffi_dir/src/kvx/ffi.c", + "$libffi_dir/src/vax/elfbsd.S", + "$libffi_dir/src/vax/ffi.c", + ] + + inputs = [ "//third_party/libffi/libffi-3.4.2.tar.gz" ] + libffi_path = rebase_path("${target_gen_dir}", root_build_dir) + libffi_source_path = rebase_path("//third_party/libffi", root_build_dir) + args = [ + "--gen-dir", + "$libffi_path", + "--source-dir", + "$libffi_source_path", + ] +} + +config("ffi_public_config") { + include_dirs = [ "$libffi_dir/include" ] +} +ohos_shared_library("ffi") { + if (target_cpu == "arm") { include_dirs = [ - ".", - "./include", - "./src/arm", + "$libffi_dir", + "$libffi_dir/include", + "$libffi_dir/src/arm", ] cflags = [ @@ -18,29 +132,22 @@ if (target_cpu == "arm") { "-Wno-implicit-function-declaration", "-Wno-extern-initializer", ] - } - ohos_source_set("ffi_source") { sources = [ - "src/arm/ffi.c", - "src/arm/sysv.S", - "src/closures.c", - "src/java_raw_api.c", - "src/prep_cif.c", - "src/raw_api.c", - "src/types.c", + "$libffi_dir/src/arm/ffi.c", + "$libffi_dir/src/arm/sysv.S", + "$libffi_dir/src/closures.c", + "$libffi_dir/src/java_raw_api.c", + "$libffi_dir/src/prep_cif.c", + "$libffi_dir/src/raw_api.c", + "$libffi_dir/src/tramp.c", + "$libffi_dir/src/types.c", ] - - configs = [ ":ffi_config" ] - } -} else if (target_cpu == "x86_64") { - config("ffi_config") { - visibility = [ ":*" ] - + } else if (target_cpu == "x86_64") { include_dirs = [ - ".", - "./include", - "./src/x86", + "$libffi_dir", + "$libffi_dir/include", + "$libffi_dir/src/x86", ] cflags = [ @@ -49,29 +156,22 @@ if (target_cpu == "arm") { "-Wno-implicit-function-declaration", "-Wno-extern-initializer", ] - } - ohos_source_set("ffi_source") { sources = [ - "src/closures.c", - "src/java_raw_api.c", - "src/prep_cif.c", - "src/raw_api.c", - "src/types.c", - "src/x86/ffi64.c", - "src/x86/unix64.S", + "$libffi_dir/src/closures.c", + "$libffi_dir/src/java_raw_api.c", + "$libffi_dir/src/prep_cif.c", + "$libffi_dir/src/raw_api.c", + "$libffi_dir/src/tramp.c", + "$libffi_dir/src/types.c", + "$libffi_dir/src/x86/ffi64.c", + "$libffi_dir/src/x86/unix64.S", ] - - configs = [ ":ffi_config" ] - } -} else { - config("ffi_config") { - visibility = [ ":*" ] - + } else { include_dirs = [ - ".", - "./include", - "./src/aarch64", + "$libffi_dir", + "$libffi_dir/include", + "$libffi_dir/src/aarch64", ] cflags = [ @@ -80,30 +180,20 @@ if (target_cpu == "arm") { "-Wno-implicit-function-declaration", "-Wno-extern-initializer", ] - } - ohos_source_set("ffi_source") { sources = [ - "src/aarch64/ffi.c", - "src/aarch64/sysv.S", - "src/closures.c", - "src/java_raw_api.c", - "src/prep_cif.c", - "src/raw_api.c", - "src/types.c", + "$libffi_dir/src/aarch64/ffi.c", + "$libffi_dir/src/aarch64/sysv.S", + "$libffi_dir/src/closures.c", + "$libffi_dir/src/java_raw_api.c", + "$libffi_dir/src/prep_cif.c", + "$libffi_dir/src/raw_api.c", + "$libffi_dir/src/tramp.c", + "$libffi_dir/src/types.c", ] - - configs = [ ":ffi_config" ] } -} - -config("ffi_public_config") { - include_dirs = [ "include" ] -} - -ohos_shared_library("ffi") { - deps = [ ":ffi_source" ] + deps = [ ":libffi_action" ] public_configs = [ ":ffi_public_config" ] part_name = "libffi" diff --git a/ChangeLog b/ChangeLog index fad8eae..e766a74 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,1554 @@ +commit f9ea41683444ebe11cfa45b05223899764df28fb +Author: Anthony Green +Date: Mon Jun 28 21:10:49 2021 -0400 + + Update version to 3.4.2 + +commit 2bdc8e52efb78d939f23efb4f9c515355610bff5 +Author: Anthony Green +Date: Mon Jun 28 19:50:29 2021 -0400 + + Version 3.4.1 + +commit c1d09bf08c2859abb40c476c57ae521d208f92a8 +Author: Anthony Green +Date: Mon Jun 28 18:50:31 2021 -0400 + + Update version to 3.4.0 + +commit 1ed0aa73806872f0c31dccf2c689c762239d3353 +Author: Anthony Green +Date: Mon Jun 28 18:45:11 2021 -0400 + + Fix warnings + +commit 0a2cc2ec2893821f62b36b269da1dbc0442a5617 +Author: Anthony Green +Date: Mon Jun 28 14:59:07 2021 -0400 + + Add missing test cases to distribution + +commit ee3ef737857e13cc01a15dbef298478d90188805 +Author: Hood Chatham +Date: Mon Jun 28 11:51:35 2021 -0700 + + Add tests for single entry structs (#653) + +commit f08c5ace5750f1e1f234f52f4d3d772bb8d276a0 +Author: Hood Chatham +Date: Mon Jun 28 07:24:19 2021 -0700 + + Fix the assertions in cls-24byte (#652) + + * Fix the assertions in cls-24byte + + * Update print statement too + +commit 4557f232926353f5cdec0f2f459e4d59ce8f19e4 +Author: Anthony Green +Date: Mon Jun 28 09:53:01 2021 -0400 + + 3.4.0 release candidate 2 + +commit cd4428911d5c4d25ce2c24e6728124792124bba2 +Author: Jeremy Huddleston Sequoia +Date: Mon Jun 28 04:56:30 2021 -0700 + + Add missing FFI_HIDDEN to ffi_tramp_is_present declaration (#651) + + Signed-off-by: Jeremy Huddleston Sequoia + +commit 9fa94c607852081adce33547bde292fe4313cff7 +Author: Hood Chatham +Date: Sun Jun 27 11:02:33 2021 -0700 + + Print more information when an assertion fails in test suite (#649) + +commit 91eaadfb2e4b79d12a45d24002b06563e5905e5d +Author: Hood Chatham +Date: Sun Jun 27 09:49:31 2021 -0700 + + Fix signature of function pointer in cls_dbls_struct (#648) + +commit 132699b95d3ee4d889ea2a80540acf3300987dad +Author: Sergei Trofimovich +Date: Sun Jun 27 16:50:20 2021 +0100 + + configure.ac: add --disable-exec-static-tramp flag (#647) + + Some projects like GHC (Glasgow Haskell Compiler) and + gobject-introspection use `ffi_closure_alloc()` as a way + to allocate executable memory. exec static tramp + interferes with it (unclear how exactly yet). + + GHC symptom: ffi closure freeing cimplains about unexpected + trampoline (GHC manually fills one): + + ``` + $ ghci + GHCi, version 8.10.5: https://www.haskell.org/ghc/ :? for help + ghc: freeHaskellFunctionPtr: not for me, guv! 0x7f0417a1efe8 + ghc: freeHaskellFunctionPtr: not for me, guv! 0x7f0417a1efc8 + ``` + + gobject-introspection symptom: + + ``` + $ meld + Segmentation fault (core dumped) + + $ gdb --args /usr/bin/python3.9 /usr/bin/meld + (gdb) run + ... + Thread 1 "python3.9" received signal SIGSEGV, Segmentation fault. + 0x00007fffe9ac1ae8 in g_callable_info_free_closure ( + callable_info=0x555555d45990, closure=0x7fffe9e70c20) + at ../gobject-introspection-1.68.0/girepository/girffi.c:428 + 428 g_free (wrapper->ffi_closure.cif->arg_types); + (gdb) bt + callable_info=0x555555d45990, closure=0x7fffe9e70c20) + at ../gobject-introspection-1.68.0/girepository/girffi.c:428 + data=0x555555d252d0) + at ../pygobject-3.40.1/gi/pygi-closure.c:635 + ... + ``` + + To ease downstreams narrowing down the actual problem let's + provide a knob to disable exec static trampolines. + + The change for not affect current default. + + Signed-off-by: Sergei Trofimovich + +commit 4e07374c2773711902ec12905d5c64d95d22d050 +Author: Anthony Green +Date: Sun Jun 27 11:25:06 2021 -0400 + + Remove caveat about varargs support + +commit 11f9713887e1d8e9bdf861c1555de55aba9fc46c +Author: Anthony Green +Date: Sun Jun 27 07:46:12 2021 -0400 + + Update contact info + +commit f792adb61a27aa2a7d24573b956ce29ebdb82e03 +Author: Sergei Trofimovich +Date: Sat Jun 26 22:26:52 2021 +0100 + + configure.ac: allow user to specify READELF (#646) + + Before the change with x86_64-pc-linux-gnu cross-compiler + installed the configure was not able to find cross-readelf: + + ``` + $ ./configure --host=x86_64-pc-linux-gnu + ... + checking whether .eh_frame section should be read-only... .././configure: line 19540: readelf: command not found + yes + ... + ``` + + The change uses AC_CHECK_TOOL to automatically seatch for ${host}-readelf, + readelf. And as a bonus it also allows user to override readelf with + something like READELF=llvm-readelf. + + Signed-off-by: Sergei Trofimovich + +commit 9cf15b3a284d8e79f3673b8743d4157739df5d36 +Author: Anthony Green +Date: Sat Jun 26 12:12:06 2021 -0400 + + Make 3.4 release candidate 1 + +commit 1e5dc8de825d03f5493884a45e1edeacda2106c5 +Author: Anthony Green +Date: Sat Jun 26 12:08:35 2021 -0400 + + Add missing file from make dist. Add missing license info. + +commit c0b210c7fd1e5b4a17e9fc839a4cf1d75483d591 +Author: Anthony Green +Date: Sat Jun 26 10:55:57 2021 -0400 + + Remove test case + +commit 87429ce726ead7bb789d194c6d979c5b0c4086e9 +Author: Matthew Green <85970515+squidhacks@users.noreply.github.com> +Date: Sat Jun 26 08:49:45 2021 -0400 + + This test includes a closure and must live in the closures test directory. (#645) + + Co-authored-by: Matthew Green + +commit 8d83c7c1fa331b93e58967979c59c38600df1ee9 +Author: Hood Chatham +Date: Fri Jun 25 19:50:33 2021 -0700 + + Make test methods static (#644) + +commit becae7397873d6bb85a271b16961f055e71f42a6 +Author: Anthony Green +Date: Tue Jun 22 13:01:06 2021 -0400 + + Switch from travis-ci.org to travis-ci.com. + +commit fa1ef887d4dc5d18696517e32e2ae98310f0040d +Author: Anthony Green +Date: Tue Jun 22 08:48:24 2021 -0400 + + Avoid undefined behaviour + +commit 84bb56914756845371be62e2753041521fd5d261 +Author: Tres Finocchiaro +Date: Tue Jun 22 07:33:46 2021 -0400 + + Remove libtool-ldflags file from .gitignore (#600) + + This is correct. Thank you! + +commit 5651bea284ad0822eafe768e3443c2f4d7da2c8f +Author: Jakub Jelinek +Date: Tue Jun 15 15:19:26 2021 -0400 + + 2021-06-15 Jakub Jelinek + + * src/x86/ffi64.c (classify_argument): For FFI_TYPE_STRUCT set words + to number of words needed for type->size + byte_offset bytes rather + than just type->size bytes. Compute pos before the loop and check + total size of the structure. + * testsuite/libffi.call/nested_struct12.c: New test. + +commit f56eb85227bbcc7bd81232a338655146385a77ca +Author: DJ Delorie +Date: Tue Jun 15 08:50:20 2021 -0400 + + Don't stop test on copy failure (#636) + + * Don't stop test on copy failure + + Static-library tests were failing only because there were + no DLLs to copy. This change makes a copy failure not stop + the build; if a failed copy would otherwise be relevent, the + later tests would fail anyway. + + While there are more clever ways to solve this, a brute force + fix is sufficient. + + * [TEST] Try cygwin64; install more packages explicitly + + * use correct cygwin64 directory name + + appveyor has cygwin64 pre-installed in /cygwin64, and 32-bit cygwin + in /cygwin + + * More testing - revert VS change, bump travis timeout + + * Add -g to update the rest of perl + + * Skip execution tests on non-native platforms + + Special site.exp that skips the unix_load() command for arm platforms. + + Unset TERM to avoid cruft in stdout + + Try harder to find the libffi libraries + +commit ff059dd96af6ba4daf7bc9ddf22d1d2dbf6a177b +Author: vhankala <81743325+vhankala@users.noreply.github.com> +Date: Thu Jun 10 18:41:02 2021 +0000 + + Fix build on OpenBSD/mips64 (#638) + + The build fails on OpenBSD/mips64 because clang 11's integrated + assembler expects read-only .eh_frame: + + ../src/mips/n32.S:585:9: error: changed section flags for .eh_frame, expected: 0x2 + .section .eh_frame,"aw",@progbits + ^ + + Use EH_FRAME_FLAGS to get matching flags for the section. + +commit e6eb59cde6580607544160f8e7dedc326b4799fd +Author: Cheng Jin +Date: Wed Jun 9 16:00:10 2021 -0400 + + Add struct test to verify a nested float struct (#640) + + The test aims to check a nested float struct + [float, [float,float]] to see whether it works good + with libffi. + + Signed-off-by: Cheng Jin + +commit 6eb38863bc0b21854959ebf845f8672c44a99684 +Author: Anthony Green +Date: Wed Jun 9 15:45:31 2021 -0400 + + Remove reference to old test case + +commit ca2235ecfe717ecaed6abbef3a2ca2918a91c60b +Author: Anthony Green +Date: Fri Jun 4 18:20:24 2021 -0400 + + Revert appveyor changes + +commit 243004cc4c8be552503a5d10710ebb252b406064 +Author: Anthony Green +Date: Tue Jun 1 23:00:29 2021 -0400 + + Update vs version + +commit 04c157f49a1b83798c102f3259bc397b9b7f7266 +Author: Anthony Green +Date: Tue Jun 1 22:57:47 2021 -0400 + + Upgrade to vs2019 + +commit 03a78e88402fff424426a1968e014be93666b86f +Author: Anthony Green +Date: Tue Jun 1 22:53:44 2021 -0400 + + Try updating automake + +commit 1f1829bd4ce19b58d0354db3bef21cb8402cdf82 +Author: Anthony Green +Date: Tue Jun 1 22:34:37 2021 -0400 + + Bring in the latest version of perl + +commit dd5bd03075149d7cf8441875c1a344e8beb57dde +Author: Martin Storsjö +Date: Wed Apr 7 05:42:10 2021 +0300 + + Fix building for arm windows with mingw toolchains (#631) + + * arm: Check _WIN32 instead of _M_ARM or _MSC_VER for detecting windows + + This matches what was done for ARM64 in + c06468fa6674d3783a0edb1d0fae9afc8bc28513. + + * arm: Only use armasm source when building with MSVC + + When building for windows/arm with clang, the normal gas style .S + source works fine (if fixed up to support thumb and other windows + specifics). + + This matches what was done for ARM64 in + c06468fa6674d3783a0edb1d0fae9afc8bc28513. + + * arm: Fix sysv.S to work in thumb mode + + Align cases in jump tables (adding nop padding to make sure each + case starts where expected). + + Rewrite instructions that add directly to the pc register. + + For ffi_closure_ret, factor out a call_epilogue subroutine that + restores both sp and pc from the stack; the thumb version of ldm + can't load into the sp register. To avoid excessive ifdeffing, keep + using call_epilogue in arm mode, but keep the shorter "ldm sp, {sp, pc}" + epilogue in that case. + + * arm: Add win32 version of trampoline to sysv.S + + This matches the version of it in sysv_msvc_arm32.S. The calling + C code expects a specific form of the trampoline on windows; make + sure these work the same on windows regardless of the form of + assembly used. + + * arm: Avoid optimizing out clearing the thumb bit of ffi_arm_trampoline + + We clear the thumb bit of ffi_arm_trampoline with a bitmask before + memcpying its instructions into closure->tramp. + + If the bit isn't cleared, the memcpy of the trampoline function + copies the wrong instructions. + + If the ffi_arm_trampoline symbol is declared as an array of int, + the compiler can assume that it is aligned to a 4 byte boundary + and the bitmask operation is a no-op, and optimize it out. + + See https://godbolt.org/z/dE3jE1WTz; both Clang and GCC optimize + out the bitmask as it is, while MSVC doesn't. By declaring the + trampoline as an array of unsigned char, the bitmask works as + intended. + +commit 95ef857d5c6ed15c6c6ba5f8a5b26c0a38b417ab +Author: Anthony Green +Date: Thu Mar 25 10:43:05 2021 -0400 + + Verbose brew update. + +commit 78c97c9ff4491e14e78992ffabdd043674c05e15 +Author: Anthony Green +Date: Thu Mar 25 09:15:37 2021 -0400 + + Move container images to quay.io. + +commit 58dfdf6a84b98296ceb2b8b4237d37aa75bb2cd4 +Author: Sergei Trofimovich +Date: Wed Mar 24 23:19:54 2021 +0000 + + testsuite: fix compiler vendor detection on dash as /bin/sh (#594) + + In https://bugs.gentoo.org/753299 Paolo Pedroni reported + a single test failure out of all libffi. Here is the minimal + reproducer: + + ``` + $ ./autogen + $ CONFIG_SHELL=/bin/dash ./configure --host=x86_64-pc-linux-gnu + $ make check RUNTESTFLAGS='complex.exp' + ... + FAIL: libffi.complex/cls_align_complex_float.c (test for excess errors) + ``` + + This happens because under 'dash' shell autoconf generates slightly + different style of string quotation in `config.log`: + + - on bash: `ax_cv_c_compiler_vendor=gnu` + - on dash: `ax_cv_c_compiler_vendor='gnu'` + + To avoid shell quotation parsing the change just embeds + `compiler_vendor` into `local.exp` at configure time. + + Reported-by: Paolo Pedroni + Bug: https://bugs.gentoo.org/753299 + Signed-off-by: Sergei Trofimovich + +commit eafab2356e8dcf5f01d2bcfa311cafba3b395a7e +Author: Jeremy Huddleston Sequoia +Date: Wed Mar 24 11:38:36 2021 -0700 + + arm64e: Pull in pointer authentication code from Apple's arm64e libffi port (#565) + + NOTES: This changes the ptrauth support from #548 to match what Apple is + shipping in its libffi-27 tag. + + Signed-off-by: Jeremy Huddleston Sequoia + +commit 01b56f4b3e89a349228c4ccf55061d847153c8d6 +Author: ericLemanissier +Date: Wed Mar 24 12:20:27 2021 +0100 + + fix windows tests (#595) + + * Update .appveyor.yml + + * add (debug+release)*(shared+static) CI + + * fix libversion + +commit 1aeb26714ec30649f5d9de5b4884a4ac46f5f474 +Author: Ole André Vadla Ravnås +Date: Wed Mar 24 12:16:12 2021 +0100 + + x86: Fix thiscall and fastcall stack cleanup behavior (#611) + + These are meant to use callee clean-up. + +commit e92c81a549924c80d70666ecbe5ed0c2fcd7963a +Author: Anthony Green +Date: Wed Mar 24 07:07:53 2021 -0400 + + Mention MSVC runtime stack checking improvement + +commit f88add14e40de398706c732e578620e8106062c7 +Author: Ole André Vadla Ravnås +Date: Wed Mar 24 12:04:51 2021 +0100 + + x86: Fix MSVC runtime checks interop (#612) + + MSVC can add runtime code that checks if a stack frame is mismanaged, + however our custom assembly deliberately accesses and modifies the parent + stack frame. Fortunately we can disable that specific check for the + function call so do that. + + Co-authored-by: Matthew Waters + +commit aa4dafb159a2e0f74aa39353a1bf23a943f36656 +Author: Anthony Green +Date: Tue Mar 23 19:06:08 2021 -0400 + + Mention LIBFFI_TMPDIR + +commit 70ea259c603e0f84eda766be29d4259f1e8fe5b7 +Author: DJ Delorie +Date: Tue Mar 23 19:03:45 2021 -0400 + + Search $LIBFFI_TMPDIR also (#605) + + Most temp file directories need to be hardened against execution, but + libffi needs execute privileges. Add a libffi-specific temp directory + that can be set up by sysadmins as needed with suitable permissions. + This both ensures that libffi will have a valid temp directory to use + as well as preventing attempts to access other directories. + +commit f58e5ee63263657a7e8f2892d27c012a16facc1a +Author: AndreRH +Date: Tue Mar 23 23:54:00 2021 +0100 + + aarch64: Fix closures for win64 (#606) + +commit 5865450decd13275b2bde064bd4a0f79bca6dba2 +Author: Francisco Boni +Date: Tue Mar 23 19:50:09 2021 -0300 + + Update ax_cc_maxopt m4 macro (#617) + + Keeps libffi's specific changes + (https://github.com/libffi/libffi/commit/cec3a3a201f17a7f018f25e1a0917bd5206e5a5a#diff-2396a1256ac4b1c6849c931ddb8018bdd984bb2383be21bb819a33b95d8d603f) + and updates to the latest ax_cc_maxopt.m4 + (http://git.savannah.gnu.org/gitweb/?p=autoconf-archive.git;a=commit;h=73ee1b396c21062ee8eeb8721ba5323322110fb5): + + ax_cc_maxopt.m4: retain setting of CFLAGS by configure + + AX_CC_MAXOPT checks whether CFLAGS was set by the user; if so, the user’s + setting is respected. This behavior is retained, of course. + + However, AX_CC_MAXOPT was then setting CFLAGS="". This overrode the default + setting by configure, which usually includes -g. Hence, if CFLAGS was not + set by the user, retain the default setting, to preserve the ability to + debug. + + A typical default setting from configure is "-g -O2". This means that + AX_CC_MAXOPT might typically set CFLAGS to "-g -O2 -O3". This is fine, + because the later -O3 will override the earlier -O2. (The only assumption is + that all compilers that AX_CC_MAXOPT knows behave in this sane way.) + +commit 8f44384df17b536615caef951a615655a967103f +Author: Anthony Green +Date: Tue Mar 23 14:24:54 2021 -0400 + + Fix formatting + +commit 9d491b5e21ffd7fcf2370d998a4832b755d1c9e9 +Author: Anthony Green +Date: Tue Mar 23 12:26:37 2021 -0400 + + Mention KVX + +commit 205cf01b57972fdc8c090fc79192b464dc43fc0d +Author: Anthony Green +Date: Tue Mar 23 11:31:08 2021 -0400 + + Bug #680. Don't accept floats or small ints as var args. (#628) + + * Bug #680. Don't accept floats or small ints as var args. + + * Bug #680. Don't accept floats or small ints as var args. + + * Bug #680. Don't accept floats or small ints as var args. + +commit d271dbe0a8b230e566fa3385babdc9cc0ca214ea +Author: Jeremy Huddleston Sequoia +Date: Sat Mar 20 06:06:28 2021 -0700 + + Add some missing #if conditionals from Apple's code drop (#620) + + * arm/aarch64: Add FFI_CLOSURES conditionals where appropriate + + Signed-off-by: Jeremy Huddleston Sequoia + + * aarch64: Don't emit the do_closure label when building without FFI_GO_CLOSURES + + Signed-off-by: Jeremy Huddleston Sequoia + +commit bae695da367b6abd83152f8f1e9b1a8b79794c8d +Author: Russell Keith-Magee +Date: Sat Mar 6 00:09:17 2021 +0800 + + Add configuration generator for tvOS and watchOS. (#625) + +commit 9ba559217bea0803263a9a9a0bafcf9203606f5b +Author: Madhavan T. Venkataraman <75220914+madvenka786@users.noreply.github.com> +Date: Fri Mar 5 10:07:30 2021 -0600 + + Static tramp v5 (#624) + + * Static Trampolines + + Closure Trampoline Security Issue + ================================= + + Currently, the trampoline code used in libffi is not statically defined in + a source file (except for MACH). The trampoline is either pre-defined + machine code in a data buffer. Or, it is generated at runtime. In order to + execute a trampoline, it needs to be placed in a page with executable + permissions. + + Executable data pages are attack surfaces for attackers who may try to + inject their own code into the page and contrive to have it executed. The + security settings in a system may prevent various tricks used in user land + to write code into a page and to have it executed somehow. On such systems, + libffi trampolines would not be able to run. + + Static Trampoline + ================= + + To solve this problem, the trampoline code needs to be defined statically + in a source file, compiled and placed in the text segment so it can be + mapped and executed naturally without any tricks. However, the trampoline + needs to be able to access the closure pointer at runtime. + + PC-relative data referencing + ============================ + + The solution implemented in this patch set uses PC-relative data references. + The trampoline is mapped in a code page. Adjacent to the code page, a data + page is mapped that contains the parameters of the trampoline: + + - the closure pointer + - pointer to the ABI handler to jump to + + The trampoline code uses an offset relative to its current PC to access its + data. + + Some architectures support PC-relative data references in the ISA itself. + E.g., X64 supports RIP-relative references. For others, the PC has to + somehow be loaded into a general purpose register to do PC-relative data + referencing. To do this, we need to define a get_pc() kind of function and + call it to load the PC in a desired register. + + There are two cases: + + 1. The call instruction pushes the return address on the stack. + + In this case, get_pc() will extract the return address from the stack + and load it in the desired register and return. + + 2. The call instruction stores the return address in a designated register. + + In this case, get_pc() will copy the return address to the desired + register and return. + + Either way, the PC next to the call instruction is obtained. + + Scratch register + ================ + + In order to do its job, the trampoline code would need to use a scratch + register. Depending on the ABI, there may not be a register available for + scratch. This problem needs to be solved so that all ABIs will work. + + The trampoline will save two values on the stack: + + - the closure pointer + - the original value of the scratch register + + This is what the stack will look like: + + sp before trampoline ------> -------------------- + | closure pointer | + -------------------- + | scratch register | + sp after trampoline -------> -------------------- + + The ABI handler can do the following as needed by the ABI: + + - the closure pointer can be loaded in a desired register + + - the scratch register can be restored to its original value + + - the stack pointer can be restored to its original value + (the value when the trampoline was invoked) + + To do this, I have defined prolog code for each ABI handler. The legacy + trampoline jumps to the ABI handler directly. But the static trampoline + defined in this patch jumps tp the prolog code which performs the above + actions before jumping to the ABI handler. + + Trampoline Table + ================ + + In order to reduce the trampoline memory footprint, the trampoline code + would be defined as a code array in the text segment. This array would be + mapped into the address space of the caller. The mapping would, therefore, + contain a trampoline table. + + Adjacent to the trampoline table mapping, there will be a data mapping that + contains a parameter table, one parameter block for each trampoline. The + parameter block will contain: + + - a pointer to the closure + - a pointer to the ABI handler + + The static trampoline code would finally look like this: + + - Make space on the stack for the closure and the scratch register + by moving the stack pointer down + - Store the original value of the scratch register on the stack + - Using PC-relative reference, get the closure pointer + - Store the closure pointer on the stack + - Using PC-relative reference, get the ABI handler pointer + - Jump to the ABI handler + + Mapping size + ============ + + The size of the code mapping that contains the trampoline table needs to be + determined on a per architecture basis. If a particular architecture + supports multiple base page sizes, then the largest supported base page size + needs to be chosen. E.g., we choose 16K for ARM64. + + Trampoline allocation and free + ============================== + + Static trampolines are allocated in ffi_closure_alloc() and freed in + ffi_closure_free(). + + Normally, applications use these functions. But there are some cases out + there where the user of libffi allocates and manages its own closure + memory. In such cases, static trampolines cannot be used. These will + fall back to using legacy trampolines. The user has to make sure that + the memory is executable. + + ffi_closure structure + ===================== + + I did not want to make any changes to the size of the closure structure for + this feature to guarantee compatibility. But the opaque static trampoline + handle needs to be stored in the closure. I have defined it as follows: + + - char tramp[FFI_TRAMPOLINE_SIZE]; + + union { + + char tramp[FFI_TRAMPOLINE_SIZE]; + + void *ftramp; + + }; + + If static trampolines are used, then tramp[] is not needed to store a + dynamic trampoline. That space can be reused to store the handle. Hence, + the union. + + Architecture Support + ==================== + + Support has been added for x64, i386, aarch64 and arm. Support for other + architectures can be added very easily in the future. + + OS Support + ========== + + Support has been added for Linux. Support for other OSes can be added very + easily. + + Signed-off-by: Madhavan T. Venkataraman + + * x86: Support for Static Trampolines + + - Define the arch-specific initialization function ffi_tramp_arch () + that returns trampoline size information to common code. + + - Define the trampoline code mapping and data mapping sizes. + + - Define the trampoline code table statically. Define two tables, + actually, one with CET and one without. + + - Introduce a tiny prolog for each ABI handling function. The ABI + handlers addressed are: + + - ffi_closure_unix64 + - ffi_closure_unix64_sse + - ffi_closure_win64 + + The prolog functions are called: + + - ffi_closure_unix64_alt + - ffi_closure_unix64_sse_alt + - ffi_closure_win64_alt + + The legacy trampoline jumps to the ABI handler. The static + trampoline jumps to the prolog function. The prolog function uses + the information provided by the static trampoline, sets things up + for the ABI handler and then jumps to the ABI handler. + + - Call ffi_tramp_set_parms () in ffi_prep_closure_loc () to + initialize static trampoline parameters. + + Signed-off-by: Madhavan T. Venkataraman + + * i386: Support for Static Trampolines + + - Define the arch-specific initialization function ffi_tramp_arch () + that returns trampoline size information to common code. + + - Define the trampoline code table statically. Define two tables, + actually, one with CET and one without. + + - Define the trampoline code table statically. + + - Introduce a tiny prolog for each ABI handling function. The ABI + handlers addressed are: + + - ffi_closure_i386 + - ffi_closure_STDCALL + - ffi_closure_REGISTER + + The prolog functions are called: + + - ffi_closure_i386_alt + - ffi_closure_STDCALL_alt + - ffi_closure_REGISTER_alt + + The legacy trampoline jumps to the ABI handler. The static + trampoline jumps to the prolog function. The prolog function uses + the information provided by the static trampoline, sets things up + for the ABI handler and then jumps to the ABI handler. + + - Call ffi_tramp_set_parms () in ffi_prep_closure_loc () to + initialize static trampoline parameters. + + Signed-off-by: Madhavan T. Venkataraman + + * arm64: Support for Static Trampolines + + - Define the arch-specific initialization function ffi_tramp_arch () + that returns trampoline size information to common code. + + - Define the trampoline code mapping and data mapping sizes. + + - Define the trampoline code table statically. + + - Introduce a tiny prolog for each ABI handling function. The ABI + handlers addressed are: + + - ffi_closure_SYSV + - ffi_closure_SYSV_V + + The prolog functions are called: + + - ffi_closure_SYSV_alt + - ffi_closure_SYSV_V_alt + + The legacy trampoline jumps to the ABI handler. The static + trampoline jumps to the prolog function. The prolog function uses + the information provided by the static trampoline, sets things up + for the ABI handler and then jumps to the ABI handler. + + - Call ffi_tramp_set_parms () in ffi_prep_closure_loc () to + initialize static trampoline parameters. + + Signed-off-by: Madhavan T. Venkataraman + + * arm: Support for Static Trampolines + + - Define the arch-specific initialization function ffi_tramp_arch () + that returns trampoline size information to common code. + + - Define the trampoline code mapping and data mapping sizes. + + - Define the trampoline code table statically. + + - Introduce a tiny prolog for each ABI handling function. The ABI + handlers addressed are: + + - ffi_closure_SYSV + - ffi_closure_VFP + + The prolog functions are called: + + - ffi_closure_SYSV_alt + - ffi_closure_VFP_alt + + The legacy trampoline jumps to the ABI handler. The static + trampoline jumps to the prolog function. The prolog function uses + the information provided by the static trampoline, sets things up + for the ABI handler and then jumps to the ABI handler. + + - Call ffi_tramp_set_parms () in ffi_prep_closure_loc () to + initialize static trampoline parameters. + + Signed-off-by: Madhavan T. Venkataraman + +commit 5c63b463b87d3c06102a4a7f05f395929d9ea79b +Author: DJ Delorie +Date: Wed Dec 2 16:14:27 2020 -0500 + + Use memfd_create() (#604) + + memfd_create creates a file in a memory-only filesystem that may + bypass strict security protocols in filesystem-based temporary + files. + +commit cb8474368cdef3207638d047bd6c707ad8fcb339 +Author: hjl-tools +Date: Wed Dec 2 12:52:12 2020 -0800 + + libffi/x86: Always check __x86_64__ for x32 hosts (#601) (#602) + + Since for x86_64-*x32 and x86_64-x32-* hosts, -m32 generates ia32 codes. + We should always check __x86_64__ for x32 hosts. + +commit e70bf987daa7b7b5df2de7579d5c51a888e8bf7d +Author: Tres Finocchiaro +Date: Tue Nov 24 19:13:57 2020 -0500 + + Properly quote and resolve msvcc.sh params (#596) + +commit 8cc8f446f5aac13e107161dffbc15d1ee1a58878 +Author: Mike Hommey +Date: Tue Nov 10 20:41:33 2020 +0900 + + Allow to build with mingw-clang (#579) + + For some reason, compiling sysv.S with mingw-clang fails with: + ``` + error: invalid variant 'ffi_closure_inner@8' + ``` + + This can be fixed (worked around?) by quoting the symbol. This works + fine with mingw-gcc too. + +commit d817d0daa312c58548d7a081aa876027ca103766 +Author: Mike Hommey +Date: Tue Nov 10 20:39:25 2020 +0900 + + Don't use FFI_TYPE_LONGDOUBLE in the jump table in win64*.S (#580) + + It may have the same value as FFI_TYPE_DOUBLE per ffi.h, which + possibly can make things go wrong with .org/ORG. + + For instance, GCC complains about "Error: attempt to move .org + backwards" + +commit 56f7df711f70414d4f3663b34e54b122b38bab88 +Author: AndreRH +Date: Tue Nov 10 12:27:59 2020 +0100 + + aarch64: Allow FFI_WIN64 for winelib (#593) + +commit 8111cd06921e80d5d7192ce8d1f64733072fdbcd +Author: Brandon Bergren +Date: Tue Oct 27 09:07:38 2020 -0500 + + Add support for powerpc64le-*-freebsd*. (#581) + + Tests pass with no additional changes needed, tested on hardware. + +commit 484c1a0d7536be60002473f7bb82223efe139883 +Author: Ken <21211439+kencu@users.noreply.github.com> +Date: Tue Oct 27 07:07:07 2020 -0700 + + darwin powerpc: use go closures only if enabled (#583) + + SHA: 0ff9419f2e75652426469e256cb7d0748064ad58 added go closures for darwin powerpc AIX, but + these have not yet been implemented for non-AIX systems + + use the go closures only if enabled + +commit 032b3cd6f7850f3ebc1269eeab7d1db3ea518d29 +Author: Jeremy Huddleston Sequoia +Date: Tue Oct 27 07:06:21 2020 -0700 + + Support building x86 and arm64 without FFI_GO_CLOSURES (#586) + + * x86: Support building without FFI_GO_CLOSURES + + Signed-off-by: Jeremy Huddleston Sequoia + + * arm: Support building without FFI_GO_CLOSURES + + Signed-off-by: Jeremy Huddleston Sequoia + +commit 93cf288ddd59c7cb203c1aba25de5e5b8f308da6 +Author: Jeremy Huddleston Sequoia +Date: Tue Oct 27 07:05:28 2020 -0700 + + testsuite: Add a missing include of to fix build failure in test suite (#587) + + Signed-off-by: Jeremy Huddleston Sequoia + +commit c78fcf88ab13a5cc414826a018dd46c3f886adee +Author: petersn +Date: Tue Oct 27 07:02:36 2020 -0700 + + Removing unnecessary instruction from ffi_call_unix64 (#588) + + unix64.S's `ffi_call_unix64` looks like it used to take six parameters, + where the sixth said the number of SSE register arguments. However, + currently the function only takes five parameters, and the number of SSE + register arguments is encoded in the `struct register_args *` passed as + the first parameter to `ffi_call_unix64`. This change removes an + instruction that tries to use this missing sixth parameter as the number + of SSE arguments. + + This fix should not change any behavior, nor fix any bugs, because a few + instructions later the value moved from %r9d into %eax is overwritten by + the correct value anyway. This change merely makes the code a tad less + confusing, because currently the assembly moves from a register (r9) + whose value is never set. + +commit 2d86809db6d1d626a9df40c283ec564ac98ff85d +Author: jacobly0 +Date: Tue Oct 27 10:00:03 2020 -0400 + + Fix read-only .eh_frame section test when CFLAGS contains -flto. (#590) + +commit f4435980fa2da335fe388db431d4a7946a99a2b9 +Author: Alan Modra +Date: Tue Oct 27 23:36:21 2020 +1030 + + Power10 libffi fixes (#585) + + Power10 pc-relative code doesn't use or preserve r2 as a TOC pointer. + That means calling between pc-relative and TOC using code can't be + done without intervening linker stubs, and a call from TOC code to + pc-relative code must have a nop after the bl in order to restore r2. + + Now the PowerPC libffi assembly code doesn't use r2 except for the + implicit use when making calls back to C, ffi_closure_helper_LINUX64 + and ffi_prep_args64. So changing the assembly to interoperate with + pc-relative code without stubs is easily done. + + * src/powerpc/linux64.S (ffi_call_LINUX64): Don't emit global + entry when __PCREL__. Call using @notoc. Add nops. + * src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Likewise. + (ffi_go_closure_linux64): Likewise. + +commit 407394c0aac2db4a1978a7691035889db9924a01 +Author: Tim Gates +Date: Sun Oct 11 15:07:40 2020 +1100 + + docs: fix simple typo, paramters -> parameters (#589) + + There is a small typo in src/x86/ffi.c. + + Should read `parameters` rather than `paramters`. + +commit ead65ca8711aa07efc0453f67136aff82f33c01f +Author: Anthony Green +Date: Wed Aug 19 08:34:09 2020 -0400 + + Re-enable s390x testing + +commit 8276f812a99b10d1f2c387dbd6ef2ca4f597c733 +Author: Niclas Zeising +Date: Fri Aug 7 21:05:23 2020 +0200 + + Upstream local FreeBSD patches (#567) + + * Add support for FreeBSD mips + + Add support for FreeBSD mips, this has been a local patch in the FreeBSD + ports tree for quite some time. + + Originally submitted by sson, and committed by sbruno AT FreeBSD DOT org + See https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=191909 for + background details. + + Signed-off-by: Niclas Zeising + + * Add support for FreeBSD powerpcspe + + Add support for powerpcspe on FreeBSD + This has been in the FreeBSD ports tree for some time. + Originally submitted by jhibbits AT FreeBSD DOT org. + + Signed-off-by: Niclas Zeising + + * Fix abort() on FreeBSD arm related to __clear_cache() + + This patch has been in the FreeBSD ports tree for a number of years. + Original commit by koobs AT FreeBSD DOT org + + Original commit message: + > devel/libffi: Fix abort() on ARM related to __clear_cache() + > + > The current FreeBSD/ARM __clear_cache() implementation does nothing #if + > __i386__ || __x86_64__ #else abort(); + > + > cognet@ advises this is an issue for anything !Apple that is using the + > libcompiler_rt provided by Clang on ARM, and requires upstreaming. + + See https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=149167 for some + background details. + + Signed-off-by: Niclas Zeising + +commit 392afbaf60663e530bd740da0b5a39ee9f4ba052 +Author: Anthony Green +Date: Wed Aug 5 21:38:51 2020 -0400 + + Don't test s390. Travis-ci is broken. + +commit e08eb1ced18598a26cd7f14fea05693e89638ed2 +Author: Anthony Green +Date: Wed Aug 5 17:59:59 2020 -0400 + + Add support for eabisim back. This was removed upstream. + +commit 4661ba7928b49588aec9e6976673208c8cbf0295 +Merge: 45875da 1a4b786 +Author: Tom Tromey +Date: Tue Aug 4 11:08:19 2020 -0600 + + Merge pull request #576 from froydnj/config-updates + + update config.{guess,sub} + +commit 1a4b786df34b61af7b6738a2ce7b8d34f5377a71 +Author: Nathan Froyd +Date: Tue Aug 4 12:17:04 2020 -0400 + + update config.{guess,sub} + + This change is primarily for aarch64 macOS support, since that configuration + is now properly supported upstream. + +commit 45875da4bc71578f6f45471141c14e1743239b7e +Merge: fbd1de8 8e58f88 +Author: Tom Tromey +Date: Wed Jul 1 09:32:37 2020 -0600 + + Merge pull request #570 from jwilk-forks/spelling + + aarch64: Fix typo + +commit 8e58f88d33eb878b0fbca1433f83bbf872d5d0f3 +Author: Jakub Wilk +Date: Tue Jun 30 22:59:28 2020 +0200 + + aarch64: Fix typo + +commit fbd1de85f6532f8a8f61abbd7892f8cb58b233d0 +Author: Ma Jun +Date: Mon Jun 29 08:02:20 2020 -0400 + + Add support for csky + +commit 0027b072627aa9d3ada71c4374561966064ecd5a +Author: M. Herdiansyah +Date: Thu Jun 11 19:40:24 2020 +0700 + + Makefile: increase compatibility with bmake (#551) + +commit b7af8f47d5fff2957521dc269637c00b8a4b6c75 +Author: Andre Miras +Date: Thu Jun 11 14:38:59 2020 +0200 + + Fixes macOS build on Python 3 (#563) + + The error was: + ``` + Traceback (most recent call last): + File "_generate-darwin-source-and-headers.py", line 209, in + generate_source_and_headers(generate_osx=not args.only_ios, generate_ios=not args.only_osx) + File "_generate-darwin-source-and-headers.py", line 197, in generate_source_and_headers + for header_name, tag_tuples in platform_headers.iteritems(): + AttributeError: 'collections.defaultdict' object has no attribute 'iteritems' + ``` + +commit 5c45c40c04f89cf67ade3fdfa99915ca5409e51a +Author: Kentaro Hayashi +Date: Thu Jun 11 21:37:41 2020 +0900 + + Fix Free software foundation address (#564) + + ref. https://www.fsf.org/about/contact/ + +commit 2e90bb5577ea1fe3bc1716954e790999bc3549f7 +Author: Anthony Green +Date: Sun Jun 7 14:31:06 2020 -0400 + + Add gcc bug tests back + +commit 5e6ca054148dfb4d78e6f79457d48b745f919def +Author: Yann Sionneau +Date: Fri May 1 13:59:11 2020 +0200 + + Add support for Kalray KVX architecture (#559) + +commit 4f9e20ac51ce13d46fed3c869e1deb6d9bb89444 +Author: Andrew Geissler +Date: Fri May 1 06:58:30 2020 -0500 + + ffi_powerpc.h: fix build failure with powerpc7 (#561) + + This is a patch pulled down from the following: + https://github.com/buildroot/buildroot/blob/78926f610b1411b03464152472fd430012deb9ac/package/libffi/0004-ffi_powerpc.h-fix-build-failure-with-powerpc7.patch + + This issue is being hit on OpenBMC code when pulling the latest + libffi tag and building on a P8 ppc64le machine. I verified this + patch fixes the issue we are seeing. + + Below is the original commit message: + + Sicne commit 73dd43afc8a447ba98ea02e9aad4c6898dc77fb0, build on powerpc7 + fails on: + + In file included from ../src/powerpc/ffi.c:33:0: + ../src/powerpc/ffi_powerpc.h:61:9: error: '_Float128' is not supported on this target + typedef _Float128 float128; + ^~~~~~~~~ + + Fix this build failure by checking for __HAVE_FLOAT128 before using + _Float128, as _Float128 is enabled only on specific conditions, see + output/host/powerpc64-buildroot-linux-gnu/sysroot/usr/include/bits/floatn.h: + + /* Defined to 1 if the current compiler invocation provides a + floating-point type with the IEEE 754 binary128 format, and this glibc + includes corresponding *f128 interfaces for it. */ + #if defined _ARCH_PWR8 && defined __LITTLE_ENDIAN__ && (_CALL_ELF == 2) \ + && defined __FLOAT128__ && !defined __NO_LONG_DOUBLE_MATH + # define __HAVE_FLOAT128 1 + #else + # define __HAVE_FLOAT128 0 + #endif + + Fixes: + - http://autobuild.buildroot.org/results/5c9dd8fb3b6a128882b6250f197c80232d8a3b53 + + Signed-off-by: Fabrice Fontaine + Signed-off-by: Andrew Geissler + + Co-authored-by: Fabrice Fontaine + +commit 053b04c525a00abdc25ec646096a44208a1b9423 +Author: Martin Storsjö +Date: Sun Apr 26 05:02:14 2020 +0300 + + arm: Fix the clang specific version of the assembly (#556) + + Also fix the same error in the comment for the non-clang case. + That typo there seems to have existed since the code was written + in that form, in e7f15f60e86 - and when the clang specific codepath + was added in e3d2812ce43, the typo in the comment made it into the + actual code. + +commit c543849c3767cc0f0a84e3ed7b664a63724ed516 +Author: Martin Storsjö +Date: Sun Apr 26 05:01:03 2020 +0300 + + win64_armasm: Fix the spelling of ALIGN (#553) + +commit 15d3ea31a53bd0e5b828c90a9f7c4285c58f73e1 +Author: Martin Storsjö +Date: Sun Apr 26 04:59:35 2020 +0300 + + Use __builtin_ffs instead of ffs (#554) + + USE_BUILTIN_FFS is defined to 1 within __GNUC__, and the __builtin_ffs + function is available since GCC 3.x at least, while the ffs function + only exists on some OSes. + + This fixes compilation for non-x86 mingw platforms. For x86, + USE_BUILTIN_FFS is explicitly disabled for windows targets - but + if USE_BUILTIN_FFS is enabled based on __GNUC__, it should also use + the builtin which actually is available correspondingly, not dependent + on the target OS. + +commit c06468fa6674d3783a0edb1d0fae9afc8bc28513 +Author: Martin Storsjö +Date: Sun Apr 26 04:58:33 2020 +0300 + + Fix building for aarch64 windows with mingw toolchains (#555) + + * aarch64: Check _WIN32 instead of _M_ARM64 for detecting windows + + This fixes building for aarch64 with mingw toolchains. _M_ARM64 is + predefined by MSVC, while mingw compilers predefine __aarch64__. + + In aarch64 specific code, change checks for _M_ARM64 into checks for + _WIN32. + + In arch independent code, check for + (defined(_M_ARM64) || defined(__aarch64__)) && defined(_WIN32) + instead of just _M_ARM64. + + In src/closures.c, coalesce checks like + defined(X86_WIN32) || defined(X86_WIN64) || defined(_M_ARM64) + into plain defined(_WIN32). Technically, this enables code for + ARM32 windows where it wasn't, but as far as I can see it, those + codepaths should be fine for that architecture variant as well. + + * aarch64: Only use armasm source when building with MSVC + + When building for windows/arm64 with clang, the normal gas style .S + source works fine. sysv.S and win64_armasm.S seem to be functionally + equivalent, with only differences being due to assembler syntax. + +commit 8c50837f0b58ba5b2bcb1b424a2a4bfa01559fb2 +Author: Fangrui Song +Date: Tue Mar 10 04:36:09 2020 -0700 + + Improve read-write .eh_frame check (#546) + + llvm-objdump -h does not print BFD SEC_* constants like "READONLY", + so the check will consider .eh_frame writable. + clang 11 (since https://reviews.llvm.org/D73999) will error for mismatching section flags. + + Use readelf -S and check "WA" instead. + +commit 4a6414f2785a60f455c91fdd04f7745fe7fc11e0 +Author: Moxie Bot +Date: Mon Mar 9 21:10:53 2020 -0400 + + Mention ARM Pointer Authentication + +commit 909b37ffffe2a0bb08947b07508a3a4eed5f36a8 +Author: Moxie Bot +Date: Mon Mar 9 21:10:33 2020 -0400 + + Test on aarch64 Linux with clang + +commit 4c7bde32ea3af479babdf527d94f241282951cb9 +Author: Ole André Vadla Ravnås +Date: Tue Mar 10 02:05:42 2020 +0100 + + Port to iOS/arm64e (#548) + +commit 211e929df4388a6724b0dba4df4e3a1283dc49e9 +Author: Anthony Green +Date: Mon Mar 9 12:39:22 2020 -0400 + + Try to fix RLGL_KEY nonsense (#547) + + * Try to fix RLGL_KEY nonsense + + * Hard code policy bound API key + + Co-authored-by: Anthony Green + +commit 8eb2d2b05626b1cbbed100725bc440709499e8a6 +Author: Moxie Bot +Date: Mon Feb 24 10:29:20 2020 -0500 + + Revamp PA_LINUX and PA_HPUX target closures to use function descriptors. + + 2020-02-23 John David Anglin + + * include/ffi.h.in (FFI_CLOSURE_PTR, FFI_RESTORE_PTR): Define. + * src/closures.c (ffi_closure_alloc): Convert closure pointer + return by malloc to function pointer. + (ffi_closure_free): Convert function pointer back to malloc pointer. + * src/pa/ffi.c (ffi_closure_inner_pa32): Use union to double word + align return address on stack. Adjust statements referencing return + address. Convert closure argument from function pointer to standard + closure pointer. + (ffi_prep_closure_loc): Likewise convert closure argument back to + closure pointer. Remove assembler trampolines. Setup simulated + function descriptor as on ia64. + src/pa/ffitarget.h (FFI_TRAMPOLINE_SIZE): Reduce to 12. + src/pa/hpux32.S (ffi_closure_pa32): Retrieve closure pointer and real + gp from fake gp value in register %r19. + src/pa/linux.S (ffi_closure_pa32): Likewise. + +commit be815544c1588c6ca70120361c168b196376aa56 +Author: hjl-tools +Date: Sun Feb 23 07:45:42 2020 -0800 + + Update the ABI version to LIBFFI_BASE_8.0 (#544) + + Since x86 and x86-64 FFI_TRAMPOLINE_SIZE have been increased, we must + bump the ABI version. This fixes: + + https://github.com/libffi/libffi/issues/543 + +commit d9abffeabe4f38bac12b864146cf974ede814411 +Author: hjl-tools +Date: Sat Feb 22 06:32:22 2020 -0800 + + x86: Fix ffi_prep_closure_loc (#542) + + Since FFI_TRAMPOLINE_SIZE is increased by 4 bytes to add ENDBR32, adjust + jump displacement by 4 bytes. + +commit 624c7a35f7e1d12f917453d6c657cd5947ac57f7 +Merge: 4c775d7 7855656 +Author: Moxie Bot +Date: Fri Feb 21 22:13:14 2020 -0500 + + Merge branch 'master' of github.com:/libffi/libffi + +commit 4c775d7cd6e914c6a2f66465497106cff360aeb5 +Author: Moxie Bot +Date: Fri Feb 21 22:12:34 2020 -0500 + + Update for pending 3.4 release. + +commit 7855656148b96c7070ec362d2a73af840025a2b7 +Author: hjl-tools +Date: Fri Feb 21 19:08:06 2020 -0800 + + x86: Add indirect branch tracking support (#540) + + Intel Control-flow Enforcement Technology (CET): + + https://software.intel.com/en-us/articles/intel-sdm + + contains shadow stack (SHSTK) and indirect branch tracking (IBT). When + CET is enabled, ELF object files must be marked with .note.gnu.property + section. When Intel CET is enabled, include in assembly codes + to mark Intel CET support. + + Also when IBT is enabled, all indirect branch targets must start with + ENDBR instruction and notrack prefix can be used to disable IBT on + indirect branch. defines _CET_ENDBR which can be used in + assembly codes for ENDBR instruction. If isn't included, + define _CET_ENDBR as empty so that _CET_ENDBR can be used in assembly + codes. + + Trampoline must be enlarged to add ENDBR instruction unconditionally, + which is NOP on non-CET processors. This is required regardless if + libffi is enabled with CET since libffi.so will be marked in legacy + bitmap, but trampoline won't. Update library version for larger + FFI_TRAMPOLINE_SIZE. + + This fixed: + + https://github.com/libffi/libffi/issues/474 + + Tested with + + $ CC="gcc -Wl,-z,cet-report=error -fcf-protection" CXX="g++ -Wl,-z,cet-report=error -fcf-protection" .../configure + + on Linux CET machines in i686, x32 and x86-64 modes. + +commit 4d6d2866ae43e55325e8ee96561221804602cd7a +Author: Samuel Holland +Date: Fri Feb 21 21:06:15 2020 -0600 + + Update powerpc sysv assembly for ffi_powerpc.h changes (#541) + + Some of the flag bits were moved when adding powerpc64 vector support. + + Fixes #536 + +commit b844a9c7f1ca792a1dfb0c09d5dae576178e6729 +Author: Anthony Green +Date: Fri Jan 10 10:22:10 2020 -0500 + + Update copyright year. + +commit 81b5491a4ef46103f2e1be79d368e76dba021ffa +Author: Anthony Green +Date: Sun Jan 5 21:37:05 2020 -0500 + + Fix script + +commit 1e08a45535d929915e14e48af38e45f8c8e4f8de +Author: Anthony Green +Date: Sun Jan 5 21:18:23 2020 -0500 + + Use rlgl API key on login + +commit e50b9ef8b910fa642ef158f6642e60d54d7ad740 +Author: Khem Raj +Date: Sat Dec 7 02:34:14 2019 -0800 + + powerpc64: Use memcpy to help platforms with no __int128. (#534) + + Signed-off-by: Khem Raj + +commit f9da75e157ab089363d079a781644c3e6f7db2c3 +Author: Anthony Green +Date: Sat Nov 30 07:37:19 2019 -0500 + + Remove 32-bit x86 file references to fix macosx builds + +commit 76c0cfea70f78586231d7994492396eebfb12d5f +Author: Carl Hurd +Date: Fri Nov 29 14:46:11 2019 -0500 + + Fixed missed #ifndef for __mips_soft_float (#442) + + Thank you! + +commit 98da256096c63406ef77f92369ada622c50ce388 +Author: Anthony Green +Date: Fri Nov 29 14:29:51 2019 -0500 + + Clean up macosx builds + +commit 6663047f56c2932a6b10a790f4ac6666dd181326 +Author: Anthony Green +Date: Fri Nov 29 07:00:35 2019 -0500 + + Address platforms with no __int128. + +commit 0069526c5adea9e6268b8a0087a6120c9c5c89fa +Author: Anthony Green +Date: Thu Nov 28 18:58:40 2019 -0500 + + Make build errors easier to debug + +commit 43887a9108f10124d05c8e0e67f3942cd980cb86 +Author: Anthony Green +Date: Thu Nov 28 17:44:51 2019 -0500 + + Add powerpc-eabi + +commit 29297445da5c2c9437de0e20f3189799a27f0301 +Author: Anthony Green +Date: Thu Nov 28 17:31:44 2019 -0500 + + Test on powerpc-eabisim + +commit 01a75ed76ea7e57f1b7a5c183e2b1e890e6aa0fd +Author: Sergei Trofimovich +Date: Thu Nov 28 12:42:41 2019 +0000 + + powerpc: fix build failure on power7 and older (#532) + + Build failure looks as: + ``` + libtool: compile: powerpc-unknown-linux-gnu-gcc \ + -O2 -mcpu=powerpc -mtune=powerpc -pipe ... -c src/powerpc/ffi.c ... + In file included from src/powerpc/ffi.c:33: + src/powerpc/ffi_powerpc.h:65:9: error: '__int128' is not supported on this target + 65 | typedef __int128 float128; + | ^~~~~~~~ + ``` + + The fix avoids using __int128 in favour of aligned char[16]. + + Closes: https://github.com/libffi/libffi/issues/531 + Signed-off-by: Sergei Trofimovich + +commit 1ec01ea81cf18e12748082f48f7c279a3fdd505d +Author: Anthony Green +Date: Sun Nov 24 22:47:48 2019 -0500 + + Run aarch64-linux-gnu tests on travi-ci directly + +commit 66022e52ec0409f9170eb0884c6d0bdd048bc04e +Author: Anthony Green +Date: Sun Nov 24 16:52:14 2019 -0500 + + Fixes for ppc64le and s390x travis testing + +commit 932e5bb68a603885e4bd9cf1bd5146542f736ccf +Author: Anthony Green +Date: Sun Nov 24 16:26:14 2019 -0500 + + Force the use of docker + +commit 803db14c5a0aeb52ee521fe4fe4a7919926373de +Merge: 86be66c fb914c3 +Author: Anthony Green +Date: Sun Nov 24 16:10:22 2019 -0500 + + Merge branch 'master' of github.com:libffi/libffi + +commit 86be66c8f608a84caea2ef724698093d2da2e5e2 +Author: Anthony Green +Date: Sun Nov 24 16:09:44 2019 -0500 + + Try travis-ci's new ppc64le and s390x support + +commit fb914c366fabb29ac373050ca0bfa4d9c1fef149 +Author: Panayotis +Date: Sun Nov 24 18:25:13 2019 +0200 + + disable obsolete 32-bit targets in macOS (#511) + +commit fd99c95f90f85963f5ec88630c0428a8132012db +Author: Anthony Green +Date: Sun Nov 24 11:11:25 2019 -0500 + + Minor clean-up + commit 5dcb741f1544c5e18c9dbf96aeb8b61cc556a616 Author: Anthony Green Date: Sat Nov 23 10:24:58 2019 -0500 diff --git a/ChangeLog.old b/ChangeLog.old deleted file mode 100644 index 8de1ca7..0000000 --- a/ChangeLog.old +++ /dev/null @@ -1,7407 +0,0 @@ -Libffi change logs used to be maintained in separate ChangeLog files. -These days we generate them directly from the git commit messages. -The old ChangeLog files are saved here in order to maintain the historical -record. - -============================================================================= -From the old ChangeLog.libffi-3.1 file... - -2014-03-16 Josh Triplett - - * ChangeLog: Archive to ChangeLog.libffi-3.1 and delete. Future - changelogs will come from git, with autogenerated snapshots shipped in - distributed tarballs. - -2014-03-16 Josh Triplett - - Add support for stdcall, thiscall, and fastcall on non-Windows - x86-32. - - Linux supports the stdcall calling convention, either via - functions explicitly declared with the stdcall attribute, or via - code compiled with -mrtd which effectively makes stdcall the - default. - - This introduces FFI_STDCALL, FFI_THISCALL, and FFI_FASTCALL on - non-Windows x86-32 platforms, as non-default calling conventions. - - * Makefile.am: Compile in src/x86/win32.S on non-Windows x86-32. - * src/x86/ffitarget.h: Add FFI_STDCALL, FFI_THISCALL, and - FFI_FASTCALL on non-Windows x86-32. Increase trampoline size to - accomodate these calling conventions, and unify some ifdeffery. - * src/x86/ffi.c: Add support for FFI_STDCALL, FFI_THISCALL, and - FFI_FASTCALL on non-Windows x86-32 platforms; update ifdeffery. - * src/x86/win32.S: Support compiling on non-Windows x86-32 - platforms. On those platforms, avoid redefining the SYSV symbols - already provided by src/x86/sysv.S. - * testsuite/libffi.call/closure_stdcall.c: Run on non-Windows. - #define __stdcall if needed. - * testsuite/libffi.call/closure_thiscall.c: Run on non-Windows. - #define __fastcall if needed. - * testsuite/libffi.call/fastthis1_win32.c: Run on non-Windows. - * testsuite/libffi.call/fastthis2_win32.c: Ditto. - * testsuite/libffi.call/fastthis3_win32.c: Ditto. - * testsuite/libffi.call/many2_win32.c: Ditto. - * testsuite/libffi.call/many_win32.c: Ditto. - * testsuite/libffi.call/strlen2_win32.c: Ditto. - * testsuite/libffi.call/strlen_win32.c: Ditto. - * testsuite/libffi.call/struct1_win32.c: Ditto. - * testsuite/libffi.call/struct2_win32.c: Ditto. - -2014-03-16 Josh Triplett - - * prep_cif.c: Remove unnecessary ifdef for X86_WIN32. - ffi_prep_cif_core had a special case for X86_WIN32, checking for - FFI_THISCALL in addition to the FFI_FIRST_ABI-to-FFI_LAST_ABI - range before returning FFI_BAD_ABI. However, on X86_WIN32, - FFI_THISCALL already falls in that range, making the special case - unnecessary. Remove it. - -2014-03-16 Josh Triplett - - * testsuite/libffi.call/closure_stdcall.c, - testsuite/libffi.call/closure_thiscall.c: Remove fragile stack - pointer checks. These files included inline assembly to save the - stack pointer before and after the call, and compare the values. - However, compilers can and do leave the stack in different states - for these two pieces of inline assembly, such as by saving a - temporary value on the stack across the call; observed with gcc - -Os, and verified as spurious through careful inspection of - disassembly. - -2014-03-16 Josh Triplett - - * testsuite/libffi.call/many.c: Avoid spurious failure due to - excess floating-point precision. - * testsuite/libffi.call/many_win32.c: Ditto. - -2014-03-16 Josh Triplett - - * libtool-ldflags: Re-add. - -2014-03-16 Josh Triplett - - * Makefile.in, aclocal.m4, compile, config.guess, config.sub, - configure, depcomp, include/Makefile.in, install-sh, - libtool-ldflags, ltmain.sh, m4/libtool.m4, m4/ltoptions.m4, - m4/ltsugar.m4, m4/ltversion.m4, m4/lt~obsolete.m4, - man/Makefile.in, mdate-sh, missing, testsuite/Makefile.in: Delete - autogenerated files from version control. - * .gitignore: Add autogenerated files. - * autogen.sh: New script to generate the autogenerated files. - * README: Document requirement to run autogen.sh when building - directly from version control. - * .travis.yml: Run autogen.sh - -2014-03-14 Anthony Green - - * configure, Makefile.in: Rebuilt. - -2014-03-10 Mike Hommey - - * configure.ac: Allow building for mipsel with Android NDK r8. - * Makefile.am (AM_MAKEFLAGS): Replace double quotes with single - quotes. - -2014-03-10 Landry Breuil - - * configure.ac: Ensure the linker supports @unwind sections in libffi. - -2014-03-01 Anthony Green - - * Makefile.am (EXTRA_DIST): Replace old scripts with - generate-darwin-source-and-headers.py. - * Makefile.in: Rebuilt. - -2014-02-28 Anthony Green - - * Makefile.am (AM_CFLAGS): Reintroduce missing -DFFI_DEBUG for - --enable-debug builds. - * Makefile.in: Rebuilt. - -2014-02-28 Makoto Kato - - * src/closures.c: Fix build failure when using clang for Android. - -2014-02-28 Marcin Wojdyr - - * libffi.pc.in (toolexeclibdir): use -L${toolexeclibdir} instead - of -L${libdir}. - -2014-02-28 Paulo Pizarro - - * src/bfin/sysv.S: Calling functions in shared libraries requires - considering the GOT. - -2014-02-28 Josh Triplett - - * src/x86/ffi64.c (classify_argument): Handle case where - FFI_TYPE_LONGDOUBLE == FFI_TYPE_DOUBLE. - -2014-02-28 Anthony Green - - * ltmain.sh: Generate with libtool-2.4.2.418. - * m4/libtool.m4, m4/ltoptions.m4, m4/ltversion.m4: Ditto. - * configure: Rebuilt. - -2014-02-28 Dominik Vogt - - * configure.ac (AC_ARG_ENABLE struct): Fix typo in help - message. - (AC_ARG_ENABLE raw_api): Ditto. - * configure, fficonfig.h.in: Rebuilt. - -2014-02-28 Will Newton - - * src/arm/sysv.S: Initialize IP register with FP. - -2014-02-28 Yufeng Zhang - - * src/aarch64/sysv.S (ffi_closure_SYSV): Use x29 as the - main CFA reg; update cfi_rel_offset. - -2014-02-15 Marcus Comstedt - - * src/powerpc/ffi_linux64.c, src/powerpc/linux64_closure.S: Remove - assumption on contents of r11 in closure. - -2014-02-09 Heiher - - * src/mips/n32.S: Fix call floating point va function. - -2014-01-21 Zachary Waldowski - - * src/aarch64/ffi.c: Fix missing semicolons on assertions under - debug mode. - -2013-12-30 Zachary Waldowski - - * .gitignore: Exclude darwin_* generated source and build_* trees. - * src/aarch64/ffi.c, src/arm/ffi.c, src/x86/ffi.c: Inhibit Clang - previous prototype warnings. - * src/arm/ffi.c: Prevent NULL dereference, fix short type warning - * src/dlmalloc.c: Fix warnings from set_segment_flags return type, - and the native use of size_t for malloc on platforms - * src/arm/sysv.S: Use unified syntax. Clang clean-ups for - ARM_FUNC_START. - * generate-osx-source-and-headers.py: Remove. - * build-ios.sh: Remove. - * libffi.xcodeproj/project.pbxproj: Rebuild targets. Include - x86_64+aarch64 pieces in library. Export headers properly. - * src/x86/ffi64.c: More Clang warning clean-ups. - * src/closures.c (open_temp_exec_file_dir): Use size_t. - * src/prep_cif.c (ffi_prep_cif_core): Cast ALIGN result. - * src/aarch64/sysv.S: Use CNAME for global symbols. Only use - .size for ELF targets. - * src/aarch64/ffi.c: Clean up for double == long double. Clean up - from Clang warnings. Use Clang cache invalidation builtin. Use - size_t in place of unsigned in many places. Accommodate for - differences in Apple AArch64 ABI. - -2013-12-02 Daniel Rodríguez Troitiño - - * generate-darwin-source-and-headers.py: Clean up, modernize, - merged version of previous scripts. - -2013-11-21 Anthony Green - - * configure, Makefile.in, include/Makefile.in, include/ffi.h.in, - man/Makefile.in, testsuite/Makefile.in, fficonfig.h.in: Rebuilt. - -2013-11-21 Alan Modra - - * Makefile.am (EXTRA_DIST): Add new src/powerpc files. - (nodist_libffi_la_SOURCES ): Likewise. - * configure.ac (HAVE_LONG_DOUBLE_VARIANT): Define for powerpc. - * include/ffi.h.in (ffi_prep_types): Declare. - * src/prep_cif.c (ffi_prep_cif_core): Call ffi_prep_types. - * src/types.c (FFI_NONCONST_TYPEDEF): Define and use for - HAVE_LONG_DOUBLE_VARIANT. - * src/powerpc/ffi_powerpc.h: New file. - * src/powerpc/ffi.c: Split into.. - * src/powerpc/ffi_sysv.c: ..new file, and.. - * src/powerpc/ffi_linux64.c: ..new file, rewriting parts. - * src/powerpc/ffitarget.h (enum ffi_abi): Rewrite powerpc ABI - selection as bits controlling features. - * src/powerpc/linux64.S: For consistency, use POWERPC64 rather - than __powerpc64__. - * src/powerpc/linux64_closure.S: Likewise. - * src/powerpc/ppc_closure.S: Likewise. Move .note.FNU-stack - inside guard. - * src/powerpc/sysv.S: Likewise. - * configure: Regenerate. - * fficonfig.h.in: Regenerate. - * Makefile.in: Regenerate. - -2013-11-20 Alan Modra - - * src/powerpc/ffi.c (ffi_prep_cif_machdep_core): Use - NUM_FPR_ARG_REGISTERS64 and NUM_GPR_ARG_REGISTERS64 not their - 32-bit versions for 64-bit code. - * src/powerpc/linux64_closure.S: Don't use the return value area - as a parameter save area on ELFv2. - -2013-11-18 Iain Sandoe - - * src/powerpc/darwin.S (EH): Correct use of pcrel FDE encoding. - * src/powerpc/darwin_closure.S (EH): Likewise. Modernise picbase - labels. - -2013-11-18 Anthony Green - - * src/arm/ffi.c (ffi_call): Hoist declaration of temp to top of - function. - * src/arm/ffi.c (ffi_closure_inner): Moderize function declaration - to appease compiler. - Thanks for Gregory P. Smith . - -2013-11-18 Anthony Green - - * README (tested): Mention PowerPC ELFv2. - -2013-11-16 Alan Modra - - * src/powerpc/ppc_closure.S: Move errant #endif to where it belongs. - Don't bl .Luint128. - -2013-11-16 Alan Modra - - * src/powerpc/ffi.c (ffi_prep_cif_machdep_core): Use #if _CALL_ELF - test to select parameter save sizing for ELFv2 vs. ELFv1. - * src/powerpc/ffitarget.h (FFI_V2_TYPE_FLOAT_HOMOG, - FFI_V2_TYPE_DOUBLE_HOMOG, FFI_V2_TYPE_SMALL_STRUCT): Define. - (FFI_TRAMPOLINE_SIZE): Define variant for ELFv2. - * src/powerpc/ffi.c (FLAG_ARG_NEEDS_PSAVE): Define. - (discover_homogeneous_aggregate): New function. - (ffi_prep_args64): Adjust start of param save area for ELFv2. - Handle homogenous floating point struct parms. - (ffi_prep_cif_machdep_core): Adjust space calculation for ELFv2. - Handle ELFv2 return values. Set FLAG_ARG_NEEDS_PSAVE. Handle - homogenous floating point structs. - (ffi_call): Increase size of smst_buffer for ELFv2. Handle ELFv2. - (flush_icache): Compile for ELFv2. - (ffi_prep_closure_loc): Set up ELFv2 trampoline. - (ffi_closure_helper_LINUX64): Don't return all structs directly - to caller. Handle homogenous floating point structs. Handle - ELFv2 struct return values. - * src/powerpc/linux64.S (ffi_call_LINUX64): Set up r2 for - ELFv2. Adjust toc save location. Call function pointer using - r12. Handle FLAG_RETURNS_SMST. Don't predict branches. - * src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Set up r2 - for ELFv2. Define ELFv2 versions of STACKFRAME, PARMSAVE, and - RETVAL. Handle possibly missing parameter save area. Handle - ELFv2 return values. - (.note.GNU-stack): Move inside outer #ifdef. - -2013-11-16 Alan Modra - - * src/powerpc/ffi.c (ffi_prep_cif_machdep): Revert 2013-02-08 - change. Do not consume an int arg when returning a small struct - for FFI_SYSV ABI. - (ffi_call): Only use bounce buffer when FLAG_RETURNS_SMST. - Properly copy bounce buffer to destination. - * src/powerpc/sysv.S: Revert 2013-02-08 change. - * src/powerpc/ppc_closure.S: Remove stray '+'. - -2013-11-16 Alan Modra - - * src/powerpc/ffi.c (ffi_prep_args64): Align struct parameters - according to __STRUCT_PARM_ALIGN__. - (ffi_prep_cif_machdep_core): Likewise. - (ffi_closure_helper_LINUX64): Likewise. - -2013-11-16 Alan Modra - - * src/powerpc/linux64.S (ffi_call_LINUX64): Tweak restore of r28. - (.note.GNU-stack): Move inside outer #ifdef. - * src/powerpc/linux64_closure.S (STACKFRAME, PARMSAVE, - RETVAL): Define and use throughout. - (ffi_closure_LINUX64): Save fprs before buying stack. - (.note.GNU-stack): Move inside outer #ifdef. - -2013-11-16 Alan Modra - - * src/powerpc/ffitarget.h (FFI_TARGET_SPECIFIC_VARIADIC): Define. - (FFI_EXTRA_CIF_FIELDS): Define. - * src/powerpc/ffi.c (ffi_prep_args64): Save fprs as per the - ABI, not to both fpr and param save area. - (ffi_prep_cif_machdep_core): Renamed from ffi_prep_cif_machdep. - Keep initial flags. Formatting. Remove dead FFI_LINUX_SOFT_FLOAT - code. - (ffi_prep_cif_machdep, ffi_prep_cif_machdep_var): New functions. - (ffi_closure_helper_LINUX64): Pass floating point as per ABI, - not to both fpr and parameter save areas. - - * libffi/testsuite/libffi.call/cls_double_va.c (main): Correct - function cast and don't call ffi_prep_cif. - * libffi/testsuite/libffi.call/cls_longdouble_va.c (main): Likewise. - -2013-11-15 Andrew Haley - - * doc/libffi.texi (Closure Example): Fix the sample code. - * doc/libffi.info, doc/stamp-vti, doc/version.texi: Rebuilt. - -2013-11-15 Andrew Haley - - * testsuite/libffi.call/va_struct1.c (main): Fix broken test. - * testsuite/libffi.call/cls_uint_va.c (cls_ret_T_fn): Likewise - * testsuite/libffi.call/cls_struct_va1.c (test_fn): Likewise. - * testsuite/libffi.call/va_1.c (main): Likewise. - -2013-11-14 David Schneider - - * src/arm/ffi.c: Fix register allocation for mixed float and - doubles. - * testsuite/libffi.call/cls_many_mixed_float_double.c: Testcase - for many mixed float and double arguments. - -2013-11-13 Alan Modra - - * doc/libffi.texi (Simple Example): Correct example code. - * doc/libffi.info, doc/stamp-vti, doc/version.texi: Rebuilt. - -2013-11-13 Anthony Green - - * include/ffi_common.h: Respect HAVE_ALLOCA_H for GNU compiler - based build. (Thanks to tmr111116 on github) - -2013-11-09 Anthony Green - - * m4/libtool.m4: Refresh. - * configure, Makefile.in: Rebuilt. - * README: Add more notes about next release. - -2013-11-09 Shigeharu TAKENO - - * m4/ax_gcc_archflag.m4 (ax_gcc_arch): Don't recognize - UltraSPARC-IIi as ultrasparc3. - -2013-11-06 Mark Kettenis - - * src/x86/freebsd.S (ffi_call_SYSV): Align the stack pointer to - 16-bytes. - -2013-11-06 Konstantin Belousov - - * src/x86/freebsd.S (ffi_closure_raw_SYSV): Mark the assembler - source as not requiring executable stack. - -2013-11-02 Anthony Green - - * doc/libffi.texi (The Basics): Clarify return value buffer size - requirements. Also, NULL result buffer pointers are no longer - supported. - * doc/libffi.info: Rebuilt. - -2013-11-02 Mischa Jonker - - * Makefile.am (nodist_libffi_la_SOURCES): Fix build error. - * Makefile.in: Rebuilt. - -2013-11-02 David Schneider - - * src/arm/ffi.c: more robust argument handling for closures on arm hardfloat - * testsuite/libffi.call/many_mixed.c: New file. - * testsuite/libffi.call/cls_many_mixed_args.c: More tests. - -2013-11-02 Vitaly Budovski - - * src/x86/ffi.c (ffi_prep_cif_machdep): Don't align stack for win32. - -2013-10-23 Mark H Weaver - - * src/mips/ffi.c: Fix handling of uint32_t arguments on the - MIPS N32 ABI. - -2013-10-13 Sandra Loosemore - - * README: Add Nios II to table of supported platforms. - * Makefile.am (EXTRA_DIST): Add nios2 files. - (nodist_libffi_la_SOURCES): Likewise. - * Makefile.in: Regenerated. - * configure.ac (nios2*-linux*): New host. - (NIOS2): Add AM_CONDITIONAL. - * configure: Regenerated. - * src/nios2/ffi.c: New. - * src/nios2/ffitarget.h: New. - * src/nios2/sysv.S: New. - * src/prep_cif.c (initialize_aggregate): Handle extra structure - alignment via FFI_AGGREGATE_ALIGNMENT. - (ffi_prep_cif_core): Conditionalize structure return for NIOS2. - -2013-10-10 Sandra Loosemore - - * testsuite/libffi.call/cls_many_mixed_args.c (cls_ret_double_fn): - Fix uninitialized variable. - -2013-10-11 Marcus Shawcroft - - * testsuite/libffi.call/many.c (many): Replace * with +. - -2013-10-08 Ondřej Bílka - - * src/aarch64/ffi.c, src/aarch64/sysv.S, src/arm/ffi.c, - src/arm/gentramp.sh, src/bfin/sysv.S, src/closures.c, - src/dlmalloc.c, src/ia64/ffi.c, src/microblaze/ffi.c, - src/microblaze/sysv.S, src/powerpc/darwin_closure.S, - src/powerpc/ffi.c, src/powerpc/ffi_darwin.c, src/sh/ffi.c, - src/tile/tile.S, testsuite/libffi.call/nested_struct11.c: Fix - spelling errors. - -2013-10-08 Anthony Green - - * aclocal.m4, compile, config.guess, config.sub, depcomp, - install-sh, mdate-sh, missing, texinfo.tex: Update from upstream. - * configure.ac: Update version to 3.0.14-rc0. - * Makefile.in, configure, Makefile.in, include/Makefile.in, - man/Makefile.in, testsuite/Makefile.in: Rebuilt. - * README: Mention M88K and VAX. - -2013-07-15 Miod Vallat - - * Makefile.am, - configure.ac, - src/m88k/ffi.c, - src/m88k/ffitarget.h, - src/m88k/obsd.S, - src/vax/elfbsd.S, - src/vax/ffi.c, - src/vax/ffitarget.h: Add m88k and vax support. - -2013-06-24 Alan Modra - - * src/powerpc/ffi.c (ffi_prep_args_SYSV): Move var declaration - before statements. - (ffi_prep_args64): Support little-endian. - (ffi_closure_helper_SYSV, ffi_closure_helper_LINUX64): Likewise. - * src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Likewise. - * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Likewise. - -2013-06-12 Mischa Jonker - - * configure.ac: Add support for ARC. - * Makefile.am: Likewise. - * README: Add ARC details. - * src/arc/arcompact.S: New. - * src/arc/ffi.c: Likewise. - * src/arc/ffitarget.h: Likewise. - -2013-03-28 David Schneider - - * src/arm/ffi.c: Fix support for ARM hard-float calling convention. - * src/arm/sysv.S: call different methods for SYSV and VFP ABIs. - * testsuite/libffi.call/cls_many_mixed_args.c: testcase for a closure with - mixed arguments, many doubles. - * testsuite/libffi.call/many_double.c: testcase for calling a function using - more than 8 doubles. - * testcase/libffi.call/many.c: use absolute value to check result against an - epsilon - -2013-03-17 Anthony Green - - * README: Update for 3.0.13. - * configure.ac: Ditto. - * configure: Rebuilt. - * doc/*: Update version. - -2013-03-17 Dave Korn - - * src/closures.c (is_emutramp_enabled - [!FFI_MMAP_EXEC_EMUTRAMP_PAX]): Move default definition outside - enclosing #if scope. - -2013-03-17 Anthony Green - - * configure.ac: Only modify toolexecdir in certain cases. - * configure: Rebuilt. - -2013-03-16 Gilles Talis - - * src/powerpc/ffi.c (ffi_prep_args_SYSV): Don't use - fparg_count,etc on __NO_FPRS__ targets. - -2013-03-16 Alan Hourihane - - * src/m68k/sysv.S (epilogue): Don't use extb instruction on - m680000 machines. - -2013-03-16 Alex Gaynor - - * src/x86/ffi.c (ffi_prep_cif_machdep): Always align stack. - -2013-03-13 Markos Chandras - - * configure.ac: Add support for Imagination Technologies Meta. - * Makefile.am: Likewise. - * README: Add Imagination Technologies Meta details. - * src/metag/ffi.c: New. - * src/metag/ffitarget.h: Likewise. - * src/metag/sysv.S: Likewise. - -2013-02-24 Andreas Schwab - - * doc/libffi.texi (Structures): Fix missing category argument of - @deftp. - -2013-02-11 Anthony Green - - * configure.ac: Update release number to 3.0.12. - * configure: Rebuilt. - * README: Update release info. - -2013-02-10 Anthony Green - - * README: Add Moxie. - * src/moxie/ffi.c: Created. - * src/moxie/eabi.S: Created. - * src/moxie/ffitarget.h: Created. - * Makefile.am (nodist_libffi_la_SOURCES): Add Moxie. - * Makefile.in: Rebuilt. - * configure.ac: Add Moxie. - * configure: Rebuilt. - * testsuite/libffi.call/huge_struct.c: Disable format string - warnings for moxie*-*-elf tests. - -2013-02-10 Anthony Green - - * Makefile.am (LTLDFLAGS): Fix reference. - * Makefile.in: Rebuilt. - -2013-02-10 Anthony Green - - * README: Update supported platforms. Update test results link. - -2013-02-09 Anthony Green - - * testsuite/libffi.call/negint.c: Remove forced -O2. - * testsuite/libffi.call/many2.c (foo): Remove GCCism. - * testsuite/libffi.call/ffitest.h: Add default PRIuPTR definition. - - * src/sparc/v8.S (ffi_closure_v8): Import ancient ulonglong - closure return type fix developed by Martin v. Löwis for cpython - fork. - -2013-02-08 Andreas Tobler - - * src/powerpc/ffi.c (ffi_prep_cif_machdep): Fix small struct - support. - * src/powerpc/sysv.S: Ditto. - -2013-02-08 Anthony Green - - * testsuite/libffi.call/cls_longdouble.c: Remove xfail for - arm*-*-*. - -2013-02-08 Anthony Green - - * src/sparc/ffi.c (ffi_prep_closure_loc): Fix cache flushing for GCC. - -2013-02-08 Matthias Klose - - * man/ffi_prep_cif.3: Clean up for debian linter. - -2013-02-08 Peter Bergner - - * src/powerpc/ffi.c (ffi_prep_args_SYSV): Account for FP args pushed - on the stack. - -2013-02-08 Anthony Green - - * Makefile.am (EXTRA_DIST): Add missing files. - * testsuite/Makefile.am (EXTRA_DIST): Ditto. - * Makefile.in: Rebuilt. - -2013-02-08 Anthony Green - - * configure.ac: Move sparc asm config checks to within functions - for compatibility with sun tools. - * configure: Rebuilt. - * src/sparc/ffi.c (ffi_prep_closure_loc): Flush cache on v9 - systems. - * src/sparc/v8.S (ffi_flush_icache): Implement a sparc v9 cache - flusher. - -2013-02-08 Nathan Rossi - - * src/microblaze/ffi.c (ffi_closure_call_SYSV): Fix handling of - small big-endian structures. - (ffi_prep_args): Ditto. - -2013-02-07 Anthony Green - - * src/sparc/v8.S (ffi_call_v8): Fix typo from last patch - (effectively hiding ffi_call_v8). - -2013-02-07 Anthony Green - - * configure.ac: Update bug reporting address. - * configure.in: Rebuild. - - * src/sparc/v8.S (ffi_flush_icache): Out-of-line cache flusher for - Sun compiler. - * src/sparc/ffi.c (ffi_call): Remove warning. - Call ffi_flush_icache for non-GCC builds. - (ffi_prep_closure_loc): Use ffi_flush_icache. - - * Makefile.am (EXTRA_DIST): Add libtool-ldflags. - * Makefile.in: Rebuilt. - * libtool-ldflags: New file. - -2013-02-07 Daniel Schepler - - * configure.ac: Correctly identify x32 systems as 64-bit. - * m4/libtool.m4: Remove libtool expr error. - * aclocal.m4, configure: Rebuilt. - -2013-02-07 Anthony Green - - * configure.ac: Fix GCC usage test. - * configure: Rebuilt. - * README: Mention LLVM/GCC x86_64 issue. - * testsuite/Makefile.in: Rebuilt. - -2013-02-07 Anthony Green - - * testsuite/libffi.call/cls_double_va.c (main): Replace // style - comments with /* */ for xlc compiler. - * testsuite/libffi.call/stret_large.c (main): Ditto. - * testsuite/libffi.call/stret_large2.c (main): Ditto. - * testsuite/libffi.call/nested_struct1.c (main): Ditto. - * testsuite/libffi.call/huge_struct.c (main): Ditto. - * testsuite/libffi.call/float_va.c (main): Ditto. - * testsuite/libffi.call/cls_struct_va1.c (main): Ditto. - * testsuite/libffi.call/cls_pointer_stack.c (main): Ditto. - * testsuite/libffi.call/cls_pointer.c (main): Ditto. - * testsuite/libffi.call/cls_longdouble_va.c (main): Ditto. - -2013-02-06 Anthony Green - - * man/ffi_prep_cif.3: Clean up for debian lintian checker. - -2013-02-06 Anthony Green - - * Makefile.am (pkgconfigdir): Add missing pkgconfig install bits. - * Makefile.in: Rebuild. - -2013-02-02 Mark H Weaver - - * src/x86/ffi64.c (ffi_call): Sign-extend integer arguments passed - via general purpose registers. - -2013-01-21 Nathan Rossi - - * README: Add MicroBlaze details. - * Makefile.am: Add MicroBlaze support. - * configure.ac: Likewise. - * src/microblaze/ffi.c: New. - * src/microblaze/ffitarget.h: Likewise. - * src/microblaze/sysv.S: Likewise. - -2013-01-21 Nathan Rossi - * testsuite/libffi.call/return_uc.c: Fixed issue. - -2013-01-21 Chris Zankel - - * README: Add Xtensa support. - * Makefile.am: Likewise. - * configure.ac: Likewise. - * Makefile.in Regenerate. - * configure: Likewise. - * src/prep_cif.c: Handle Xtensa. - * src/xtensa: New directory. - * src/xtensa/ffi.c: New file. - * src/xtensa/ffitarget.h: Ditto. - * src/xtensa/sysv.S: Ditto. - -2013-01-11 Anthony Green - - * src/powerpc/ffi_darwin.c (ffi_prep_args): Replace // style - comments with /* */ for xlc compiler. - * src/powerpc/aix.S (ffi_call_AIX): Ditto. - * testsuite/libffi.call/ffitest.h (allocate_mmap): Delete - deprecated inline function. - * testsuite/libffi.special/ffitestcxx.h: Ditto. - * README: Add update for AIX support. - -2013-01-11 Anthony Green - - * configure.ac: Robustify pc relative reloc check. - * m4/ax_cc_maxopt.m4: Don't -malign-double. This is an ABI - changing option for 32-bit x86. - * aclocal.m4, configure: Rebuilt. - * README: Update supported target list. - -2013-01-10 Anthony Green - - * README (tested): Add Compiler column to table. - -2013-01-10 Anthony Green - - * src/x86/ffi64.c (struct register_args): Make sse array and array - of unions for sunpro compiler compatibility. - -2013-01-10 Anthony Green - - * configure.ac: Test target platform size_t size. Handle both 32 - and 64-bit builds for x86_64-* and i?86-* targets (allowing for - CFLAG option to change default settings). - * configure, aclocal.m4: Rebuilt. - -2013-01-10 Anthony Green - - * testsuite/libffi.special/special.exp: Only run exception - handling tests when using GNU compiler. - - * m4/ax_compiler_vendor.m4: New file. - * configure.ac: Test for compiler vendor and don't use - AX_CFLAGS_WARN_ALL with the sun compiler. - * aclocal.m4, configure: Rebuilt. - -2013-01-10 Anthony Green - - * include/ffi_common.h: Don't use GCCisms to define types when - building with the SUNPRO compiler. - -2013-01-10 Anthony Green - - * configure.ac: Put local.exp in the right place. - * configure: Rebuilt. - - * src/x86/ffi.c: Update comment about regparm function attributes. - * src/x86/sysv.S (ffi_closure_SYSV): The SUNPRO compiler requires - that all function arguments be passed on the stack (no regparm - support). - -2013-01-08 Anthony Green - - * configure.ac: Generate local.exp. This sets CC_FOR_TARGET - when we are using the vendor compiler. - * testsuite/Makefile.am (EXTRA_DEJAGNU_SITE_CONFIG): Point to - ../local.exp. - * configure, testsuite/Makefile.in: Rebuilt. - - * testsuite/libffi.call/call.exp: Run tests with different - options, depending on whether or not we are using gcc or the - vendor compiler. - * testsuite/lib/libffi.exp (libffi-init): Set using_gcc based on - whether or not we are building/testing with gcc. - -2013-01-08 Anthony Green - - * configure.ac: Switch x86 solaris target to X86 by default. - * configure: Rebuilt. - -2013-01-08 Anthony Green - - * configure.ac: Fix test for read-only eh_frame. - * configure: Rebuilt. - -2013-01-08 Anthony Green - - * src/x86/sysv.S, src/x86/unix64.S: Only emit DWARF unwind info - when building with the GNU toolchain. - * testsuite/libffi.call/ffitest.h (CHECK): Fix for Solaris vendor - compiler. - -2013-01-07 Thorsten Glaser - - * testsuite/libffi.call/cls_uchar_va.c, - testsuite/libffi.call/cls_ushort_va.c, - testsuite/libffi.call/va_1.c: Testsuite fixes. - -2013-01-07 Thorsten Glaser - - * src/m68k/ffi.c (CIF_FLAGS_SINT8, CIF_FLAGS_SINT16): Define. - (ffi_prep_cif_machdep): Fix 8-bit and 16-bit signed calls. - * src/m68k/sysv.S (ffi_call_SYSV, ffi_closure_SYSV): Ditto. - -2013-01-04 Anthony Green - - * Makefile.am (AM_CFLAGS): Don't automatically add -fexceptions - and -Wall. This is set in the configure script after testing for - GCC. - * Makefile.in: Rebuilt. - -2013-01-02 rofl0r - - * src/powerpc/ffi.c (ffi_prep_cif_machdep): Fix build error on ppc - when long double == double. - -2013-01-02 Reini Urban - - * Makefile.am (libffi_la_LDFLAGS): Add -no-undefined to LDFLAGS - (required for shared libs on cygwin/mingw). - * Makefile.in: Rebuilt. - -2012-10-31 Alan Modra - - * src/powerpc/linux64_closure.S: Add new ABI support. - * src/powerpc/linux64.S: Likewise. - -2012-10-30 Magnus Granberg - Pavel Labushev - - * configure.ac: New options pax_emutramp - * configure, fficonfig.h.in: Regenerated - * src/closures.c: New function emutramp_enabled_check() and - checks. - -2012-10-30 Frederick Cheung - - * configure.ac: Enable FFI_MAP_EXEC_WRIT for Darwin 12 (mountain - lion) and future version. - * configure: Rebuild. - -2012-10-30 James Greenhalgh - Marcus Shawcroft - - * README: Add details of aarch64 port. - * src/aarch64/ffi.c: New. - * src/aarch64/ffitarget.h: Likewise. - * src/aarch64/sysv.S: Likewise. - * Makefile.am: Support aarch64. - * configure.ac: Support aarch64. - * Makefile.in, configure: Rebuilt. - -2012-10-30 James Greenhalgh - Marcus Shawcroft - - * testsuite/lib/libffi.exp: Add support for aarch64. - * testsuite/libffi.call/cls_struct_va1.c: New. - * testsuite/libffi.call/cls_uchar_va.c: Likewise. - * testsuite/libffi.call/cls_uint_va.c: Likewise. - * testsuite/libffi.call/cls_ulong_va.c: Likewise. - * testsuite/libffi.call/cls_ushort_va.c: Likewise. - * testsuite/libffi.call/nested_struct11.c: Likewise. - * testsuite/libffi.call/uninitialized.c: Likewise. - * testsuite/libffi.call/va_1.c: Likewise. - * testsuite/libffi.call/va_struct1.c: Likewise. - * testsuite/libffi.call/va_struct2.c: Likewise. - * testsuite/libffi.call/va_struct3.c: Likewise. - -2012-10-12 Walter Lee - - * Makefile.am: Add TILE-Gx/TILEPro support. - * configure.ac: Likewise. - * Makefile.in: Regenerate. - * configure: Likewise. - * src/prep_cif.c (ffi_prep_cif_core): Handle TILE-Gx/TILEPro. - * src/tile: New directory. - * src/tile/ffi.c: New file. - * src/tile/ffitarget.h: Ditto. - * src/tile/tile.S: Ditto. - -2012-10-12 Matthias Klose - - * generate-osx-source-and-headers.py: Normalize whitespace. - -2012-09-14 David Edelsohn - - * configure: Regenerated. - -2012-08-26 Andrew Pinski - - PR libffi/53014 - * src/mips/ffi.c (ffi_prep_closure_loc): Allow n32 with soft-float and n64 with - soft-float. - -2012-08-08 Uros Bizjak - - * src/s390/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test, - just return FFI_BAD_ABI when things are wrong. - -2012-07-18 H.J. Lu - - PR libffi/53982 - PR libffi/53973 - * src/x86/ffitarget.h: Check __ILP32__ instead of __LP64__ for x32. - (FFI_SIZEOF_JAVA_RAW): Defined to 4 for x32. - -2012-05-16 H.J. Lu - - * configure: Regenerated. - -2012-05-05 Nicolas Lelong - - * libffi.xcodeproj/project.pbxproj: Fixes. - * README: Update for iOS builds. - -2012-04-23 Alexandre Keunecke I. de Mendonca - - * configure.ac: Add Blackfin/sysv support - * Makefile.am: Add Blackfin/sysv support - * src/bfin/ffi.c: Add Blackfin/sysv support - * src/bfin/ffitarget.h: Add Blackfin/sysv support - -2012-04-11 Anthony Green - - * Makefile.am (EXTRA_DIST): Add new script. - * Makefile.in: Rebuilt. - -2012-04-11 Zachary Waldowski - - * generate-ios-source-and-headers.py, - libffi.xcodeproj/project.pbxproj: Support a Mac static library via - Xcode. Set iOS compatibility to 4.0. Move iOS trampoline - generation into an Xcode "run script" phase. Include both as - Xcode build scripts. Don't always regenerate config files. - -2012-04-10 Anthony Green - - * src/powerpc/ffi_darwin.c (ffi_prep_args): Add missing semicolon. - -2012-04-06 Anthony Green - - * Makefile.am (EXTRA_DIST): Add new iOS/xcode files. - * Makefile.in: Rebuilt. - -2012-04-06 Mike Lewis - - * generate-ios-source-and-headers.py: New file. - * libffi.xcodeproj/project.pbxproj: New file. - * README: Update instructions on building iOS binary. - * build-ios.sh: Delete. - -2012-04-06 Anthony Green - - * src/x86/ffi64.c (UINT128): Define differently for Intel and GNU - compilers, then use it. - -2012-04-06 H.J. Lu - - * m4/libtool.m4 (_LT_ENABLE_LOCK): Support x32. - -2012-04-06 Anthony Green - - * testsuite/Makefile.am (EXTRA_DIST): Add missing test cases. - * testsuite/Makefile.in: Rebuilt. - -2012-04-05 Zachary Waldowski - - * include/ffi.h.in: Add missing trampoline table fields. - * src/arm/sysv.S: Fix ENTRY definition, and wrap symbol references - in CNAME. - * src/x86/ffi.c: Wrap Windows specific code in ifdefs. - -2012-04-02 Peter Bergner - - * src/powerpc/ffi.c (ffi_prep_args_SYSV): Declare double_tmp. - Silence casting pointer to integer of different size warning. - Delete goto to previously deleted label. - (ffi_call): Silence possibly undefined warning. - (ffi_closure_helper_SYSV): Declare variable type. - -2012-04-02 Peter Rosin - - * src/x86/win32.S (ffi_call_win32): Sign/zero extend the return - value in the Intel version as is already done for the AT&T version. - (ffi_closure_SYSV): Likewise. - (ffi_closure_raw_SYSV): Likewise. - (ffi_closure_STDCALL): Likewise. - -2012-03-29 Peter Rosin - - * src/x86/win32.S (ffi_closure_raw_THISCALL): Unify the frame - generation, fix the ENDP label and remove the surplus third arg - from the 'lea' insn. - -2012-03-29 Peter Rosin - - * src/x86/win32.S (ffi_closure_raw_SYSV): Make the 'stubraw' label - visible outside the PROC, so that ffi_closure_raw_THISCALL can see - it. Also instruct the assembler to add a frame to the function. - -2012-03-23 Peter Rosin - - * Makefile.am (AM_CPPFLAGS): Add -DFFI_BUILDING. - * Makefile.in: Rebuilt. - * include/ffi.h.in [MSVC]: Add __declspec(dllimport) decorations - to all data exports, when compiling libffi clients using MSVC. - -2012-03-29 Peter Rosin - - * src/x86/ffitarget.h (ffi_abi): Add new ABI FFI_MS_CDECL and - make it the default for MSVC. - (FFI_TYPE_MS_STRUCT): New structure return convention. - * src/x86/ffi.c (ffi_prep_cif_machdep): Tweak the structure - return convention for FFI_MS_CDECL to be FFI_TYPE_MS_STRUCT - instead of an ordinary FFI_TYPE_STRUCT. - (ffi_prep_args): Treat FFI_TYPE_MS_STRUCT as FFI_TYPE_STRUCT. - (ffi_call): Likewise. - (ffi_prep_incoming_args_SYSV): Likewise. - (ffi_raw_call): Likewise. - (ffi_prep_closure_loc): Treat FFI_MS_CDECL as FFI_SYSV. - * src/x86/win32.S (ffi_closure_SYSV): For FFI_TYPE_MS_STRUCT, - return a pointer to the result structure in eax and don't pop - that pointer from the stack, the caller takes care of it. - (ffi_call_win32): Treat FFI_TYPE_MS_STRUCT as FFI_TYPE_STRUCT. - (ffi_closure_raw_SYSV): Likewise. - -2012-03-22 Peter Rosin - - * testsuite/libffi.call/closure_stdcall.c [MSVC]: Add inline - assembly version with Intel syntax. - * testsuite/libffi.call/closure_thiscall.c [MSVC]: Likewise. - -2012-03-23 Peter Rosin - - * testsuite/libffi.call/ffitest.h: Provide abstration of - __attribute__((fastcall)) in the form of a __FASTCALL__ - define. Define it to __fastcall for MSVC. - * testsuite/libffi.call/fastthis1_win32.c: Use the above. - * testsuite/libffi.call/fastthis2_win32.c: Likewise. - * testsuite/libffi.call/fastthis3_win32.c: Likewise. - * testsuite/libffi.call/strlen2_win32.c: Likewise. - * testsuite/libffi.call/struct1_win32.c: Likewise. - * testsuite/libffi.call/struct2_win32.c: Likewise. - -2012-03-22 Peter Rosin - - * src/x86/win32.S [MSVC] (ffi_closure_THISCALL): Remove the manual - frame on function entry, MASM adds one automatically. - -2012-03-22 Peter Rosin - - * testsuite/libffi.call/ffitest.h [MSVC]: Add kludge for missing - bits in the MSVC headers. - -2012-03-22 Peter Rosin - - * testsuite/libffi.call/cls_12byte.c: Adjust to the C89 style - with no declarations after statements. - * testsuite/libffi.call/cls_16byte.c: Likewise. - * testsuite/libffi.call/cls_18byte.c: Likewise. - * testsuite/libffi.call/cls_19byte.c: Likewise. - * testsuite/libffi.call/cls_1_1byte.c: Likewise. - * testsuite/libffi.call/cls_20byte.c: Likewise. - * testsuite/libffi.call/cls_20byte1.c: Likewise. - * testsuite/libffi.call/cls_24byte.c: Likewise. - * testsuite/libffi.call/cls_2byte.c: Likewise. - * testsuite/libffi.call/cls_3_1byte.c: Likewise. - * testsuite/libffi.call/cls_3byte1.c: Likewise. - * testsuite/libffi.call/cls_3byte2.c: Likewise. - * testsuite/libffi.call/cls_4_1byte.c: Likewise. - * testsuite/libffi.call/cls_4byte.c: Likewise. - * testsuite/libffi.call/cls_5_1_byte.c: Likewise. - * testsuite/libffi.call/cls_5byte.c: Likewise. - * testsuite/libffi.call/cls_64byte.c: Likewise. - * testsuite/libffi.call/cls_6_1_byte.c: Likewise. - * testsuite/libffi.call/cls_6byte.c: Likewise. - * testsuite/libffi.call/cls_7_1_byte.c: Likewise. - * testsuite/libffi.call/cls_7byte.c: Likewise. - * testsuite/libffi.call/cls_8byte.c: Likewise. - * testsuite/libffi.call/cls_9byte1.c: Likewise. - * testsuite/libffi.call/cls_9byte2.c: Likewise. - * testsuite/libffi.call/cls_align_double.c: Likewise. - * testsuite/libffi.call/cls_align_float.c: Likewise. - * testsuite/libffi.call/cls_align_longdouble.c: Likewise. - * testsuite/libffi.call/cls_align_longdouble_split.c: Likewise. - * testsuite/libffi.call/cls_align_longdouble_split2.c: Likewise. - * testsuite/libffi.call/cls_align_pointer.c: Likewise. - * testsuite/libffi.call/cls_align_sint16.c: Likewise. - * testsuite/libffi.call/cls_align_sint32.c: Likewise. - * testsuite/libffi.call/cls_align_sint64.c: Likewise. - * testsuite/libffi.call/cls_align_uint16.c: Likewise. - * testsuite/libffi.call/cls_align_uint32.c: Likewise. - * testsuite/libffi.call/cls_align_uint64.c: Likewise. - * testsuite/libffi.call/cls_dbls_struct.c: Likewise. - * testsuite/libffi.call/cls_pointer_stack.c: Likewise. - * testsuite/libffi.call/err_bad_typedef.c: Likewise. - * testsuite/libffi.call/huge_struct.c: Likewise. - * testsuite/libffi.call/nested_struct.c: Likewise. - * testsuite/libffi.call/nested_struct1.c: Likewise. - * testsuite/libffi.call/nested_struct10.c: Likewise. - * testsuite/libffi.call/nested_struct2.c: Likewise. - * testsuite/libffi.call/nested_struct3.c: Likewise. - * testsuite/libffi.call/nested_struct4.c: Likewise. - * testsuite/libffi.call/nested_struct5.c: Likewise. - * testsuite/libffi.call/nested_struct6.c: Likewise. - * testsuite/libffi.call/nested_struct7.c: Likewise. - * testsuite/libffi.call/nested_struct8.c: Likewise. - * testsuite/libffi.call/nested_struct9.c: Likewise. - * testsuite/libffi.call/stret_large.c: Likewise. - * testsuite/libffi.call/stret_large2.c: Likewise. - * testsuite/libffi.call/stret_medium.c: Likewise. - * testsuite/libffi.call/stret_medium2.c: Likewise. - * testsuite/libffi.call/struct1.c: Likewise. - * testsuite/libffi.call/struct1_win32.c: Likewise. - * testsuite/libffi.call/struct2.c: Likewise. - * testsuite/libffi.call/struct2_win32.c: Likewise. - * testsuite/libffi.call/struct3.c: Likewise. - * testsuite/libffi.call/struct4.c: Likewise. - * testsuite/libffi.call/struct5.c: Likewise. - * testsuite/libffi.call/struct6.c: Likewise. - * testsuite/libffi.call/struct7.c: Likewise. - * testsuite/libffi.call/struct8.c: Likewise. - * testsuite/libffi.call/struct9.c: Likewise. - * testsuite/libffi.call/testclosure.c: Likewise. - -2012-03-21 Peter Rosin - - * testsuite/libffi.call/float_va.c (float_va_fn): Use %f when - printing doubles (%lf is for long doubles). - (main): Likewise. - -2012-03-21 Peter Rosin - - * testsuite/lib/target-libpath.exp [*-*-cygwin*, *-*-mingw*] - (set_ld_library_path_env_vars): Add the library search dir to PATH - (and save PATH for later). - (restore_ld_library_path_env_vars): Restore PATH. - -2012-03-21 Peter Rosin - - * testsuite/lib/target-libpath.exp [*-*-cygwin*, *-*-mingw*] - (set_ld_library_path_env_vars): Add the library search dir to PATH - (and save PATH for later). - (restore_ld_library_path_env_vars): Restore PATH. - -2012-03-20 Peter Rosin - - * testsuite/libffi.call/strlen2_win32.c (main): Remove bug. - * src/x86/win32.S [MSVC] (ffi_closure_SYSV): Make the 'stub' label - visible outside the PROC, so that ffi_closure_THISCALL can see it. - -2012-03-20 Peter Rosin - - * testsuite/libffi.call/strlen2_win32.c (main): Remove bug. - * src/x86/win32.S [MSVC] (ffi_closure_SYSV): Make the 'stub' label - visible outside the PROC, so that ffi_closure_THISCALL can see it. - -2012-03-19 Alan Hourihane - - * src/m68k/ffi.c: Add MINT support. - * src/m68k/sysv.S: Ditto. - -2012-03-06 Chung-Lin Tang - - * src/arm/ffi.c (ffi_call): Add __ARM_EABI__ guard around call to - ffi_call_VFP(). - (ffi_prep_closure_loc): Add __ARM_EABI__ guard around use of - ffi_closure_VFP. - * src/arm/sysv.S: Add __ARM_EABI__ guard around VFP code. - -2012-03-19 chennam - - * src/powerpc/ffi_darwin.c (ffi_prep_closure_loc): Fix AIX closure - support. - -2012-03-13 Kaz Kojima - - * src/sh/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test, - just return FFI_BAD_ABI when things are wrong. - * src/sh64/ffi.c (ffi_prep_closure_loc): Ditto. - -2012-03-09 David Edelsohn - - * src/powerpc/aix_closure.S (ffi_closure_ASM): Adjust for Darwin64 - change to return value of ffi_closure_helper_DARWIN and load type - from return type. - -2012-03-03 H.J. Lu - - * src/x86/ffi64.c (ffi_call): Cast the return value to unsigned - long. - (ffi_prep_closure_loc): Cast to 64bit address in trampoline. - (ffi_closure_unix64_inner): Cast return pointer to unsigned long - first. - - * src/x86/ffitarget.h (FFI_SIZEOF_ARG): Defined to 8 for x32. - (ffi_arg): Set to unsigned long long for x32. - (ffi_sarg): Set to long long for x32. - -2012-03-03 H.J. Lu - - * src/prep_cif.c (ffi_prep_cif_core): Properly check bad ABI. - -2012-03-03 Andoni Morales Alastruey - - * configure.ac: Add -no-undefined for both 32- and 64-bit x86 - windows-like hosts. - * configure: Rebuilt. - -2012-02-27 Mikael Pettersson - - PR libffi/52223 - * Makefile.am (FLAGS_TO_PASS): Define. - * Makefile.in: Regenerate. - -2012-02-23 Anthony Green - - * src/*/ffitarget.h: Ensure that users never include ffitarget.h - directly. - -2012-02-23 Kai Tietz - - PR libffi/52221 - * src/x86/ffi.c (ffi_closure_raw_THISCALL): New - prototype. - (ffi_prep_raw_closure_loc): Use ffi_closure_raw_THISCALL for - thiscall-convention. - (ffi_raw_call): Use ffi_prep_args_raw. - * src/x86/win32.S (ffi_closure_raw_THISCALL): Add - implementation for stub. - -2012-02-10 Kai Tietz - - * configure.ac (AM_LTLDFLAGS): Add -no-undefine for x64 - windows target. - * configure: Regenerated. - -2012-02-08 Kai Tietz - - * src/prep_cif.c (ffi_prep_cif): Allow for X86_WIN32 - also FFI_THISCALL. - * src/x86/ffi.c (ffi_closure_THISCALL): Add prototype. - (FFI_INIT_TRAMPOLINE_THISCALL): New trampoline code. - (ffi_prep_closure_loc): Add FFI_THISCALL support. - * src/x86/ffitarget.h (FFI_TRAMPOLINE_SIZE): Adjust size. - * src/x86/win32.S (ffi_closure_THISCALL): New closure code - for thiscall-calling convention. - * testsuite/libffi.call/closure_thiscall.c: New test. - -2012-01-28 Kai Tietz - - * src/libffi/src/x86/ffi.c (ffi_call_win32): Add new - argument to prototype for specify calling-convention. - (ffi_call): Add support for stdcall/thiscall convention. - (ffi_prep_args): Likewise. - (ffi_raw_call): Likewise. - * src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and - FFI_FASTCALL. - * src/x86/win32.S (_ffi_call_win32): Add support for - fastcall/thiscall calling-convention calls. - * testsuite/libffi.call/fastthis1_win32.c: New test. - * testsuite/libffi.call/fastthis2_win32.c: New test. - * testsuite/libffi.call/fastthis3_win32.c: New test. - * testsuite/libffi.call/strlen2_win32.c: New test. - * testsuite/libffi.call/many2_win32.c: New test. - * testsuite/libffi.call/struct1_win32.c: New test. - * testsuite/libffi.call/struct2_win32.c: New test. - -2012-01-23 Uros Bizjak - - * src/alpha/ffi.c (ffi_prep_closure_loc): Check for bad ABI. - -2012-01-23 Anthony Green - Chris Young - - * configure.ac: Add Amiga support. - * configure: Rebuilt. - -2012-01-23 Dmitry Nadezhin - - * include/ffi_common.h (LIKELY, UNLIKELY): Fix definitions. - -2012-01-23 Andreas Schwab - - * src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain - mc68000. Test for __HAVE_68881__ in addition to __MC68881__. - -2012-01-19 Jakub Jelinek - - PR rtl-optimization/48496 - * src/ia64/ffi.c (ffi_call): Fix up aliasing violations. - -2012-01-09 Rainer Orth - - * configure.ac (i?86-*-*): Set TARGET to X86_64. - * configure: Regenerate. - -2011-12-07 Andrew Pinski - - PR libffi/50051 - * src/mips/n32.S: Add ".set mips4". - -2011-11-21 Andreas Tobler - - * configure: Regenerate. - -2011-11-12 David Gilbert - - * doc/libffi.texi, include/ffi.h.in, include/ffi_common.h, - man/Makefile.am, man/ffi.3, man/ffi_prep_cif.3, - man/ffi_prep_cif_var.3, src/arm/ffi.c, src/arm/ffitarget.h, - src/cris/ffi.c, src/prep_cif.c, - testsuite/libffi.call/cls_double_va.c, - testsuite/libffi.call/cls_longdouble_va.c, - testsuite/libffi.call/float_va.c: Many changes to support variadic - function calls. - -2011-11-12 Kyle Moffett - - * src/powerpc/ffi.c, src/powerpc/ffitarget.h, - src/powerpc/ppc_closure.S, src/powerpc/sysv.S: Many changes for - softfloat powerpc variants. - -2011-11-12 Petr Salinger - - * configure.ac (FFI_EXEC_TRAMPOLINE_TABLE): Fix kfreebsd support. - * configure: Rebuilt. - -2011-11-12 Timothy Wall - - * src/arm/ffi.c (ffi_prep_args, ffi_prep_incoming_args_SYSV): Max - alignment of 4 for wince on ARM. - -2011-11-12 Kyle Moffett - Anthony Green - - * src/ppc/sysv.S, src/ppc/ffi.c: Remove use of ppc string - instructions (not available on some cores, like the PPC440). - -2011-11-12 Kimura Wataru - - * m4/ax_enable_builddir: Change from string comparison to numeric - comparison for wc output. - * configure.ac: Enable FFI_MMAP_EXEC_WRIT for darwin11 aka Mac OS - X 10.7. - * configure: Rebuilt. - -2011-11-12 Anthony Green - - * Makefile.am (AM_CCASFLAGS): Add -g option to build assembly - files with debug info. - * Makefile.in: Rebuilt. - -2011-11-12 Jasper Lievisse Adriaanse - - * README: Update list of supported OpenBSD systems. - -2011-11-12 Anthony Green - - * libtool-version: Update. - * Makefile.am (nodist_libffi_la_SOURCES): Add src/debug.c if - FFI_DEBUG. - (libffi_la_SOURCES): Remove src/debug.c - (EXTRA_DIST): Add src/debug.c - * Makefile.in: Rebuilt. - * README: Update for 3.0.11. - -2011-11-10 Richard Henderson - - * configure.ac (GCC_AS_CFI_PSEUDO_OP): Use it instead of inline check. - * configure, aclocal.m4: Rebuild. - -2011-09-04 Iain Sandoe - - PR libffi/49594 - * src/powerpc/darwin_closure.S (stubs): Make the stub binding - helper reference track the architecture pointer size. - -2011-08-25 Andrew Haley - - * src/arm/ffi.c (FFI_INIT_TRAMPOLINE): Remove hard-coded assembly - instructions. - * src/arm/sysv.S (ffi_arm_trampoline): Put them here instead. - -2011-07-11 Andrew Haley - - * src/arm/ffi.c (FFI_INIT_TRAMPOLINE): Clear icache. - -2011-06-29 Rainer Orth - - * testsuite/libffi.call/cls_double_va.c: Move PR number to comment. - * testsuite/libffi.call/cls_longdouble_va.c: Likewise. - -2011-06-29 Rainer Orth - - PR libffi/46660 - * testsuite/libffi.call/cls_double_va.c: xfail dg-output on - mips-sgi-irix6*. - * testsuite/libffi.call/cls_longdouble_va.c: Likewise. - -2011-06-14 Rainer Orth - - * testsuite/libffi.call/huge_struct.c (test_large_fn): Use PRIu8, - PRId8 instead of %hhu, %hhd. - * testsuite/libffi.call/ffitest.h [__alpha__ && __osf__] (PRId8, - PRIu8): Define. - [__sgi__] (PRId8, PRIu8): Define. - -2011-04-29 Rainer Orth - - * src/alpha/osf.S (UA_SI, FDE_ENCODING, FDE_ENCODE, FDE_ARANGE): - Define. - Use them to handle ELF vs. ECOFF differences. - [__osf__] (_GLOBAL__F_ffi_call_osf): Define. - -2011-03-30 Timothy Wall - - * src/powerpc/darwin.S: Fix unknown FDE encoding. - * src/powerpc/darwin_closure.S: ditto. - -2011-02-25 Anthony Green - - * src/powerpc/ffi.c (ffi_prep_closure_loc): Allow for more - 32-bit ABIs. - -2011-02-15 Anthony Green - - * m4/ax_cc_maxopt.m4: Don't -malign-double or use -ffast-math. - * configure: Rebuilt. - -2011-02-13 Ralf Wildenhues - - * configure: Regenerate. - -2011-02-13 Anthony Green - - * include/ffi_common.h (UNLIKELY, LIKELY): Define. - * src/x86/ffi64.c (UNLIKELY, LIKELY): Remove definition. - * src/prep_cif.c (UNLIKELY, LIKELY): Remove definition. - - * src/prep_cif.c (initialize_aggregate): Convert assertion into - FFI_BAD_TYPEDEF return. Initialize arg size and alignment to 0. - - * src/pa/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test, - just return FFI_BAD_ABI when things are wrong. - * src/arm/ffi.c (ffi_prep_closure_loc): Ditto. - * src/powerpc/ffi.c (ffi_prep_closure_loc): Ditto. - * src/mips/ffi.c (ffi_prep_closure_loc): Ditto. - * src/ia64/ffi.c (ffi_prep_closure_loc): Ditto. - * src/avr32/ffi.c (ffi_prep_closure_loc): Ditto. - -2011-02-11 Anthony Green - - * src/sparc/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test, - just return FFI_BAD_ABI when things are wrong. - -2012-02-11 Eric Botcazou - - * src/sparc/v9.S (STACKFRAME): Bump to 176. - -2011-02-09 Stuart Shelton - - http://bugs.gentoo.org/show_bug.cgi?id=286911 - * src/mips/ffitarget.h: Clean up error messages. - * src/java_raw_api.c (ffi_java_translate_args): Cast raw arg to - ffi_raw*. - * include/ffi.h.in: Add pragma for SGI compiler. - -2011-02-09 Anthony Green - - * configure.ac: Add powerpc64-*-darwin* support. - -2011-02-09 Anthony Green - - * README: Mention Interix. - -2011-02-09 Jonathan Callen - - * configure.ac: Add Interix to win32/cygwin/mingw case. - * configure: Ditto. - * src/closures.c: Treat Interix like Cygwin, instead of as a - generic win32. - -2011-02-09 Anthony Green - - * testsuite/libffi.call/err_bad_typedef.c: Remove xfail. - * testsuite/libffi.call/err_bad_abi.c: Remove xfail. - * src/x86/ffi64.c (UNLIKELY, LIKELY): Define. - (ffi_prep_closure_loc): Check for bad ABI. - * src/prep_cif.c (UNLIKELY, LIKELY): Define. - (initialize_aggregate): Check for bad types. - -2011-02-09 Landon Fuller - - * Makefile.am (EXTRA_DIST): Add build-ios.sh, src/arm/gentramp.sh, - src/arm/trampoline.S. - (nodist_libffi_la_SOURCES): Add src/arc/trampoline.S. - * configure.ac (FFI_EXEC_TRAMPOLINE_TABLE): Define. - * src/arm/ffi.c (ffi_trampoline_table) - (ffi_closure_trampoline_table_page, ffi_trampoline_table_entry) - (FFI_TRAMPOLINE_CODELOC_CONFIG, FFI_TRAMPOLINE_CONFIG_PAGE_OFFSET) - (FFI_TRAMPOLINE_COUNT, ffi_trampoline_lock, ffi_trampoline_tables) - (ffi_trampoline_table_alloc, ffi_closure_alloc, ffi_closure_free): - Define for FFI_EXEC_TRAMPOLINE_TABLE case (iOS). - (ffi_prep_closure_loc): Handl FFI_EXEC_TRAMPOLINE_TABLE case - separately. - * src/arm/sysv.S: Handle Apple iOS host. - * src/closures.c: Handle FFI_EXEC_TRAMPOLINE_TABLE case. - * build-ios.sh: New file. - * fficonfig.h.in, configure, Makefile.in: Rebuilt. - * README: Mention ARM iOS. - -2011-02-08 Oren Held - - * src/dlmalloc.c (_STRUCT_MALLINFO): Define in order to avoid - redefinition of mallinfo on HP-UX. - -2011-02-08 Ginn Chen - - * src/sparc/ffi.c (ffi_call): Make compatible with Solaris Studio - aggregate return ABI. Flush cache. - (ffi_prep_closure_loc): Flush cache. - -2011-02-11 Anthony Green - - From Tom Honermann : - * src/powerpc/aix.S (ffi_call_AIX): Support for xlc toolchain on - AIX. Declare .ffi_prep_args. Insert nops after branch - instructions so that the AIX linker can insert TOC reload - instructions. - * src/powerpc/aix_closure.S: Declare .ffi_closure_helper_DARWIN. - -2011-02-08 Ed - - * src/powerpc/asm.h: Fix grammar nit in comment. - -2011-02-08 Uli Link - - * include/ffi.h.in (FFI_64_BIT_MAX): Define and use. - -2011-02-09 Rainer Orth - - PR libffi/46661 - * testsuite/libffi.call/cls_pointer.c (main): Cast void * to - uintptr_t first. - * testsuite/libffi.call/cls_pointer_stack.c (main): Likewise. - -2011-02-08 Rafael Avila de Espindola - - * configure.ac: Fix x86 test for pc related relocs. - * configure: Rebuilt. - -2011-02-07 Joel Sherrill - - * libffi/src/m68k/ffi.c: Add RTEMS support for cache flushing. - Handle case when CPU variant does not have long double support. - * libffi/src/m68k/sysv.S: Add support for mc68000, Coldfire, - and cores with soft floating point. - -2011-02-07 Joel Sherrill - - * configure.ac: Add mips*-*-rtems* support. - * configure: Regenerate. - * src/mips/ffitarget.h: Ensure needed constants are available - for targets which do not have sgidefs.h. - -2011-01-26 Dave Korn - - PR target/40125 - * configure.ac (AM_LTLDFLAGS): Add -bindir option for windows DLLs. - * configure: Regenerate. - -2010-12-18 Iain Sandoe - - PR libffi/29152 - PR libffi/42378 - * src/powerpc/darwin_closure.S: Provide Darwin64 implementation, - update comments. - * src/powerpc/ffitarget.h (POWERPC_DARWIN64): New, - (FFI_TRAMPOLINE_SIZE): Update for Darwin64. - * src/powerpc/darwin.S: Provide Darwin64 implementation, - update comments. - * src/powerpc/ffi_darwin.c: Likewise. - -2010-12-06 Rainer Orth - - * configure.ac (libffi_cv_as_ascii_pseudo_op): Use double - backslashes. - (libffi_cv_as_string_pseudo_op): Likewise. - * configure: Regenerate. - -2010-12-03 Chung-Lin Tang - - * src/arm/sysv.S (ffi_closure_SYSV): Add UNWIND to .pad directive. - (ffi_closure_VFP): Same. - (ffi_call_VFP): Move down to before ffi_closure_VFP. Add '.fpu vfp' - directive. - -2010-12-01 Rainer Orth - - * testsuite/libffi.call/ffitest.h [__sgi] (PRId64, PRIu64): Define. - (PRIuPTR): Define. - -2010-11-29 Richard Henderson - Rainer Orth - - * src/x86/sysv.S (FDE_ENCODING, FDE_ENCODE): Define. - (.eh_frame): Use FDE_ENCODING. - (.LASFDE1, .LASFDE2, LASFDE3): Simplify with FDE_ENCODE. - -2010-11-22 Jacek Caban - - * configure.ac: Check for symbol underscores on mingw-w64. - * configure: Rebuilt. - * src/x86/win64.S: Correctly access extern symbols in respect to - underscores. - -2010-11-15 Rainer Orth - - * testsuite/lib/libffi-dg.exp: Rename ... - * testsuite/lib/libffi.exp: ... to this. - * libffi/testsuite/libffi.call/call.exp: Don't load libffi-dg.exp. - * libffi/testsuite/libffi.special/special.exp: Likewise. - -2010-10-28 Chung-Lin Tang - - * src/arm/ffi.c (ffi_prep_args): Add VFP register argument handling - code, new parameter, and return value. Update comments. - (ffi_prep_cif_machdep): Add case for VFP struct return values. Add - call to layout_vfp_args(). - (ffi_call_SYSV): Update declaration. - (ffi_call_VFP): New declaration. - (ffi_call): Add VFP struct return conditions. Call ffi_call_VFP() - when ABI is FFI_VFP. - (ffi_closure_VFP): New declaration. - (ffi_closure_SYSV_inner): Add new vfp_args parameter, update call to - ffi_prep_incoming_args_SYSV(). - (ffi_prep_incoming_args_SYSV): Update parameters. Add VFP argument - case handling. - (ffi_prep_closure_loc): Pass ffi_closure_VFP to trampoline - construction under VFP hard-float. - (rec_vfp_type_p): New function. - (vfp_type_p): Same. - (place_vfp_arg): Same. - (layout_vfp_args): Same. - * src/arm/ffitarget.h (ffi_abi): Add FFI_VFP. Define FFI_DEFAULT_ABI - based on __ARM_PCS_VFP. - (FFI_EXTRA_CIF_FIELDS): Define for adding VFP hard-float specific - fields. - (FFI_TYPE_STRUCT_VFP_FLOAT): Define internally used type code. - (FFI_TYPE_STRUCT_VFP_DOUBLE): Same. - * src/arm/sysv.S (ffi_call_SYSV): Change call of ffi_prep_args() to - direct call. Move function pointer load upwards. - (ffi_call_VFP): New function. - (ffi_closure_VFP): Same. - - * testsuite/lib/libffi-dg.exp (check-flags): New function. - (dg-skip-if): New function. - * testsuite/libffi.call/cls_double_va.c: Skip if target is arm*-*-* - and compiler options include -mfloat-abi=hard. - * testsuite/libffi.call/cls_longdouble_va.c: Same. - -2010-10-01 Jakub Jelinek - - PR libffi/45677 - * src/x86/ffi64.c (ffi_prep_cif_machdep): Ensure cif->bytes is - a multiple of 8. - * testsuite/libffi.call/many2.c: New test. - -2010-08-20 Mark Wielaard - - * src/closures.c (open_temp_exec_file_mnt): Check if getmntent_r - returns NULL. - -2010-08-09 Andreas Tobler - - * configure.ac: Add target powerpc64-*-freebsd*. - * configure: Regenerate. - * testsuite/libffi.call/cls_align_longdouble_split.c: Pass - -mlong-double-128 only to linux targets. - * testsuite/libffi.call/cls_align_longdouble_split2.c: Likewise. - * testsuite/libffi.call/cls_longdouble.c: Likewise. - * testsuite/libffi.call/huge_struct.c: Likewise. - -2010-08-05 Dan Witte - - * Makefile.am: Pass FFI_DEBUG define to msvcc.sh for linking to the - debug CRT when --enable-debug is given. - * configure.ac: Define it. - * msvcc.sh: Translate -g and -DFFI_DEBUG appropriately. - -2010-08-04 Dan Witte - - * src/x86/ffitarget.h: Add X86_ANY define for all x86/x86_64 - platforms. - * src/x86/ffi.c: Remove redundant ifdef checks. - * src/prep_cif.c: Push stack space computation into src/x86/ffi.c - for X86_ANY so return value space doesn't get added twice. - -2010-08-03 Neil Rashbrooke - - * msvcc.sh: Don't pass -safeseh to ml64 because behavior is buggy. - -2010-07-22 Dan Witte - - * src/*/ffitarget.h: Make FFI_LAST_ABI one past the last valid ABI. - * src/prep_cif.c: Fix ABI assertion. - * src/cris/ffi.c: Ditto. - -2010-07-10 Evan Phoenix - - * src/closures.c (selinux_enabled_check): Fix strncmp usage bug. - -2010-07-07 Dan Horák - - * include/ffi.h.in: Protect #define with #ifndef. - * src/powerpc/ffitarget.h: Ditto. - * src/s390/ffitarget.h: Ditto. - * src/sparc/ffitarget.h: Ditto. - -2010-07-07 Neil Roberts - - * src/x86/sysv.S (ffi_call_SYSV): Align the stack pointer to - 16-bytes. - -2010-07-02 Jakub Jelinek - - * Makefile.am (AM_MAKEFLAGS): Pass also mandir to submakes. - * Makefile.in: Regenerated. - -2010-05-19 Rainer Orth - - * configure.ac (libffi_cv_as_x86_pcrel): Check for illegal in as - output, too. - (libffi_cv_as_ascii_pseudo_op): Check for .ascii. - (libffi_cv_as_string_pseudo_op): Check for .string. - * configure: Regenerate. - * fficonfig.h.in: Regenerate. - * src/x86/sysv.S (.eh_frame): Use .ascii, .string or error. - -2010-05-11 Dan Witte - - * doc/libffi.tex: Document previous change. - -2010-05-11 Makoto Kato - - * src/x86/ffi.c (ffi_call): Don't copy structs passed by value. - -2010-05-05 Michael Kohler - - * src/dlmalloc.c (dlfree): Fix spelling. - * src/ia64/ffi.c (ffi_prep_cif_machdep): Ditto. - * configure.ac: Ditto. - * configure: Rebuilt. - -2010-04-13 Dan Witte - - * msvcc.sh: Build with -W3 instead of -Wall. - * src/powerpc/ffi_darwin.c: Remove build warnings. - * src/x86/ffi.c: Ditto. - * src/x86/ffitarget.h: Ditto. - -2010-04-12 Dan Witte - Walter Meinl - - * configure.ac: Add OS/2 support. - * configure: Rebuilt. - * src/closures.c: Ditto. - * src/dlmalloc.c: Ditto. - * src/x86/win32.S: Ditto. - -2010-04-07 Jakub Jelinek - - * testsuite/libffi.call/err_bad_abi.c: Remove unused args variable. - -2010-04-02 Ralf Wildenhues - - * Makefile.in: Regenerate. - * aclocal.m4: Regenerate. - * include/Makefile.in: Regenerate. - * man/Makefile.in: Regenerate. - * testsuite/Makefile.in: Regenerate. - -2010-03-30 Dan Witte - - * msvcc.sh: Disable build warnings. - * README (tested): Clarify windows build procedure. - -2010-03-15 Rainer Orth - - * configure.ac (libffi_cv_as_x86_64_unwind_section_type): New test. - * configure: Regenerate. - * fficonfig.h.in: Regenerate. - * libffi/src/x86/unix64.S (.eh_frame) - [HAVE_AS_X86_64_UNWIND_SECTION_TYPE]: Use @unwind section type. - -2010-03-14 Matthias Klose - - * src/x86/ffi64.c: Fix typo in comment. - * src/x86/ffi.c: Use /* ... */ comment style. - -2010-02-24 Rainer Orth - - * doc/libffi.texi (The Closure API): Fix typo. - * doc/libffi.info: Remove. - -2010-02-15 Matthias Klose - - * src/arm/sysv.S (__ARM_ARCH__): Define for processor - __ARM_ARCH_7EM__. - -2010-01-15 Anthony Green - - * README: Add notes on building with Microsoft Visual C++. - -2010-01-15 Daniel Witte - - * msvcc.sh: New file. - - * src/x86/win32.S: Port assembly routines to MSVC and #ifdef. - * src/x86/ffi.c: Tweak function declaration and remove excess - parens. - * include/ffi.h.in: Add __declspec(align(8)) to typedef struct - ffi_closure. - - * src/x86/ffi.c: Merge ffi_call_SYSV and ffi_call_STDCALL into new - function ffi_call_win32 on X86_WIN32. - * src/x86/win32.S (ffi_call_SYSV): Rename to ffi_call_win32. - (ffi_call_STDCALL): Remove. - - * src/prep_cif.c (ffi_prep_cif): Move stack space allocation code - to ffi_prep_cif_machdep for x86. - * src/x86/ffi.c (ffi_prep_cif_machdep): To here. - -2010-01-15 Oliver Kiddle - - * src/x86/ffitarget.h (ffi_abi): Check for __i386 and __amd64 for - Sun Studio compiler compatibility. - -2010-01-12 Conrad Irwin - - * doc/libffi.texi: Add closure example. - -2010-01-07 Rainer Orth - - PR libffi/40701 - * testsuite/libffi.call/ffitest.h [__alpha__ && __osf__] (PRIdLL, - PRIuLL, PRId64, PRIu64, PRIuPTR): Define. - * testsuite/libffi.call/cls_align_sint64.c: Add -Wno-format on - alpha*-dec-osf*. - * testsuite/libffi.call/cls_align_uint64.c: Likewise. - * testsuite/libffi.call/cls_ulonglong.c: Likewise. - * testsuite/libffi.call/return_ll1.c: Likewise. - * testsuite/libffi.call/stret_medium2.c: Likewise. - * testsuite/libffi.special/ffitestcxx.h (allocate_mmap): Cast - MAP_FAILED to char *. - -2010-01-06 Rainer Orth - - * src/mips/n32.S: Use .abicalls and .eh_frame with __GNUC__. - -2009-12-31 Anthony Green - - * README: Update for libffi 3.0.9. - -2009-12-27 Matthias Klose - - * configure.ac (HAVE_LONG_DOUBLE): Define for mips when - appropriate. - * configure: Rebuilt. - -2009-12-26 Anthony Green - - * testsuite/libffi.call/cls_longdouble_va.c: Mark as xfail for - avr32*-*-*. - * testsuite/libffi.call/cls_double_va.c: Ditto. - -2009-12-26 Andreas Tobler - - * testsuite/libffi.call/ffitest.h: Conditionally include stdint.h - and inttypes.h. - * testsuite/libffi.special/unwindtest.cc: Ditto. - -2009-12-26 Andreas Tobler - - * configure.ac: Add amd64-*-openbsd*. - * configure: Rebuilt. - * testsuite/lib/libffi-dg.exp (libffi_target_compile): Link - openbsd programs with -lpthread. - -2009-12-26 Anthony Green - - * testsuite/libffi.call/cls_double_va.c, - testsuite/libffi.call/cls_longdouble.c, - testsuite/libffi.call/cls_longdouble_va.c, - testsuite/libffi.call/cls_pointer.c, - testsuite/libffi.call/cls_pointer_stack.c: Remove xfail for - mips*-*-* and arm*-*-*. - * testsuite/libffi.call/cls_align_longdouble_split.c, - testsuite/libffi.call/cls_align_longdouble_split2.c, - testsuite/libffi.call/stret_medium2.c, - testsuite/libffi.call/stret_medium.c, - testsuite/libffi.call/stret_large.c, - testsuite/libffi.call/stret_large2.c: Remove xfail for arm*-*-*. - -2009-12-31 Kay Tietz - - * testsuite/libffi.call/ffitest.h, - testsuite/libffi.special/ffitestcxx.h (PRIdLL, PRuLL): Fix - definitions. - -2009-12-31 Carlo Bramini - - * configure.ac (AM_LTLDFLAGS): Define for windows hosts. - * Makefile.am (libffi_la_LDFLAGS): Add AM_LTLDFLAGS. - * configure: Rebuilt. - * Makefile.in: Rebuilt. - -2009-12-31 Anthony Green - Blake Chaffin. - - * testsuite/libffi.call/huge_struct.c: New test case from Blake - Chaffin @ Apple. - -2009-12-28 David Edelsohn - - * src/powerpc/ffi_darwin.c (ffi_prep_args): Copy abi and nargs to - local variables. - (aix_adjust_aggregate_sizes): New function. - (ffi_prep_cif_machdep): Call it. - -2009-12-26 Andreas Tobler - - * configure.ac: Define FFI_MMAP_EXEC_WRIT for the given targets. - * configure: Regenerate. - * fficonfig.h.in: Likewise. - * src/closures.c: Remove the FFI_MMAP_EXEC_WRIT definition for - Solaris/x86. - -2009-12-26 Andreas Schwab - - * src/powerpc/ffi.c (ffi_prep_args_SYSV): Advance intarg_count - when a float arguments is passed in memory. - (ffi_closure_helper_SYSV): Mark general registers as used up when - a 64bit or soft-float long double argument is passed in memory. - -2009-12-25 Matthias Klose - - * man/ffi_call.3: Fix #include in examples. - * doc/libffi.texi: Add dircategory. - -2009-12-25 Frank Everdij - - * include/ffi.h.in: Placed '__GNUC__' ifdef around - '__attribute__((aligned(8)))' in ffi_closure, fixes compile for - IRIX MIPSPro c99. - * include/ffi_common.h: Added '__sgi' define to non - '__attribute__((__mode__()))' integer typedefs. - * src/mips/ffi.c (ffi_call, ffi_closure_mips_inner_O32, - ffi_closure_mips_inner_N32): Added 'defined(_MIPSEB)' to BE check. - (ffi_closure_mips_inner_O32, ffi_closure_mips_inner_N32): Added - FFI_LONGDOUBLE support and alignment(N32 only). - * src/mips/ffitarget.h: Corrected '#include ' for IRIX and - fixed non '__attribute__((__mode__()))' integer typedefs. - * src/mips/n32.S: Put '#ifdef linux' around '.abicalls' and '.eh_frame' - since they are Linux/GNU Assembler specific. - -2009-12-25 Bradley Smith - - * configure.ac, Makefile.am, src/avr32/ffi.c, - src/avr32/ffitarget.h, - src/avr32/sysv.S: Add AVR32 port. - * configure, Makefile.in: Rebuilt. - -2009-12-21 Andreas Tobler - - * configure.ac: Make i?86 build on FreeBSD and OpenBSD. - * configure: Regenerate. - -2009-12-15 John David Anglin - - * testsuite/libffi.call/ffitest.h: Define PRIuPTR on PA HP-UX. - -2009-12-13 John David Anglin - - * src/pa/ffi.c (ffi_closure_inner_pa32): Handle FFI_TYPE_LONGDOUBLE - type on HP-UX. - -2012-02-13 Kai Tietz - - PR libffi/52221 - * src/x86/ffi.c (ffi_prep_raw_closure_loc): Add thiscall - support for X86_WIN32. - (FFI_INIT_TRAMPOLINE_THISCALL): Fix displacement. - -2009-12-11 Eric Botcazou - - * src/sparc/ffi.c (ffi_closure_sparc_inner_v9): Properly align 'long - double' arguments. - -2009-12-11 Eric Botcazou - - * testsuite/libffi.call/ffitest.h: Define PRIuPTR on Solaris < 10. - -2009-12-10 Rainer Orth - - PR libffi/40700 - * src/closures.c [X86_64 && __sun__ && __svr4__] - (FFI_MMAP_EXEC_WRIT): Define. - -2009-12-08 David Daney - - * testsuite/libffi.call/stret_medium.c: Remove xfail for mips*-*-* - * testsuite/libffi.call/cls_align_longdouble_split2.c: Same. - * testsuite/libffi.call/stret_large.c: Same. - * testsuite/libffi.call/cls_align_longdouble_split.c: Same. - * testsuite/libffi.call/stret_large2.c: Same. - * testsuite/libffi.call/stret_medium2.c: Same. - -2009-12-07 David Edelsohn - - * src/powerpc/aix_closure.S (libffi_closure_ASM): Fix tablejump - typo. - -2009-12-05 David Edelsohn - - * src/powerpc/aix.S: Update AIX32 code to be consistent with AIX64 - code. - * src/powerpc/aix_closure.S: Same. - -2009-12-05 Ralf Wildenhues - - * Makefile.in: Regenerate. - * configure: Regenerate. - * include/Makefile.in: Regenerate. - * man/Makefile.in: Regenerate. - * testsuite/Makefile.in: Regenerate. - -2009-12-04 David Edelsohn - - * src/powerpc/aix_closure.S: Reorganize 64-bit code to match - linux64_closure.S. - -2009-12-04 Uros Bizjak - - PR libffi/41908 - * src/x86/ffi64.c (classify_argument): Update from - gcc/config/i386/i386.c. - (ffi_closure_unix64_inner): Do not use the address of two consecutive - SSE registers directly. - * testsuite/libffi.call/cls_dbls_struct.c (main): Remove xfail - for x86_64 linux targets. - -2009-12-04 David Edelsohn - - * src/powerpc/ffi_darwin.c (ffi_closure_helper_DARWIN): Increment - pfr for long double split between fpr13 and stack. - -2009-12-03 David Edelsohn - - * src/powerpc/ffi_darwin.c (ffi_prep_args): Increment next_arg and - fparg_count twice for long double. - -2009-12-03 David Edelsohn - - PR libffi/42243 - * src/powerpc/ffi_darwin.c (ffi_prep_args): Remove extra parentheses. - -2009-12-03 Uros Bizjak - - * testsuite/libffi.call/cls_longdouble_va.c (main): Fix format string. - Remove xfails for x86 linux targets. - -2009-12-02 David Edelsohn - - * src/powerpc/ffi_darwin.c (ffi_prep_args): Fix typo in INT64 - case. - -2009-12-01 David Edelsohn - - * src/powerpc/aix.S (ffi_call_AIX): Convert to more standard - register usage. Call ffi_prep_args directly. Add long double - return value support. - * src/powerpc/ffi_darwin.c (ffi_prep_args): Double arg increment - applies to FFI_TYPE_DOUBLE. Correct fpr_base increment typo. - Separate FFI_TYPE_SINT32 and FFI_TYPE_UINT32 cases. - (ffi_prep_cif_machdep): Only 16 byte stack alignment in 64 bit - mode. - (ffi_closure_helper_DARWIN): Remove nf and ng counters. Move temp - into case. - * src/powerpc/aix_closure.S: Maintain 16 byte stack alignment. - Allocate result area between params and FPRs. - -2009-11-30 David Edelsohn - - PR target/35484 - * src/powerpc/ffitarget.h (POWERPC64): Define for PPC64 Linux and - AIX64. - * src/powerpc/aix.S: Implement AIX64 version. - * src/powerpc/aix_closure.S: Implement AIX64 version. - (ffi_closure_ASM): Use extsb, lha and displament addresses. - * src/powerpc/ffi_darwin.c (ffi_prep_args): Implement AIX64 - support. - (ffi_prep_cif_machdep): Same. - (ffi_call): Same. - (ffi_closure_helper_DARWIN): Same. - -2009-11-02 Andreas Tobler - - PR libffi/41908 - * testsuite/libffi.call/testclosure.c: New test. - -2009-09-28 Kai Tietz - - * src/x86/win64.S (_ffi_call_win64 stack): Remove for gnu - assembly version use of ___chkstk. - -2009-09-23 Matthias Klose - - PR libffi/40242, PR libffi/41443 - * src/arm/sysv.S (__ARM_ARCH__): Define for processors - __ARM_ARCH_6T2__, __ARM_ARCH_6M__, __ARM_ARCH_7__, - __ARM_ARCH_7A__, __ARM_ARCH_7R__, __ARM_ARCH_7M__. - Change the conditionals to __SOFTFP__ || __ARM_EABI__ - for -mfloat-abi=softfp to work. - -2009-09-17 Loren J. Rittle - - PR testsuite/32843 (strikes again) - * src/x86/ffi.c (ffi_prep_cif_machdep): Add X86_FREEBSD to - enable proper extension on char and short. - -2009-09-15 David Daney - - * src/java_raw_api.c (ffi_java_raw_to_rvalue): Remove special - handling for FFI_TYPE_POINTER. - * src/mips/ffitarget.h (FFI_TYPE_STRUCT_D_SOFT, - FFI_TYPE_STRUCT_F_SOFT, FFI_TYPE_STRUCT_DD_SOFT, - FFI_TYPE_STRUCT_FF_SOFT, FFI_TYPE_STRUCT_FD_SOFT, - FFI_TYPE_STRUCT_DF_SOFT, FFI_TYPE_STRUCT_SOFT): New defines. - (FFI_N32_SOFT_FLOAT, FFI_N64_SOFT_FLOAT): New ffi_abi enumerations. - (enum ffi_abi): Set FFI_DEFAULT_ABI for soft-float. - * src/mips/n32.S (ffi_call_N32): Add handling for soft-float - structure and pointer returns. - (ffi_closure_N32): Add handling for pointer returns. - * src/mips/ffi.c (ffi_prep_args, calc_n32_struct_flags, - calc_n32_return_struct_flags): Handle soft-float. - (ffi_prep_cif_machdep): Handle soft-float, fix pointer handling. - (ffi_call_N32): Declare proper argument types. - (ffi_call, copy_struct_N32, ffi_closure_mips_inner_N32): Handle - soft-float. - -2009-08-24 Ralf Wildenhues - - * configure.ac (AC_PREREQ): Bump to 2.64. - -2009-08-22 Ralf Wildenhues - - * Makefile.am (install-html, install-pdf): Remove. - * Makefile.in: Regenerate. - - * Makefile.in: Regenerate. - * aclocal.m4: Regenerate. - * configure: Regenerate. - * fficonfig.h.in: Regenerate. - * include/Makefile.in: Regenerate. - * man/Makefile.in: Regenerate. - * testsuite/Makefile.in: Regenerate. - -2011-08-22 Jasper Lievisse Adriaanse - - * configure.ac: Add OpenBSD/hppa and OpenBSD/powerpc support. - * configure: Rebuilt. - -2009-07-30 Ralf Wildenhues - - * configure.ac (_AC_ARG_VAR_PRECIOUS): Use m4_rename_force. - -2009-07-24 Dave Korn - - PR libffi/40807 - * src/x86/ffi.c (ffi_prep_cif_machdep): Also use sign/zero-extending - return types for X86_WIN32. - * src/x86/win32.S (_ffi_call_SYSV): Handle omitted return types. - (_ffi_call_STDCALL, _ffi_closure_SYSV, _ffi_closure_raw_SYSV, - _ffi_closure_STDCALL): Likewise. - - * src/closures.c (is_selinux_enabled): Define to const 0 for Cygwin. - (dlmmap, dlmunmap): Also use these functions on Cygwin. - -2009-07-11 Richard Sandiford - - PR testsuite/40699 - PR testsuite/40707 - PR testsuite/40709 - * testsuite/lib/libffi-dg.exp: Revert 2009-07-02, 2009-07-01 and - 2009-06-30 commits. - -2009-07-01 Richard Sandiford - - * testsuite/lib/libffi-dg.exp (libffi-init): Set ld_library_path - to "" before adding paths. (This reinstates an assignment that - was removed by my 2009-06-30 commit, but changes the initial - value from "." to "".) - -2009-07-01 H.J. Lu - - PR testsuite/40601 - * testsuite/lib/libffi-dg.exp (libffi-init): Properly set - gccdir. Adjust ld_library_path for gcc only if gccdir isn't - empty. - -2009-06-30 Richard Sandiford - - * testsuite/lib/libffi-dg.exp (libffi-init): Don't add "." - to ld_library_path. Use add_path. Add just find_libgcc_s - to ld_library_path, not every libgcc multilib directory. - -2009-06-16 Wim Lewis - - * src/powerpc/ffi.c: Avoid clobbering cr3 and cr4, which are - supposed to be callee-saved. - * src/powerpc/sysv.S (small_struct_return_value): Fix overrun of - return buffer for odd-size structs. - -2009-06-16 Andreas Tobler - - PR libffi/40444 - * testsuite/lib/libffi-dg.exp (libffi_target_compile): Add - allow_stack_execute for Darwin. - -2009-06-16 Andrew Haley - - * configure.ac (TARGETDIR): Add missing blank lines. - * configure: Regenerate. - -2009-06-16 Andrew Haley - - * testsuite/libffi.call/cls_align_sint64.c, - testsuite/libffi.call/cls_align_uint64.c, - testsuite/libffi.call/cls_longdouble_va.c, - testsuite/libffi.call/cls_ulonglong.c, - testsuite/libffi.call/return_ll1.c, - testsuite/libffi.call/stret_medium2.c: Fix printf format - specifiers. - * testsuite/libffi.call/ffitest.h, - testsuite/libffi.special/ffitestcxx.h (PRIdLL, PRIuLL): Define. - -2009-06-15 Andrew Haley - - * testsuite/libffi.call/err_bad_typedef.c: xfail everywhere. - * testsuite/libffi.call/err_bad_abi.c: Likewise. - -2009-06-12 Andrew Haley - - * Makefile.am: Remove info_TEXINFOS. - -2009-06-12 Andrew Haley - - * ChangeLog.libffi: testsuite/libffi.call/cls_align_sint64.c, - testsuite/libffi.call/cls_align_uint64.c, - testsuite/libffi.call/cls_ulonglong.c, - testsuite/libffi.call/return_ll1.c, - testsuite/libffi.call/stret_medium2.c: Fix printf format - specifiers. - testsuite/libffi.special/unwindtest.cc: include stdint.h. - -2009-06-11 Timothy Wall - - * Makefile.am, - configure.ac, - include/ffi.h.in, - include/ffi_common.h, - src/closures.c, - src/dlmalloc.c, - src/x86/ffi.c, - src/x86/ffitarget.h, - src/x86/win64.S (new), - README: Added win64 support (mingw or MSVC) - * Makefile.in, - include/Makefile.in, - man/Makefile.in, - testsuite/Makefile.in, - configure, - aclocal.m4: Regenerated - * ltcf-c.sh: properly escape cygwin/w32 path - * man/ffi_call.3: Clarify size requirements for return value. - * src/x86/ffi64.c: Fix filename in comment. - * src/x86/win32.S: Remove unused extern. - - * testsuite/libffi.call/closure_fn0.c, - testsuite/libffi.call/closure_fn1.c, - testsuite/libffi.call/closure_fn2.c, - testsuite/libffi.call/closure_fn3.c, - testsuite/libffi.call/closure_fn4.c, - testsuite/libffi.call/closure_fn5.c, - testsuite/libffi.call/closure_fn6.c, - testsuite/libffi.call/closure_stdcall.c, - testsuite/libffi.call/cls_12byte.c, - testsuite/libffi.call/cls_16byte.c, - testsuite/libffi.call/cls_18byte.c, - testsuite/libffi.call/cls_19byte.c, - testsuite/libffi.call/cls_1_1byte.c, - testsuite/libffi.call/cls_20byte.c, - testsuite/libffi.call/cls_20byte1.c, - testsuite/libffi.call/cls_24byte.c, - testsuite/libffi.call/cls_2byte.c, - testsuite/libffi.call/cls_3_1byte.c, - testsuite/libffi.call/cls_3byte1.c, - testsuite/libffi.call/cls_3byte2.c, - testsuite/libffi.call/cls_4_1byte.c, - testsuite/libffi.call/cls_4byte.c, - testsuite/libffi.call/cls_5_1_byte.c, - testsuite/libffi.call/cls_5byte.c, - testsuite/libffi.call/cls_64byte.c, - testsuite/libffi.call/cls_6_1_byte.c, - testsuite/libffi.call/cls_6byte.c, - testsuite/libffi.call/cls_7_1_byte.c, - testsuite/libffi.call/cls_7byte.c, - testsuite/libffi.call/cls_8byte.c, - testsuite/libffi.call/cls_9byte1.c, - testsuite/libffi.call/cls_9byte2.c, - testsuite/libffi.call/cls_align_double.c, - testsuite/libffi.call/cls_align_float.c, - testsuite/libffi.call/cls_align_longdouble.c, - testsuite/libffi.call/cls_align_longdouble_split.c, - testsuite/libffi.call/cls_align_longdouble_split2.c, - testsuite/libffi.call/cls_align_pointer.c, - testsuite/libffi.call/cls_align_sint16.c, - testsuite/libffi.call/cls_align_sint32.c, - testsuite/libffi.call/cls_align_sint64.c, - testsuite/libffi.call/cls_align_uint16.c, - testsuite/libffi.call/cls_align_uint32.c, - testsuite/libffi.call/cls_align_uint64.c, - testsuite/libffi.call/cls_dbls_struct.c, - testsuite/libffi.call/cls_double.c, - testsuite/libffi.call/cls_double_va.c, - testsuite/libffi.call/cls_float.c, - testsuite/libffi.call/cls_longdouble.c, - testsuite/libffi.call/cls_longdouble_va.c, - testsuite/libffi.call/cls_multi_schar.c, - testsuite/libffi.call/cls_multi_sshort.c, - testsuite/libffi.call/cls_multi_sshortchar.c, - testsuite/libffi.call/cls_multi_uchar.c, - testsuite/libffi.call/cls_multi_ushort.c, - testsuite/libffi.call/cls_multi_ushortchar.c, - testsuite/libffi.call/cls_pointer.c, - testsuite/libffi.call/cls_pointer_stack.c, - testsuite/libffi.call/cls_schar.c, - testsuite/libffi.call/cls_sint.c, - testsuite/libffi.call/cls_sshort.c, - testsuite/libffi.call/cls_uchar.c, - testsuite/libffi.call/cls_uint.c, - testsuite/libffi.call/cls_ulonglong.c, - testsuite/libffi.call/cls_ushort.c, - testsuite/libffi.call/err_bad_abi.c, - testsuite/libffi.call/err_bad_typedef.c, - testsuite/libffi.call/float2.c, - testsuite/libffi.call/huge_struct.c, - testsuite/libffi.call/nested_struct.c, - testsuite/libffi.call/nested_struct1.c, - testsuite/libffi.call/nested_struct10.c, - testsuite/libffi.call/nested_struct2.c, - testsuite/libffi.call/nested_struct3.c, - testsuite/libffi.call/nested_struct4.c, - testsuite/libffi.call/nested_struct5.c, - testsuite/libffi.call/nested_struct6.c, - testsuite/libffi.call/nested_struct7.c, - testsuite/libffi.call/nested_struct8.c, - testsuite/libffi.call/nested_struct9.c, - testsuite/libffi.call/problem1.c, - testsuite/libffi.call/return_ldl.c, - testsuite/libffi.call/return_ll1.c, - testsuite/libffi.call/stret_large.c, - testsuite/libffi.call/stret_large2.c, - testsuite/libffi.call/stret_medium.c, - testsuite/libffi.call/stret_medium2.c, - testsuite/libffi.special/unwindtest.cc: use ffi_closure_alloc instead - of checking for MMAP. Use intptr_t instead of long casts. - -2009-06-11 Kaz Kojima - - * testsuite/libffi.call/cls_longdouble_va.c: Add xfail sh*-*-linux-*. - * testsuite/libffi.call/err_bad_abi.c: Add xfail sh*-*-*. - * testsuite/libffi.call/err_bad_typedef.c: Likewise. - -2009-06-09 Andrew Haley - - * src/x86/freebsd.S: Add missing file. - -2009-06-08 Andrew Haley - - Import from libffi 3.0.8: - - * doc/libffi.texi: New file. - * doc/libffi.info: Likewise. - * doc/stamp-vti: Likewise. - * man/Makefile.am: New file. - * man/ffi_call.3: New file. - - * Makefile.am (EXTRA_DIST): Add src/x86/darwin64.S, - src/dlmalloc.c. - (nodist_libffi_la_SOURCES): Add X86_FREEBSD. - - * configure.ac: Bump version to 3.0.8. - parisc*-*-linux*: Add. - i386-*-freebsd* | i386-*-openbsd*: Add. - powerpc-*-beos*: Add. - AM_CONDITIONAL X86_FREEBSD: Add. - AC_CONFIG_FILES: Add man/Makefile. - - * include/ffi.h.in (FFI_FN): Change void (*)() to void (*)(void). - -2009-06-08 Andrew Haley - - * README: Import from libffi 3.0.8. - -2009-06-08 Andrew Haley - - * testsuite/libffi.call/err_bad_abi.c: Add xfails. - * testsuite/libffi.call/cls_longdouble_va.c: Add xfails. - * testsuite/libffi.call/cls_dbls_struct.c: Add xfail x86_64-*-linux-*. - * testsuite/libffi.call/err_bad_typedef.c: Add xfails. - - * testsuite/libffi.call/stret_medium2.c: Add __UNUSED__ to args. - * testsuite/libffi.call/stret_medium.c: Likewise. - * testsuite/libffi.call/stret_large2.c: Likewise. - * testsuite/libffi.call/stret_large.c: Likewise. - -2008-12-26 Timothy Wall - - * testsuite/libffi.call/cls_longdouble.c, - testsuite/libffi.call/cls_longdouble_va.c, - testsuite/libffi.call/cls_align_longdouble.c, - testsuite/libffi.call/cls_align_longdouble_split.c, - testsuite/libffi.call/cls_align_longdouble_split2.c: mark expected - failures on x86_64 cygwin/mingw. - -2008-12-22 Timothy Wall - - * testsuite/libffi.call/closure_fn0.c, - testsuite/libffi.call/closure_fn1.c, - testsuite/libffi.call/closure_fn2.c, - testsuite/libffi.call/closure_fn3.c, - testsuite/libffi.call/closure_fn4.c, - testsuite/libffi.call/closure_fn5.c, - testsuite/libffi.call/closure_fn6.c, - testsuite/libffi.call/closure_loc_fn0.c, - testsuite/libffi.call/closure_stdcall.c, - testsuite/libffi.call/cls_align_pointer.c, - testsuite/libffi.call/cls_pointer.c, - testsuite/libffi.call/cls_pointer_stack.c: use portable cast from - pointer to integer (intptr_t). - * testsuite/libffi.call/cls_longdouble.c: disable for win64. - -2008-07-24 Anthony Green - - * testsuite/libffi.call/cls_dbls_struct.c, - testsuite/libffi.call/cls_double_va.c, - testsuite/libffi.call/cls_longdouble.c, - testsuite/libffi.call/cls_longdouble_va.c, - testsuite/libffi.call/cls_pointer.c, - testsuite/libffi.call/cls_pointer_stack.c, - testsuite/libffi.call/err_bad_abi.c: Clean up failures from - compiler warnings. - -2008-03-04 Anthony Green - Blake Chaffin - hos@tamanegi.org - - * testsuite/libffi.call/cls_align_longdouble_split2.c - testsuite/libffi.call/cls_align_longdouble_split.c - testsuite/libffi.call/cls_dbls_struct.c - testsuite/libffi.call/cls_double_va.c - testsuite/libffi.call/cls_longdouble.c - testsuite/libffi.call/cls_longdouble_va.c - testsuite/libffi.call/cls_pointer.c - testsuite/libffi.call/cls_pointer_stack.c - testsuite/libffi.call/err_bad_abi.c - testsuite/libffi.call/err_bad_typedef.c - testsuite/libffi.call/stret_large2.c - testsuite/libffi.call/stret_large.c - testsuite/libffi.call/stret_medium2.c - testsuite/libffi.call/stret_medium.c: New tests from Apple. - -2009-06-05 Andrew Haley - - * src/x86/ffitarget.h, src/x86/ffi.c: Merge stdcall changes from - libffi. - -2009-06-04 Andrew Haley - - * src/x86/ffitarget.h, src/x86/win32.S, src/x86/ffi.c: Back out - stdcall changes. - -2008-02-26 Anthony Green - Thomas Heller - - * src/x86/ffi.c (ffi_closure_SYSV_inner): Change C++ comment to C - comment. - -2008-02-03 Timothy Wall - - * src/x86/ffi.c (FFI_INIT_TRAMPOLINE_STDCALL): Calculate jump return - offset based on code pointer, not data pointer. - -2008-01-31 Timothy Wall - - * testsuite/libffi.call/closure_stdcall.c: Add test for stdcall - closures. - * src/x86/ffitarget.h: Increase size of trampoline for stdcall - closures. - * src/x86/win32.S: Add assembly for stdcall closure. - * src/x86/ffi.c: Initialize stdcall closure trampoline. - -2009-06-04 Andrew Haley - - * include/ffi.h.in: Change void (*)() to void (*)(void). - * src/x86/ffi.c: Likewise. - -2009-06-04 Andrew Haley - - * src/powerpc/ppc_closure.S: Insert licence header. - * src/powerpc/linux64_closure.S: Likewise. - * src/m68k/sysv.S: Likewise. - - * src/sh64/ffi.c: Change void (*)() to void (*)(void). - * src/powerpc/ffi.c: Likewise. - * src/powerpc/ffi_darwin.c: Likewise. - * src/m32r/ffi.c: Likewise. - * src/sh64/ffi.c: Likewise. - * src/x86/ffi64.c: Likewise. - * src/alpha/ffi.c: Likewise. - * src/alpha/osf.S: Likewise. - * src/frv/ffi.c: Likewise. - * src/s390/ffi.c: Likewise. - * src/pa/ffi.c: Likewise. - * src/pa/hpux32.S: Likewise. - * src/ia64/unix.S: Likewise. - * src/ia64/ffi.c: Likewise. - * src/sparc/ffi.c: Likewise. - * src/mips/ffi.c: Likewise. - * src/sh/ffi.c: Likewise. - -2008-02-15 David Daney - - * src/mips/ffi.c (USE__BUILTIN___CLEAR_CACHE): - Define (conditionally), and use it to include cachectl.h. - (ffi_prep_closure_loc): Fix cache flushing. - * src/mips/ffitarget.h (_ABIN32, _ABI64, _ABIO32): Define. - -2009-06-04 Andrew Haley - - include/ffi.h.in, - src/arm/ffitarget.h, - src/arm/ffi.c, - src/arm/sysv.S, - src/powerpc/ffitarget.h, - src/closures.c, - src/sh64/ffitarget.h, - src/sh64/ffi.c, - src/sh64/sysv.S, - src/types.c, - src/x86/ffi64.c, - src/x86/ffitarget.h, - src/x86/win32.S, - src/x86/darwin.S, - src/x86/ffi.c, - src/x86/sysv.S, - src/x86/unix64.S, - src/alpha/ffitarget.h, - src/alpha/ffi.c, - src/alpha/osf.S, - src/m68k/ffitarget.h, - src/frv/ffitarget.h, - src/frv/ffi.c, - src/s390/ffitarget.h, - src/s390/sysv.S, - src/cris/ffitarget.h, - src/pa/linux.S, - src/pa/ffitarget.h, - src/pa/ffi.c, - src/raw_api.c, - src/ia64/ffitarget.h, - src/ia64/unix.S, - src/ia64/ffi.c, - src/ia64/ia64_flags.h, - src/java_raw_api.c, - src/debug.c, - src/sparc/v9.S, - src/sparc/ffitarget.h, - src/sparc/ffi.c, - src/sparc/v8.S, - src/mips/ffitarget.h, - src/mips/n32.S, - src/mips/o32.S, - src/mips/ffi.c, - src/prep_cif.c, - src/sh/ffitarget.h, - src/sh/ffi.c, - src/sh/sysv.S: Update license text. - -2009-05-22 Dave Korn - - * src/x86/win32.S (_ffi_closure_STDCALL): New function. - (.eh_frame): Add FDE for it. - -2009-05-22 Dave Korn - - * configure.ac: Also check if assembler supports pc-relative - relocs on X86_WIN32 targets. - * configure: Regenerate. - * src/x86/win32.S (ffi_prep_args): Declare extern, not global. - (_ffi_call_SYSV): Add missing function type symbol .def and - add EH markup labels. - (_ffi_call_STDCALL): Likewise. - (_ffi_closure_SYSV): Likewise. - (_ffi_closure_raw_SYSV): Likewise. - (.eh_frame): Add hand-crafted EH data. - -2009-04-09 Jakub Jelinek - - * testsuite/lib/libffi-dg.exp: Change copyright header to refer to - version 3 of the GNU General Public License and to point readers - at the COPYING3 file and the FSF's license web page. - * testsuite/libffi.call/call.exp: Likewise. - * testsuite/libffi.special/special.exp: Likewise. - -2009-03-01 Ralf Wildenhues - - * configure: Regenerate. - -2008-12-18 Rainer Orth - - PR libffi/26048 - * configure.ac (HAVE_AS_X86_PCREL): New test. - * configure: Regenerate. - * fficonfig.h.in: Regenerate. - * src/x86/sysv.S [!FFI_NO_RAW_API]: Precalculate - RAW_CLOSURE_CIF_OFFSET, RAW_CLOSURE_FUN_OFFSET, - RAW_CLOSURE_USER_DATA_OFFSET for the Solaris 10/x86 assembler. - (.eh_frame): Only use SYMBOL-. iff HAVE_AS_X86_PCREL. - * src/x86/unix64.S (.Lstore_table): Move to .text section. - (.Lload_table): Likewise. - (.eh_frame): Only use SYMBOL-. iff HAVE_AS_X86_PCREL. - -2008-12-18 Ralf Wildenhues - - * configure: Regenerate. - -2008-11-21 Eric Botcazou - - * src/sparc/ffi.c (ffi_prep_cif_machdep): Add support for - signed/unsigned int8/16 return values. - * src/sparc/v8.S (ffi_call_v8): Likewise. - (ffi_closure_v8): Likewise. - -2008-09-26 Peter O'Gorman - Steve Ellcey - - * configure: Regenerate for new libtool. - * Makefile.in: Ditto. - * include/Makefile.in: Ditto. - * aclocal.m4: Ditto. - -2008-08-25 Andreas Tobler - - * src/powerpc/ffitarget.h (ffi_abi): Add FFI_LINUX and - FFI_LINUX_SOFT_FLOAT to the POWERPC_FREEBSD enum. - Add note about flag bits used for FFI_SYSV_TYPE_SMALL_STRUCT. - Adjust copyright notice. - * src/powerpc/ffi.c: Add two new flags to indicate if we have one - register or two register to use for FFI_SYSV structs. - (ffi_prep_cif_machdep): Pass the right register flag introduced above. - (ffi_closure_helper_SYSV): Fix the return type for - FFI_SYSV_TYPE_SMALL_STRUCT. Comment. - Adjust copyright notice. - -2008-07-16 Kaz Kojima - - * src/sh/ffi.c (ffi_prep_closure_loc): Turn INSN into an unsigned - int. - -2008-06-17 Ralf Wildenhues - - * configure: Regenerate. - * include/Makefile.in: Regenerate. - * testsuite/Makefile.in: Regenerate. - -2008-06-07 Joseph Myers - - * configure.ac (parisc*-*-linux*, powerpc-*-sysv*, - powerpc-*-beos*): Remove. - * configure: Regenerate. - -2008-05-09 Julian Brown - - * Makefile.am (LTLDFLAGS): New. - (libffi_la_LDFLAGS): Use above. - * Makefile.in: Regenerate. - -2008-04-18 Paolo Bonzini - - PR bootstrap/35457 - * aclocal.m4: Regenerate. - * configure: Regenerate. - -2008-03-26 Kaz Kojima - - * src/sh/sysv.S: Add .note.GNU-stack on Linux. - * src/sh64/sysv.S: Likewise. - -2008-03-26 Daniel Jacobowitz - - * src/arm/sysv.S: Fix ARM comment marker. - -2008-03-26 Jakub Jelinek - - * src/alpha/osf.S: Add .note.GNU-stack on Linux. - * src/s390/sysv.S: Likewise. - * src/powerpc/ppc_closure.S: Likewise. - * src/powerpc/sysv.S: Likewise. - * src/x86/unix64.S: Likewise. - * src/x86/sysv.S: Likewise. - * src/sparc/v8.S: Likewise. - * src/sparc/v9.S: Likewise. - * src/m68k/sysv.S: Likewise. - * src/arm/sysv.S: Likewise. - -2008-03-16 Ralf Wildenhues - - * aclocal.m4: Regenerate. - * configure: Likewise. - * Makefile.in: Likewise. - * include/Makefile.in: Likewise. - * testsuite/Makefile.in: Likewise. - -2008-02-12 Bjoern Koenig - Andreas Tobler - - * configure.ac: Add amd64-*-freebsd* target. - * configure: Regenerate. - -2008-01-30 H.J. Lu - - PR libffi/34612 - * src/x86/sysv.S (ffi_closure_SYSV): Pop 4 byte from stack when - returning struct. - - * testsuite/libffi.call/call.exp: Add "-O2 -fomit-frame-pointer" - tests. - -2008-01-24 David Edelsohn - - * configure: Regenerate. - -2008-01-06 Andreas Tobler - - * src/x86/ffi.c (ffi_prep_cif_machdep): Fix thinko. - -2008-01-05 Andreas Tobler - - PR testsuite/32843 - * src/x86/ffi.c (ffi_prep_cif_machdep): Add code for - signed/unsigned int8/16 for X86_DARWIN. - Updated copyright info. - Handle one and two byte structs with special cif->flags. - * src/x86/ffitarget.h: Add special types for one and two byte structs. - Updated copyright info. - * src/x86/darwin.S (ffi_call_SYSV): Rewrite to use a jump table like - sysv.S - Remove code to pop args from the stack after call. - Special-case signed/unsigned for int8/16, one and two byte structs. - (ffi_closure_raw_SYSV): Handle FFI_TYPE_UINT8, - FFI_TYPE_SINT8, FFI_TYPE_UINT16, FFI_TYPE_SINT16, FFI_TYPE_UINT32, - FFI_TYPE_SINT32. - Updated copyright info. - -2007-12-08 David Daney - - * src/mips/n32.S (ffi_call_N32): Replace dadd with ADDU, dsub with - SUBU, add with ADDU and use smaller code sequences. - -2007-12-07 David Daney - - * src/mips/ffi.c (ffi_prep_cif_machdep): Handle long double return - type. - -2007-12-06 David Daney - - * include/ffi.h.in (FFI_SIZEOF_JAVA_RAW): Define if not already - defined. - (ffi_java_raw): New typedef. - (ffi_java_raw_call, ffi_java_ptrarray_to_raw, - ffi_java_raw_to_ptrarray): Change parameter types from ffi_raw to - ffi_java_raw. - (ffi_java_raw_closure) : Same. - (ffi_prep_java_raw_closure, ffi_prep_java_raw_closure_loc): Change - parameter types. - * src/java_raw_api.c (ffi_java_raw_size): Replace FFI_SIZEOF_ARG with - FFI_SIZEOF_JAVA_RAW. - (ffi_java_raw_to_ptrarray): Change type of raw to ffi_java_raw. - Replace FFI_SIZEOF_ARG with FFI_SIZEOF_JAVA_RAW. Use - sizeof(ffi_java_raw) for alignment calculations. - (ffi_java_ptrarray_to_raw): Same. - (ffi_java_rvalue_to_raw): Add special handling for FFI_TYPE_POINTER - if FFI_SIZEOF_JAVA_RAW == 4. - (ffi_java_raw_to_rvalue): Same. - (ffi_java_raw_call): Change type of raw to ffi_java_raw. - (ffi_java_translate_args): Same. - (ffi_prep_java_raw_closure_loc, ffi_prep_java_raw_closure): Change - parameter types. - * src/mips/ffitarget.h (FFI_SIZEOF_JAVA_RAW): Define for N32 ABI. - -2007-12-06 David Daney - - * src/mips/n32.S (ffi_closure_N32): Use 64-bit add instruction on - pointer values. - -2007-12-01 Andreas Tobler - - PR libffi/31937 - * src/powerpc/ffitarget.h: Introduce new ABI FFI_LINUX_SOFT_FLOAT. - Add local FFI_TYPE_UINT128 to handle soft-float long-double-128. - * src/powerpc/ffi.c: Distinguish between __NO_FPRS__ and not and - set the NUM_FPR_ARG_REGISTERS according to. - Add support for potential soft-float support under hard-float - architecture. - (ffi_prep_args_SYSV): Set NUM_FPR_ARG_REGISTERS to 0 in case of - FFI_LINUX_SOFT_FLOAT, handle float, doubles and long-doubles according - to the FFI_LINUX_SOFT_FLOAT ABI. - (ffi_prep_cif_machdep): Likewise. - (ffi_closure_helper_SYSV): Likewise. - * src/powerpc/ppc_closure.S: Make sure not to store float/double - on archs where __NO_FPRS__ is true. - Add FFI_TYPE_UINT128 support. - * src/powerpc/sysv.S: Add support for soft-float long-double-128. - Adjust copyright notice. - -2007-11-25 Andreas Tobler - - * src/closures.c: Move defintion of MAYBE_UNUSED from here to ... - * include/ffi_common.h: ... here. - Update copyright. - -2007-11-17 Andreas Tobler - - * src/powerpc/sysv.S: Load correct cr to compare if we have long double. - * src/powerpc/linux64.S: Likewise. - * src/powerpc/ffi.c: Add a comment to show which part goes into cr6. - * testsuite/libffi.call/return_ldl.c: New test. - -2007-09-04 - - * src/arm/sysv.S (UNWIND): New. - (Whole file): Conditionally compile unwinder directives. - * src/arm/sysv.S: Add unwinder directives. - - * src/arm/ffi.c (ffi_prep_args): Align structs by at least 4 bytes. - Only treat r0 as a struct address if we're actually returning a - struct by address. - Only copy the bytes that are actually within a struct. - (ffi_prep_cif_machdep): A Composite Type not larger than 4 bytes - is returned in r0, not passed by address. - (ffi_call): Allocate a word-sized temporary for the case where - a composite is returned in r0. - (ffi_prep_incoming_args_SYSV): Align as necessary. - -2007-08-05 Steven Newbury - - * src/arm/ffi.c (FFI_INIT_TRAMPOLINE): Use __clear_cache instead of - directly using the sys_cacheflush syscall. - -2007-07-27 Andrew Haley - - * src/arm/sysv.S (ffi_closure_SYSV): Add soft-float. - -2007-09-03 Maciej W. Rozycki - - * Makefile.am: Unify MIPS_IRIX and MIPS_LINUX into MIPS. - * configure.ac: Likewise. - * Makefile.in: Regenerate. - * include/Makefile.in: Likewise. - * testsuite/Makefile.in: Likewise. - * configure: Likewise. - -2007-08-24 David Daney - - * testsuite/libffi.call/return_sl.c: New test. - -2007-08-10 David Daney - - * testsuite/libffi.call/cls_multi_ushort.c, - testsuite/libffi.call/cls_align_uint16.c, - testsuite/libffi.call/nested_struct1.c, - testsuite/libffi.call/nested_struct3.c, - testsuite/libffi.call/cls_7_1_byte.c, - testsuite/libffi.call/nested_struct5.c, - testsuite/libffi.call/cls_double.c, - testsuite/libffi.call/nested_struct7.c, - testsuite/libffi.call/cls_sint.c, - testsuite/libffi.call/nested_struct9.c, - testsuite/libffi.call/cls_20byte1.c, - testsuite/libffi.call/cls_multi_sshortchar.c, - testsuite/libffi.call/cls_align_sint64.c, - testsuite/libffi.call/cls_3byte2.c, - testsuite/libffi.call/cls_multi_schar.c, - testsuite/libffi.call/cls_multi_uchar.c, - testsuite/libffi.call/cls_19byte.c, - testsuite/libffi.call/cls_9byte1.c, - testsuite/libffi.call/cls_align_float.c, - testsuite/libffi.call/closure_fn1.c, - testsuite/libffi.call/problem1.c, - testsuite/libffi.call/closure_fn3.c, - testsuite/libffi.call/cls_sshort.c, - testsuite/libffi.call/closure_fn5.c, - testsuite/libffi.call/cls_align_double.c, - testsuite/libffi.call/nested_struct.c, - testsuite/libffi.call/cls_2byte.c, - testsuite/libffi.call/nested_struct10.c, - testsuite/libffi.call/cls_4byte.c, - testsuite/libffi.call/cls_6byte.c, - testsuite/libffi.call/cls_8byte.c, - testsuite/libffi.call/cls_multi_sshort.c, - testsuite/libffi.call/cls_align_sint16.c, - testsuite/libffi.call/cls_align_uint32.c, - testsuite/libffi.call/cls_20byte.c, - testsuite/libffi.call/cls_float.c, - testsuite/libffi.call/nested_struct2.c, - testsuite/libffi.call/cls_5_1_byte.c, - testsuite/libffi.call/nested_struct4.c, - testsuite/libffi.call/cls_24byte.c, - testsuite/libffi.call/nested_struct6.c, - testsuite/libffi.call/cls_64byte.c, - testsuite/libffi.call/nested_struct8.c, - testsuite/libffi.call/cls_uint.c, - testsuite/libffi.call/cls_multi_ushortchar.c, - testsuite/libffi.call/cls_schar.c, - testsuite/libffi.call/cls_uchar.c, - testsuite/libffi.call/cls_align_uint64.c, - testsuite/libffi.call/cls_ulonglong.c, - testsuite/libffi.call/cls_align_longdouble.c, - testsuite/libffi.call/cls_1_1byte.c, - testsuite/libffi.call/cls_12byte.c, - testsuite/libffi.call/cls_3_1byte.c, - testsuite/libffi.call/cls_3byte1.c, - testsuite/libffi.call/cls_4_1byte.c, - testsuite/libffi.call/cls_6_1_byte.c, - testsuite/libffi.call/cls_16byte.c, - testsuite/libffi.call/cls_18byte.c, - testsuite/libffi.call/closure_fn0.c, - testsuite/libffi.call/cls_9byte2.c, - testsuite/libffi.call/closure_fn2.c, - testsuite/libffi.call/closure_fn4.c, - testsuite/libffi.call/cls_ushort.c, - testsuite/libffi.call/closure_fn6.c, - testsuite/libffi.call/cls_5byte.c, - testsuite/libffi.call/cls_align_pointer.c, - testsuite/libffi.call/cls_7byte.c, - testsuite/libffi.call/cls_align_sint32.c, - testsuite/libffi.special/unwindtest_ffi_call.cc, - testsuite/libffi.special/unwindtest.cc: Remove xfail for mips64*-*-*. - -2007-08-10 David Daney - - PR libffi/28313 - * configure.ac: Don't treat mips64 as a special case. - * Makefile.am (nodist_libffi_la_SOURCES): Add n32.S. - * configure: Regenerate - * Makefile.in: Ditto. - * fficonfig.h.in: Ditto. - * src/mips/ffitarget.h (REG_L, REG_S, SUBU, ADDU, SRL, LI): Indent. - (LA, EH_FRAME_ALIGN, FDE_ADDR_BYTES): New preprocessor macros. - (FFI_DEFAULT_ABI): Set for n64 case. - (FFI_CLOSURES, FFI_TRAMPOLINE_SIZE): Define for n32 and n64 cases. - * src/mips/n32.S (ffi_call_N32): Add debug macros and labels for FDE. - (ffi_closure_N32): New function. - (.eh_frame): New section - * src/mips/o32.S: Clean up comments. - (ffi_closure_O32): Pass ffi_closure parameter in $12. - * src/mips/ffi.c: Use FFI_MIPS_N32 instead of - _MIPS_SIM == _ABIN32 throughout. - (FFI_MIPS_STOP_HERE): New, use in place of - ffi_stop_here. - (ffi_prep_args): Use unsigned long to hold pointer values. Rewrite - to support n32/n64 ABIs. - (calc_n32_struct_flags): Rewrite. - (calc_n32_return_struct_flags): Remove unused variable. Reverse - position of flag bits. - (ffi_prep_cif_machdep): Rewrite n32 portion. - (ffi_call): Enable for n64. Add special handling for small structure - return values. - (ffi_prep_closure_loc): Add n32 and n64 support. - (ffi_closure_mips_inner_O32): Add cast to silence warning. - (copy_struct_N32, ffi_closure_mips_inner_N32): New functions. - -2007-08-08 David Daney - - * testsuite/libffi.call/ffitest.h (ffi_type_mylong): Remove definition. - * testsuite/libffi.call/cls_align_uint16.c (main): Use correct type - specifiers. - * testsuite/libffi.call/nested_struct1.c (main): Ditto. - * testsuite/libffi.call/cls_sint.c (main): Ditto. - * testsuite/libffi.call/nested_struct9.c (main): Ditto. - * testsuite/libffi.call/cls_20byte1.c (main): Ditto. - * testsuite/libffi.call/cls_9byte1.c (main): Ditto. - * testsuite/libffi.call/closure_fn1.c (main): Ditto. - * testsuite/libffi.call/closure_fn3.c (main): Ditto. - * testsuite/libffi.call/return_dbl2.c (main): Ditto. - * testsuite/libffi.call/cls_sshort.c (main): Ditto. - * testsuite/libffi.call/return_fl3.c (main): Ditto. - * testsuite/libffi.call/closure_fn5.c (main): Ditto. - * testsuite/libffi.call/nested_struct.c (main): Ditto. - * testsuite/libffi.call/nested_struct10.c (main): Ditto. - * testsuite/libffi.call/return_ll1.c (main): Ditto. - * testsuite/libffi.call/cls_8byte.c (main): Ditto. - * testsuite/libffi.call/cls_align_uint32.c (main): Ditto. - * testsuite/libffi.call/cls_align_sint16.c (main): Ditto. - * testsuite/libffi.call/cls_20byte.c (main): Ditto. - * testsuite/libffi.call/nested_struct2.c (main): Ditto. - * testsuite/libffi.call/cls_24byte.c (main): Ditto. - * testsuite/libffi.call/nested_struct6.c (main): Ditto. - * testsuite/libffi.call/cls_uint.c (main): Ditto. - * testsuite/libffi.call/cls_12byte.c (main): Ditto. - * testsuite/libffi.call/cls_16byte.c (main): Ditto. - * testsuite/libffi.call/closure_fn0.c (main): Ditto. - * testsuite/libffi.call/cls_9byte2.c (main): Ditto. - * testsuite/libffi.call/closure_fn2.c (main): Ditto. - * testsuite/libffi.call/return_dbl1.c (main): Ditto. - * testsuite/libffi.call/closure_fn4.c (main): Ditto. - * testsuite/libffi.call/closure_fn6.c (main): Ditto. - * testsuite/libffi.call/cls_align_sint32.c (main): Ditto. - -2007-08-07 Andrew Haley - - * src/x86/sysv.S (ffi_closure_raw_SYSV): Fix typo in previous - checkin. - -2007-08-06 Andrew Haley - - PR testsuite/32843 - * src/x86/sysv.S (ffi_closure_raw_SYSV): Handle FFI_TYPE_UINT8, - FFI_TYPE_SINT8, FFI_TYPE_UINT16, FFI_TYPE_SINT16, FFI_TYPE_UINT32, - FFI_TYPE_SINT32. - -2007-08-02 David Daney - - * testsuite/libffi.call/return_ul.c (main): Define return type as - ffi_arg. Use proper printf conversion specifier. - -2007-07-30 Andrew Haley - - PR testsuite/32843 - * src/x86/ffi.c (ffi_prep_cif_machdep): in x86 case, add code for - signed/unsigned int8/16. - * src/x86/sysv.S (ffi_call_SYSV): Rewrite to: - Use a jump table. - Remove code to pop args from the stack after call. - Special-case signed/unsigned int8/16. - * testsuite/libffi.call/return_sc.c (main): Revert. - -2007-07-26 Richard Guenther - - PR testsuite/32843 - * testsuite/libffi.call/return_sc.c (main): Verify call - result as signed char, not ffi_arg. - -2007-07-16 Rainer Orth - - * configure.ac (i?86-*-solaris2.1[0-9]): Set TARGET to X86_64. - * configure: Regenerate. - -2007-07-11 David Daney - - * src/mips/ffi.c: Don't include sys/cachectl.h. - (ffi_prep_closure_loc): Use __builtin___clear_cache() instead of - cacheflush(). - -2007-05-18 Aurelien Jarno - - * src/arm/ffi.c (ffi_prep_closure_loc): Renamed and ajusted - from (ffi_prep_closure): ... this. - (FFI_INIT_TRAMPOLINE): Adjust. - -2005-12-31 Phil Blundell - - * src/arm/ffi.c (ffi_prep_incoming_args_SYSV, - ffi_closure_SYSV_inner, ffi_prep_closure): New, add closure support. - * src/arm/sysv.S(ffi_closure_SYSV): Likewise. - * src/arm/ffitarget.h (FFI_TRAMPOLINE_SIZE): Likewise. - (FFI_CLOSURES): Enable closure support. - -2007-07-03 Andrew Haley - - * testsuite/libffi.call/cls_multi_ushort.c, - testsuite/libffi.call/cls_align_uint16.c, - testsuite/libffi.call/nested_struct1.c, - testsuite/libffi.call/nested_struct3.c, - testsuite/libffi.call/cls_7_1_byte.c, - testsuite/libffi.call/cls_double.c, - testsuite/libffi.call/nested_struct5.c, - testsuite/libffi.call/nested_struct7.c, - testsuite/libffi.call/cls_sint.c, - testsuite/libffi.call/nested_struct9.c, - testsuite/libffi.call/cls_20byte1.c, - testsuite/libffi.call/cls_multi_sshortchar.c, - testsuite/libffi.call/cls_align_sint64.c, - testsuite/libffi.call/cls_3byte2.c, - testsuite/libffi.call/cls_multi_schar.c, - testsuite/libffi.call/cls_multi_uchar.c, - testsuite/libffi.call/cls_19byte.c, - testsuite/libffi.call/cls_9byte1.c, - testsuite/libffi.call/cls_align_float.c, - testsuite/libffi.call/closure_fn1.c, - testsuite/libffi.call/problem1.c, - testsuite/libffi.call/closure_fn3.c, - testsuite/libffi.call/cls_sshort.c, - testsuite/libffi.call/closure_fn5.c, - testsuite/libffi.call/cls_align_double.c, - testsuite/libffi.call/cls_2byte.c, - testsuite/libffi.call/nested_struct.c, - testsuite/libffi.call/nested_struct10.c, - testsuite/libffi.call/cls_4byte.c, - testsuite/libffi.call/cls_6byte.c, - testsuite/libffi.call/cls_8byte.c, - testsuite/libffi.call/cls_multi_sshort.c, - testsuite/libffi.call/cls_align_uint32.c, - testsuite/libffi.call/cls_align_sint16.c, - testsuite/libffi.call/cls_float.c, - testsuite/libffi.call/cls_20byte.c, - testsuite/libffi.call/cls_5_1_byte.c, - testsuite/libffi.call/nested_struct2.c, - testsuite/libffi.call/cls_24byte.c, - testsuite/libffi.call/nested_struct4.c, - testsuite/libffi.call/nested_struct6.c, - testsuite/libffi.call/cls_64byte.c, - testsuite/libffi.call/nested_struct8.c, - testsuite/libffi.call/cls_uint.c, - testsuite/libffi.call/cls_multi_ushortchar.c, - testsuite/libffi.call/cls_schar.c, - testsuite/libffi.call/cls_uchar.c, - testsuite/libffi.call/cls_align_uint64.c, - testsuite/libffi.call/cls_ulonglong.c, - testsuite/libffi.call/cls_align_longdouble.c, - testsuite/libffi.call/cls_1_1byte.c, - testsuite/libffi.call/cls_12byte.c, - testsuite/libffi.call/cls_3_1byte.c, - testsuite/libffi.call/cls_3byte1.c, - testsuite/libffi.call/cls_4_1byte.c, - testsuite/libffi.call/cls_6_1_byte.c, - testsuite/libffi.call/cls_16byte.c, - testsuite/libffi.call/cls_18byte.c, - testsuite/libffi.call/closure_fn0.c, - testsuite/libffi.call/cls_9byte2.c, - testsuite/libffi.call/closure_fn2.c, - testsuite/libffi.call/closure_fn4.c, - testsuite/libffi.call/cls_ushort.c, - testsuite/libffi.call/closure_fn6.c, - testsuite/libffi.call/cls_5byte.c, - testsuite/libffi.call/cls_align_pointer.c, - testsuite/libffi.call/cls_7byte.c, - testsuite/libffi.call/cls_align_sint32.c, - testsuite/libffi.special/unwindtest_ffi_call.cc, - testsuite/libffi.special/unwindtest.cc: Enable for ARM. - -2007-07-05 H.J. Lu - - * aclocal.m4: Regenerated. - -2007-06-02 Paolo Bonzini - - * configure: Regenerate. - -2007-05-23 Steve Ellcey - - * Makefile.in: Regenerate. - * configure: Regenerate. - * aclocal.m4: Regenerate. - * include/Makefile.in: Regenerate. - * testsuite/Makefile.in: Regenerate. - -2007-05-10 Roman Zippel - - * src/m68k/ffi.c (ffi_prep_incoming_args_SYSV, - ffi_closure_SYSV_inner,ffi_prep_closure): New, add closure support. - * src/m68k/sysv.S(ffi_closure_SYSV,ffi_closure_struct_SYSV): Likewise. - * src/m68k/ffitarget.h (FFI_TRAMPOLINE_SIZE): Likewise. - (FFI_CLOSURES): Enable closure support. - -2007-05-10 Roman Zippel - - * configure.ac (HAVE_AS_CFI_PSEUDO_OP): New test. - * configure: Regenerate. - * fficonfig.h.in: Regenerate. - * src/m68k/sysv.S (CFI_STARTPROC,CFI_ENDPROC, - CFI_OFFSET,CFI_DEF_CFA): New macros. - (ffi_call_SYSV): Add callframe annotation. - -2007-05-10 Roman Zippel - - * src/m68k/ffi.c (ffi_prep_args,ffi_prep_cif_machdep): Fix - numerous test suite failures. - * src/m68k/sysv.S (ffi_call_SYSV): Likewise. - -2007-04-11 Paolo Bonzini - - * Makefile.am (EXTRA_DIST): Bring up to date. - * Makefile.in: Regenerate. - * src/frv/eabi.S: Remove RCS keyword. - -2007-04-06 Richard Henderson - - * configure.ac: Tidy target case. - (HAVE_LONG_DOUBLE): Allow the target to override. - * configure: Regenerate. - * include/ffi.h.in: Don't define ffi_type_foo if - LIBFFI_HIDE_BASIC_TYPES is defined. - (ffi_type_longdouble): If not HAVE_LONG_DOUBLE, define - to ffi_type_double. - * types.c (LIBFFI_HIDE_BASIC_TYPES): Define. - (FFI_TYPEDEF, ffi_type_void): Mark the data const. - (ffi_type_longdouble): Special case for Alpha. Don't define - if long double == double. - - * src/alpha/ffi.c (FFI_TYPE_LONGDOUBLE): Assert unique value. - (ffi_prep_cif_machdep): Handle it as the 128-bit type. - (ffi_call, ffi_closure_osf_inner): Likewise. - (ffi_closure_osf_inner): Likewise. Mark hidden. - (ffi_call_osf, ffi_closure_osf): Mark hidden. - * src/alpha/ffitarget.h (FFI_LAST_ABI): Tidy definition. - * src/alpha/osf.S (ffi_call_osf, ffi_closure_osf): Mark hidden. - (load_table): Handle 128-bit long double. - - * testsuite/libffi.call/float4.c: Add -mieee for alpha. - -2007-04-06 Tom Tromey - - PR libffi/31491: - * README: Fixed bug in example. - -2007-04-03 Jakub Jelinek - - * src/closures.c: Include sys/statfs.h. - (_GNU_SOURCE): Define on Linux. - (FFI_MMAP_EXEC_SELINUX): Define. - (selinux_enabled): New variable. - (selinux_enabled_check): New function. - (is_selinux_enabled): Define. - (dlmmap): Use it. - -2007-03-24 Uros Bizjak - - * testsuite/libffi.call/return_fl2.c (return_fl): Mark as static. - Use 'volatile float sum' to create sum of floats to avoid false - negative due to excess precision on ix86 targets. - (main): Ditto. - -2007-03-08 Alexandre Oliva - - * src/powerpc/ffi.c (flush_icache): Fix left-over from previous - patch. - (ffi_prep_closure_loc): Remove unneeded casts. Add needed ones. - -2007-03-07 Alexandre Oliva - - * include/ffi.h.in (ffi_closure_alloc, ffi_closure_free): New. - (ffi_prep_closure_loc): New. - (ffi_prep_raw_closure_loc): New. - (ffi_prep_java_raw_closure_loc): New. - * src/closures.c: New file. - * src/dlmalloc.c [FFI_MMAP_EXEC_WRIT] (struct malloc_segment): - Replace sflags with exec_offset. - [FFI_MMAP_EXEC_WRIT] (mmap_exec_offset, add_segment_exec_offset, - sub_segment_exec_offset): New macros. - (get_segment_flags, set_segment_flags, check_segment_merge): New - macros. - (is_mmapped_segment, is_extern_segment): Use get_segment_flags. - (add_segment, sys_alloc, create_mspace, create_mspace_with_base, - destroy_mspace): Use new macros. - (sys_alloc): Silence warning. - * Makefile.am (libffi_la_SOURCES): Add src/closures.c. - * Makefile.in: Rebuilt. - * src/prep_cif [FFI_CLOSURES] (ffi_prep_closure): Implement in - terms of ffi_prep_closure_loc. - * src/raw_api.c (ffi_prep_raw_closure_loc): Renamed and adjusted - from... - (ffi_prep_raw_closure): ... this. Re-implement in terms of the - renamed version. - * src/java_raw_api (ffi_prep_java_raw_closure_loc): Renamed and - adjusted from... - (ffi_prep_java_raw_closure): ... this. Re-implement in terms of - the renamed version. - * src/alpha/ffi.c (ffi_prep_closure_loc): Renamed from - (ffi_prep_closure): ... this. - * src/pa/ffi.c: Likewise. - * src/cris/ffi.c: Likewise. Adjust. - * src/frv/ffi.c: Likewise. - * src/ia64/ffi.c: Likewise. - * src/mips/ffi.c: Likewise. - * src/powerpc/ffi_darwin.c: Likewise. - * src/s390/ffi.c: Likewise. - * src/sh/ffi.c: Likewise. - * src/sh64/ffi.c: Likewise. - * src/sparc/ffi.c: Likewise. - * src/x86/ffi64.c: Likewise. - * src/x86/ffi.c: Likewise. - (FFI_INIT_TRAMPOLINE): Adjust. - (ffi_prep_raw_closure_loc): Renamed and adjusted from... - (ffi_prep_raw_closure): ... this. - * src/powerpc/ffi.c (ffi_prep_closure_loc): Renamed from - (ffi_prep_closure): ... this. - (flush_icache): Adjust. - -2007-03-07 Alexandre Oliva - - * src/dlmalloc.c: New file, imported version 2.8.3 of Doug - Lea's malloc. - -2007-03-01 Brooks Moses - - * Makefile.am: Add dummy install-pdf target. - * Makefile.in: Regenerate - -2007-02-13 Andreas Krebbel - - * src/s390/ffi.c (ffi_prep_args, ffi_prep_cif_machdep, - ffi_closure_helper_SYSV): Add long double handling. - -2007-02-02 Jakub Jelinek - - * src/powerpc/linux64.S (ffi_call_LINUX64): Move restore of r2 - immediately after bctrl instruction. - -2007-01-18 Alexandre Oliva - - * Makefile.am (all-recursive, install-recursive, - mostlyclean-recursive, clean-recursive, distclean-recursive, - maintainer-clean-recursive): Add missing targets. - * Makefile.in: Rebuilt. - -2006-12-14 Andreas Tobler - - * configure.ac: Add TARGET for x86_64-*-darwin*. - * Makefile.am (nodist_libffi_la_SOURCES): Add rules for 64-bit sources - for X86_DARWIN. - * src/x86/ffitarget.h: Set trampoline size for x86_64-*-darwin*. - * src/x86/darwin64.S: New file for x86_64-*-darwin* support. - * configure: Regenerate. - * Makefile.in: Regenerate. - * include/Makefile.in: Regenerate. - * testsuite/Makefile.in: Regenerate. - * testsuite/libffi.special/unwindtest_ffi_call.cc: New test case for - ffi_call only. - -2006-12-13 Andreas Tobler - - * aclocal.m4: Regenerate with aclocal -I .. as written in the - Makefile.am. - -2006-10-31 Geoffrey Keating - - * src/powerpc/ffi_darwin.c (darwin_adjust_aggregate_sizes): New. - (ffi_prep_cif_machdep): Call darwin_adjust_aggregate_sizes for - Darwin. - * testsuite/libffi.call/nested_struct4.c: Remove Darwin XFAIL. - * testsuite/libffi.call/nested_struct6.c: Remove Darwin XFAIL. - -2006-10-10 Paolo Bonzini - Sandro Tolaini - - * configure.ac [i*86-*-darwin*]: Set X86_DARWIN symbol and - conditional. - * configure: Regenerated. - * Makefile.am (nodist_libffi_la_SOURCES) [X86_DARWIN]: New case. - (EXTRA_DIST): Add src/x86/darwin.S. - * Makefile.in: Regenerated. - * include/Makefile.in: Regenerated. - * testsuite/Makefile.in: Regenerated. - - * src/x86/ffi.c (ffi_prep_cif_machdep) [X86_DARWIN]: Treat like - X86_WIN32, and additionally align stack to 16 bytes. - * src/x86/darwin.S: New, based on sysv.S. - * src/prep_cif.c (ffi_prep_cif) [X86_DARWIN]: Align > 8-byte structs. - -2006-09-12 David Daney - - PR libffi/23935 - * include/Makefile.am: Install both ffi.h and ffitarget.h in - $(libdir)/gcc/$(target_alias)/$(gcc_version)/include. - * aclocal.m4: Regenerated for automake 1.9.6. - * Makefile.in: Regenerated. - * include/Makefile.in: Regenerated. - * testsuite/Makefile.in: Regenerated. - -2006-08-17 Andreas Tobler - - * include/ffi_common.h (struct): Revert accidental commit. - -2006-08-15 Andreas Tobler - - * include/ffi_common.h: Remove lint directives. - * include/ffi.h.in: Likewise. - -2006-07-25 Torsten Schoenfeld - - * include/ffi.h.in (ffi_type_ulong, ffi_type_slong): Define correctly - for 32-bit architectures. - * testsuite/libffi.call/return_ul.c: New test case. - -2006-07-19 David Daney - - * testsuite/libffi.call/closure_fn6.c: Remove xfail for mips, - xfail remains for mips64. - -2006-05-23 Carlos O'Donell - - * Makefile.am: Add install-html target. Add install-html to .PHONY - * Makefile.in: Regenerate. - * aclocal.m4: Regenerate. - * include/Makefile.in: Regenerate. - * testsuite/Makefile.in: Regenerate. - -2006-05-18 John David Anglin - - * pa/ffi.c (ffi_prep_args_pa32): Load floating point arguments from - stack slot. - -2006-04-22 Andreas Tobler - - * README: Remove notice about 'Crazy Comments'. - * src/debug.c: Remove lint directives. Cleanup white spaces. - * src/java_raw_api.c: Likewise. - * src/prep_cif.c: Likewise. - * src/raw_api.c: Likewise. - * src/ffitest.c: Delete. No longer needed, all test cases migrated - to the testsuite. - * src/arm/ffi.c: Remove lint directives. - * src/m32r/ffi.c: Likewise. - * src/pa/ffi.c: Likewise. - * src/powerpc/ffi.c: Likewise. - * src/powerpc/ffi_darwin.c: Likewise. - * src/sh/ffi.c: Likewise. - * src/sh64/ffi.c: Likewise. - * src/x86/ffi.c: Likewise. - * testsuite/libffi.call/float2.c: Likewise. - * testsuite/libffi.call/promotion.c: Likewise. - * testsuite/libffi.call/struct1.c: Likewise. - -2006-04-13 Andreas Tobler - - * src/pa/hpux32.S: Correct unwind offset calculation for - ffi_closure_pa32. - * src/pa/linux.S: Likewise. - -2006-04-12 James E Wilson - - PR libgcj/26483 - * src/ia64/ffi.c (stf_spill, ldf_fill): Rewrite as macros. - (hfa_type_load): Call stf_spill. - (hfa_type_store): Call ldf_fill. - (ffi_call): Adjust calls to above routines. Add local temps for - macro result. - -2006-04-10 Matthias Klose - - * testsuite/lib/libffi-dg.exp (libffi-init): Recognize multilib - directory names containing underscores. - -2006-04-07 James E Wilson - - * testsuite/libffi.call/float4.c: New testcase. - -2006-04-05 John David Anglin - Andreas Tobler - - * Makefile.am: Add PA_HPUX port. - * Makefile.in: Regenerate. - * include/Makefile.in: Likewise. - * testsuite/Makefile.in: Likewise. - * configure.ac: Add PA_HPUX rules. - * configure: Regenerate. - * src/pa/ffitarget.h: Rename linux target to PA_LINUX. - Add PA_HPUX and PA64_HPUX. - Rename FFI_LINUX ABI to FFI_PA32 ABI. - (FFI_TRAMPOLINE_SIZE): Define for 32-bit HP-UX targets. - (FFI_TYPE_SMALL_STRUCT2): Define. - (FFI_TYPE_SMALL_STRUCT4): Likewise. - (FFI_TYPE_SMALL_STRUCT8): Likewise. - (FFI_TYPE_SMALL_STRUCT3): Redefine. - (FFI_TYPE_SMALL_STRUCT5): Likewise. - (FFI_TYPE_SMALL_STRUCT6): Likewise. - (FFI_TYPE_SMALL_STRUCT7): Likewise. - * src/pa/ffi.c (ROUND_DOWN): Delete. - (fldw, fstw, fldd, fstd): Use '__asm__'. - (ffi_struct_type): Add support for FFI_TYPE_SMALL_STRUCT2, - FFI_TYPE_SMALL_STRUCT4 and FFI_TYPE_SMALL_STRUCT8. - (ffi_prep_args_LINUX): Rename to ffi_prep_args_pa32. Update comment. - Simplify incrementing of stack slot variable. Change type of local - 'n' to unsigned int. - (ffi_size_stack_LINUX): Rename to ffi_size_stack_pa32. Handle long - double on PA_HPUX. - (ffi_prep_cif_machdep): Likewise. - (ffi_call): Likewise. - (ffi_closure_inner_LINUX): Rename to ffi_closure_inner_pa32. Change - return type to ffi_status. Simplify incrementing of stack slot - variable. Only copy floating point argument registers when PA_LINUX - is true. Reformat debug statement. - Add support for FFI_TYPE_SMALL_STRUCT2, FFI_TYPE_SMALL_STRUCT4 and - FFI_TYPE_SMALL_STRUCT8. - (ffi_closure_LINUX): Rename to ffi_closure_pa32. Add 'extern' to - declaration. - (ffi_prep_closure): Make linux trampoline conditional on PA_LINUX. - Add nops to cache flush. Add trampoline for PA_HPUX. - * src/pa/hpux32.S: New file. - * src/pa/linux.S (ffi_call_LINUX): Rename to ffi_call_pa32. Rename - ffi_prep_args_LINUX to ffi_prep_args_pa32. - Localize labels. Add support for 2, 4 and 8-byte small structs. Handle - unaligned destinations in 3, 5, 6 and 7-byte small structs. Order - argument type checks so that common argument types appear first. - (ffi_closure_LINUX): Rename to ffi_closure_pa32. Rename - ffi_closure_inner_LINUX to ffi_closure_inner_pa32. - -2006-03-24 Alan Modra - - * src/powerpc/ffitarget.h (enum ffi_abi): Add FFI_LINUX. Default - for 32-bit using IBM extended double format. Fix FFI_LAST_ABI. - * src/powerpc/ffi.c (ffi_prep_args_SYSV): Handle linux variant of - FFI_TYPE_LONGDOUBLE. - (ffi_prep_args64): Assert using IBM extended double. - (ffi_prep_cif_machdep): Don't munge FFI_TYPE_LONGDOUBLE type. - Handle FFI_LINUX FFI_TYPE_LONGDOUBLE return and args. - (ffi_call): Handle FFI_LINUX. - (ffi_closure_helper_SYSV): Non FFI_LINUX long double return needs - gpr3 return pointer as for struct return. Handle FFI_LINUX - FFI_TYPE_LONGDOUBLE return and args. Don't increment "nf" - unnecessarily. - * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Load both f1 and f2 - for FFI_TYPE_LONGDOUBLE. Move epilogue insns into case table. - Don't use r6 as pointer to results, instead use sp offset. Don't - make a special call to load lr with case table address, instead - use offset from previous call. - * src/powerpc/sysv.S (ffi_call_SYSV): Save long double return. - * src/powerpc/linux64.S (ffi_call_LINUX64): Simplify long double - return. - -2006-03-15 Kaz Kojima - - * src/sh64/ffi.c (ffi_prep_cif_machdep): Handle float arguments - passed with FP registers correctly. - (ffi_closure_helper_SYSV): Likewise. - * src/sh64/sysv.S: Likewise. - -2006-03-01 Andreas Tobler - - * testsuite/libffi.special/unwindtest.cc (closure_test_fn): Mark cif, - args and userdata unused. - (closure_test_fn1): Mark cif and userdata unused. - (main): Remove unused res. - -2006-02-28 Andreas Tobler - - * testsuite/libffi.call/call.exp: Adjust FSF address. Add test runs for - -O2, -O3, -Os and the warning flags -W -Wall. - * testsuite/libffi.special/special.exp: Likewise. - * testsuite/libffi.call/ffitest.h: Add an __UNUSED__ macro to mark - unused parameter unused for gcc or else do nothing. - * testsuite/libffi.special/ffitestcxx.h: Likewise. - * testsuite/libffi.call/cls_12byte.c (cls_struct_12byte_gn): Mark cif - and userdata unused. - * testsuite/libffi.call/cls_16byte.c (cls_struct_16byte_gn): Likewise. - * testsuite/libffi.call/cls_18byte.c (cls_struct_18byte_gn): Likewise. - * testsuite/libffi.call/cls_19byte.c (cls_struct_19byte_gn): Likewise. - * testsuite/libffi.call/cls_1_1byte.c (cls_struct_1_1byte_gn): Likewise. - * testsuite/libffi.call/cls_20byte.c (cls_struct_20byte_gn): Likewise. - * testsuite/libffi.call/cls_20byte1.c (cls_struct_20byte_gn): Likewise. - * testsuite/libffi.call/cls_24byte.c (cls_struct_24byte_gn): Likewise. - * testsuite/libffi.call/cls_2byte.c (cls_struct_2byte_gn): Likewise. - * testsuite/libffi.call/cls_3_1byte.c (cls_struct_3_1byte_gn): Likewise. - * testsuite/libffi.call/cls_3byte1.c (cls_struct_3byte_gn): Likewise. - * testsuite/libffi.call/cls_3byte2.c (cls_struct_3byte_gn1): Likewise. - * testsuite/libffi.call/cls_4_1byte.c (cls_struct_4_1byte_gn): Likewise. - * testsuite/libffi.call/cls_4byte.c (cls_struct_4byte_gn): Likewise. - * testsuite/libffi.call/cls_5_1_byte.c (cls_struct_5byte_gn): Likewise. - * testsuite/libffi.call/cls_5byte.c (cls_struct_5byte_gn): Likewise. - * testsuite/libffi.call/cls_64byte.c (cls_struct_64byte_gn): Likewise. - * testsuite/libffi.call/cls_6_1_byte.c (cls_struct_6byte_gn): Likewise. - * testsuite/libffi.call/cls_6byte.c (cls_struct_6byte_gn): Likewise. - * testsuite/libffi.call/cls_7_1_byte.c (cls_struct_7byte_gn): Likewise. - * testsuite/libffi.call/cls_7byte.c (cls_struct_7byte_gn): Likewise. - * testsuite/libffi.call/cls_8byte.c (cls_struct_8byte_gn): Likewise. - * testsuite/libffi.call/cls_9byte1.c (cls_struct_9byte_gn): Likewise. - * testsuite/libffi.call/cls_9byte2.c (cls_struct_9byte_gn): Likewise. - * testsuite/libffi.call/cls_align_double.c (cls_struct_align_gn): - Likewise. - * testsuite/libffi.call/cls_align_float.c (cls_struct_align_gn): - Likewise. - * testsuite/libffi.call/cls_align_longdouble.c (cls_struct_align_gn): - Likewise. - * testsuite/libffi.call/cls_align_pointer.c (cls_struct_align_fn): Cast - void* to avoid compiler warning. - (main): Likewise. - (cls_struct_align_gn): Mark cif and userdata unused. - * testsuite/libffi.call/cls_align_sint16.c (cls_struct_align_gn): - Likewise. - * testsuite/libffi.call/cls_align_sint32.c (cls_struct_align_gn): - Likewise. - * testsuite/libffi.call/cls_align_sint64.c (cls_struct_align_gn): - Likewise. - * testsuite/libffi.call/cls_align_uint16.c (cls_struct_align_gn): - Likewise. - * testsuite/libffi.call/cls_align_uint32.c (cls_struct_align_gn): - Likewise. - * testsuite/libffi.call/cls_double.c (cls_ret_double_fn): Likewise. - * testsuite/libffi.call/cls_float.c (cls_ret_float_fn): Likewise. - * testsuite/libffi.call/cls_multi_schar.c (test_func_gn): Mark cif and - data unused. - (main): Cast res_call to silence gcc. - * testsuite/libffi.call/cls_multi_sshort.c (test_func_gn): Mark cif and - data unused. - (main): Cast res_call to silence gcc. - * testsuite/libffi.call/cls_multi_sshortchar.c (test_func_gn): Mark cif - and data unused. - (main): Cast res_call to silence gcc. - * testsuite/libffi.call/cls_multi_uchar.c (test_func_gn): Mark cif and - data unused. - (main): Cast res_call to silence gcc. - * testsuite/libffi.call/cls_multi_ushort.c (test_func_gn): Mark cif and - data unused. - (main): Cast res_call to silence gcc. - * testsuite/libffi.call/cls_multi_ushortchar.c (test_func_gn): Mark cif - and data unused. - (main): Cast res_call to silence gcc. - * testsuite/libffi.call/cls_schar.c (cls_ret_schar_fn): Mark cif and - userdata unused. - (cls_ret_schar_fn): Cast printf parameter to silence gcc. - * testsuite/libffi.call/cls_sint.c (cls_ret_sint_fn): Mark cif and - userdata unused. - (cls_ret_sint_fn): Cast printf parameter to silence gcc. - * testsuite/libffi.call/cls_sshort.c (cls_ret_sshort_fn): Mark cif and - userdata unused. - (cls_ret_sshort_fn): Cast printf parameter to silence gcc. - * testsuite/libffi.call/cls_uchar.c (cls_ret_uchar_fn): Mark cif and - userdata unused. - (cls_ret_uchar_fn): Cast printf parameter to silence gcc. - * testsuite/libffi.call/cls_uint.c (cls_ret_uint_fn): Mark cif and - userdata unused. - (cls_ret_uint_fn): Cast printf parameter to silence gcc. - * testsuite/libffi.call/cls_ulonglong.c (cls_ret_ulonglong_fn): Mark cif - and userdata unused. - * testsuite/libffi.call/cls_ushort.c (cls_ret_ushort_fn): Mark cif and - userdata unused. - (cls_ret_ushort_fn): Cast printf parameter to silence gcc. - * testsuite/libffi.call/float.c (floating): Remove unused parameter e. - * testsuite/libffi.call/float1.c (main): Remove unused variable i. - Cleanup white spaces. - * testsuite/libffi.call/negint.c (checking): Remove unused variable i. - * testsuite/libffi.call/nested_struct.c (cls_struct_combined_gn): Mark - cif and userdata unused. - * testsuite/libffi.call/nested_struct1.c (cls_struct_combined_gn): - Likewise. - * testsuite/libffi.call/nested_struct10.c (B_gn): Likewise. - * testsuite/libffi.call/nested_struct2.c (B_fn): Adjust printf - formatters to silence gcc. - (B_gn): Mark cif and userdata unused. - * testsuite/libffi.call/nested_struct3.c (B_gn): Mark cif and userdata - unused. - * testsuite/libffi.call/nested_struct4.c: Mention related PR. - (B_gn): Mark cif and userdata unused. - * testsuite/libffi.call/nested_struct5.c (B_gn): Mark cif and userdata - unused. - * testsuite/libffi.call/nested_struct6.c: Mention related PR. - (B_gn): Mark cif and userdata unused. - * testsuite/libffi.call/nested_struct7.c (B_gn): Mark cif and userdata - unused. - * testsuite/libffi.call/nested_struct8.c (B_gn): Likewise. - * testsuite/libffi.call/nested_struct9.c (B_gn): Likewise. - * testsuite/libffi.call/problem1.c (stub): Likewise. - * testsuite/libffi.call/pyobjc-tc.c (main): Cast the result to silence - gcc. - * testsuite/libffi.call/return_fl2.c (return_fl): Add the note mentioned - in the last commit for this test case in the test case itself. - * testsuite/libffi.call/closure_fn0.c (closure_test_fn0): Mark cif as - unused. - * testsuite/libffi.call/closure_fn1.c (closure_test_fn1): Likewise. - * testsuite/libffi.call/closure_fn2.c (closure_test_fn2): Likewise. - * testsuite/libffi.call/closure_fn3.c (closure_test_fn3): Likewise. - * testsuite/libffi.call/closure_fn4.c (closure_test_fn0): Likewise. - * testsuite/libffi.call/closure_fn5.c (closure_test_fn5): Likewise. - * testsuite/libffi.call/closure_fn6.c (closure_test_fn0): Likewise. - -2006-02-22 Kaz Kojima - - * src/sh/sysv.S: Fix register numbers in the FDE for - ffi_closure_SYSV. - -2006-02-20 Andreas Tobler - - * testsuite/libffi.call/return_fl2.c (return_fl): Remove static - declaration to avoid a false negative on ix86. See PR323. - -2006-02-18 Kaz Kojima - - * src/sh/ffi.c (ffi_closure_helper_SYSV): Remove unused variable - and cast integer to void * if needed. Update the pointer to - the FP register saved area correctly. - -2006-02-17 Andreas Tobler - - * testsuite/libffi.call/nested_struct6.c: XFAIL this test until PR25630 - is fixed. - * testsuite/libffi.call/nested_struct4.c: Likewise. - -2006-02-16 Andreas Tobler - - * testsuite/libffi.call/return_dbl.c: New test case. - * testsuite/libffi.call/return_dbl1.c: Likewise. - * testsuite/libffi.call/return_dbl2.c: Likewise. - * testsuite/libffi.call/return_fl.c: Likewise. - * testsuite/libffi.call/return_fl1.c: Likewise. - * testsuite/libffi.call/return_fl2.c: Likewise. - * testsuite/libffi.call/return_fl3.c: Likewise. - * testsuite/libffi.call/closure_fn6.c: Likewise. - - * testsuite/libffi.call/nested_struct2.c: Remove ffi_type_mylong - definition. - * testsuite/libffi.call/ffitest.h: Add ffi_type_mylong definition - here to be used by other test cases too. - - * testsuite/libffi.call/nested_struct10.c: New test case. - * testsuite/libffi.call/nested_struct9.c: Likewise. - * testsuite/libffi.call/nested_struct8.c: Likewise. - * testsuite/libffi.call/nested_struct7.c: Likewise. - * testsuite/libffi.call/nested_struct6.c: Likewise. - * testsuite/libffi.call/nested_struct5.c: Likewise. - * testsuite/libffi.call/nested_struct4.c: Likewise. - -2006-01-21 Andreas Tobler - - * configure.ac: Enable libffi for sparc64-*-freebsd*. - * configure: Rebuilt. - -2006-01-18 Jakub Jelinek - - * src/powerpc/sysv.S (smst_two_register): Don't call __ashldi3, - instead do the shifting inline. - * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Don't compute %r5 - shift count unconditionally. Simplify load sequences for 1, 2, 3, 4 - and 8 byte structs, for the remaining struct sizes don't call - __lshrdi3, instead do the shifting inline. - -2005-12-07 Thiemo Seufer - - * src/mips/ffitarget.h: Remove obsolete sgidefs.h include. Add - missing parentheses. - * src/mips/o32.S (ffi_call_O32): Code formatting. Define - and use A3_OFF, FP_OFF, RA_OFF. Micro-optimizations. - (ffi_closure_O32): Likewise, but with newly defined A3_OFF2, - A2_OFF2, A1_OFF2, A0_OFF2, RA_OFF2, FP_OFF2, S0_OFF2, GP_OFF2, - V1_OFF2, V0_OFF2, FA_1_1_OFF2, FA_1_0_OFF2, FA_0_1_OFF2, - FA_0_0_OFF2. - * src/mips/ffi.c (ffi_prep_args): Code formatting. Fix - endianness bugs. - (ffi_prep_closure): Improve trampoline instruction scheduling. - (ffi_closure_mips_inner_O32): Fix endianness bugs. - -2005-12-03 Alan Modra - - * src/powerpc/ffi.c: Formatting. - (ffi_prep_args_SYSV): Avoid possible aliasing problems by using unions. - (ffi_prep_args64): Likewise. - -2005-09-30 Geoffrey Keating - - * testsuite/lib/libffi-dg.exp (libffi_target_compile): For - darwin, use -shared-libgcc not -lgcc_s, and explain why. - -2005-09-26 Tom Tromey - - * testsuite/libffi.call/float1.c (value_type): New typedef. - (CANARY): New define. - (main): Check for result buffer overflow. - * src/powerpc/linux64.S: Handle linux64 long double returns. - * src/powerpc/ffi.c (FLAG_RETURNS_128BITS): New constant. - (ffi_prep_cif_machdep): Handle linux64 long double returns. - -2005-08-25 Alan Modra - - PR target/23404 - * src/powerpc/ffi.c (ffi_prep_args_SYSV): Correct placement of stack - homed fp args. - (ffi_status ffi_prep_cif_machdep): Correct stack sizing for same. - -2005-08-11 Jakub Jelinek - - * configure.ac (HAVE_HIDDEN_VISIBILITY_ATTRIBUTE): New test. - (AH_BOTTOM): Add FFI_HIDDEN definition. - * configure: Rebuilt. - * fficonfig.h.in: Rebuilt. - * src/powerpc/ffi.c (hidden): Remove. - (ffi_closure_LINUX64, ffi_prep_args64, ffi_call_LINUX64, - ffi_closure_helper_LINUX64): Use FFI_HIDDEN instead of hidden. - * src/powerpc/linux64_closure.S (ffi_closure_LINUX64, - .ffi_closure_LINUX64): Use FFI_HIDDEN instead of .hidden. - * src/x86/ffi.c (ffi_closure_SYSV, ffi_closure_raw_SYSV): Remove, - add FFI_HIDDEN to its prototype. - (ffi_closure_SYSV_inner): New. - * src/x86/sysv.S (ffi_closure_SYSV, ffi_closure_raw_SYSV): New. - * src/x86/win32.S (ffi_closure_SYSV, ffi_closure_raw_SYSV): New. - -2005-08-10 Alfred M. Szmidt - - PR libffi/21819: - * configure: Rebuilt. - * configure.ac: Handle i*86-*-gnu*. - -2005-08-09 Jakub Jelinek - - * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Use - DW_CFA_offset_extended_sf rather than - DW_CFA_GNU_negative_offset_extended. - * src/powerpc/sysv.S (ffi_call_SYSV): Likewise. - -2005-07-22 SUGIOKA Toshinobu - - * src/sh/sysv.S (ffi_call_SYSV): Stop argument popping correctly - on sh3. - (ffi_closure_SYSV): Change the stack layout for sh3 struct argument. - * src/sh/ffi.c (ffi_prep_args): Fix sh3 argument copy, when it is - partially on register. - (ffi_closure_helper_SYSV): Likewise. - (ffi_prep_cif_machdep): Don't set too many cif->flags. - -2005-07-20 Kaz Kojima - - * src/sh/ffi.c (ffi_call): Handle small structures correctly. - Remove empty line. - * src/sh64/ffi.c (simple_type): Remove. - (return_type): Handle small structures correctly. - (ffi_prep_args): Likewise. - (ffi_call): Likewise. - (ffi_closure_helper_SYSV): Likewise. - * src/sh64/sysv.S (ffi_call_SYSV): Handle 1, 2 and 4-byte return. - Emit position independent code if PIC and remove wrong datalabel - prefixes from EH data. - -2005-07-19 Andreas Tobler - - * Makefile.am (nodist_libffi_la_SOURCES): Add POWERPC_FREEBSD. - * Makefile.in: Regenerate. - * include/Makefile.in: Likewise. - * testsuite/Makefile.in: Likewise. - * configure.ac: Add POWERPC_FREEBSD rules. - * configure: Regenerate. - * src/powerpc/ffitarget.h: Add POWERPC_FREEBSD rules. - (FFI_SYSV_TYPE_SMALL_STRUCT): Define. - * src/powerpc/ffi.c: Add flags to handle small structure returns - in ffi_call_SYSV. - (ffi_prep_cif_machdep): Handle small structures for SYSV 4 ABI. - Aka FFI_SYSV. - (ffi_closure_helper_SYSV): Likewise. - * src/powerpc/ppc_closure.S: Add return types for small structures. - * src/powerpc/sysv.S: Add bits to handle small structures for - final SYSV 4 ABI. - -2005-07-10 Andreas Tobler - - * testsuite/libffi.call/cls_5_1_byte.c: New test file. - * testsuite/libffi.call/cls_6_1_byte.c: Likewise. - * testsuite/libffi.call/cls_7_1_byte.c: Likewise. - -2005-07-05 Randolph Chung - - * src/pa/ffi.c (ffi_struct_type): Rename FFI_TYPE_SMALL_STRUCT1 - as FFI_TYPE_SMALL_STRUCT3. Break out handling for 5-7 byte - structures. Kill compilation warnings. - (ffi_closure_inner_LINUX): Print return values as hex in debug - message. Rename FFI_TYPE_SMALL_STRUCT1 as FFI_TYPE_SMALL_STRUCT3. - Properly handle 5-7 byte structure returns. - * src/pa/ffitarget.h (FFI_TYPE_SMALL_STRUCT1) - (FFI_TYPE_SMALL_STRUCT2): Remove. - (FFI_TYPE_SMALL_STRUCT3, FFI_TYPE_SMALL_STRUCT5) - (FFI_TYPE_SMALL_STRUCT6, FFI_TYPE_SMALL_STRUCT7): Define. - * src/pa/linux.S: Mark source file as using PA1.1 assembly. - (checksmst1, checksmst2): Remove. - (checksmst3): Optimize handling of 3-byte struct returns. - (checksmst567): Properly handle 5-7 byte struct returns. - -2005-06-15 Rainer Orth - - PR libgcj/21943 - * src/mips/n32.S: Enforce PIC code. - * src/mips/o32.S: Likewise. - -2005-06-15 Rainer Orth - - * configure.ac: Treat i*86-*-solaris2.10 and up as X86_64. - * configure: Regenerate. - -2005-06-01 Alan Modra - - * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Don't use JUMPTARGET - to call ffi_closure_helper_SYSV. Append @local instead. - * src/powerpc/sysv.S (ffi_call_SYSV): Likewise for ffi_prep_args_SYSV. - -2005-05-17 Kelley Cook - - * configure.ac: Use AC_C_BIGENDIAN instead of AC_C_BIGENDIAN_CROSS. - Use AC_CHECK_SIZEOF instead of AC_COMPILE_CHECK_SIZEOF. - * Makefile.am (ACLOCAL_AMFLAGS): Remove -I ../config. - * aclocal.m4, configure, fficonfig.h.in, Makefile.in, - include/Makefile.in, testsuite/Makefile.in: Regenerate. - -2005-05-09 Mike Stump - - * configure: Regenerate. - -2005-05-08 Richard Henderson - - PR libffi/21285 - * src/alpha/osf.S: Update unwind into to match code. - -2005-05-04 Andreas Degert - Richard Henderson - - * src/x86/ffi64.c (ffi_prep_cif_machdep): Save sse-used flag in - bit 11 of flags. - (ffi_call): Mask return type field. Pass ssecount to ffi_call_unix64. - (ffi_prep_closure): Set carry bit if sse-used flag set. - * src/x86/unix64.S (ffi_call_unix64): Add ssecount argument. - Only load sse registers if ssecount non-zero. - (ffi_closure_unix64): Only save sse registers if carry set on entry. - -2005-04-29 Ralf Corsepius - - * configure.ac: Add i*86-*-rtems*, sparc*-*-rtems*, - powerpc-*rtems*, arm*-*-rtems*, sh-*-rtems*. - * configure: Regenerate. - -2005-04-20 Hans-Peter Nilsson - - * testsuite/lib/libffi-dg.exp (libffi-dg-test-1): In regsub use, - have Tcl8.3-compatible intermediate variable. - -2005-04-18 Simon Posnjak - Hans-Peter Nilsson - - * Makefile.am: Add CRIS support. - * configure.ac: Likewise. - * Makefile.in, configure, testsuite/Makefile.in, - include/Makefile.in: Regenerate. - * src/cris: New directory. - * src/cris/ffi.c, src/cris/sysv.S, src/cris/ffitarget.h: New files. - * src/prep_cif.c (ffi_prep_cif): Wrap in #ifndef __CRIS__. - - * testsuite/lib/libffi-dg.exp (libffi-dg-test-1): Replace \n with - \r?\n in output tests. - -2005-04-12 Mike Stump - - * configure: Regenerate. - -2005-03-30 Hans Boehm - - * src/ia64/ffitarget.h (ffi_arg): Use long long instead of DI. - -2005-03-30 Steve Ellcey - - * src/ia64/ffitarget.h (ffi_arg) ADD DI attribute. - (ffi_sarg) Ditto. - * src/ia64/unix.S (ffi_closure_unix): Extend gp - to 64 bits in ILP32 mode. - Load 64 bits even for short data. - -2005-03-23 Mike Stump - - * src/powerpc/darwin.S: Update for -m64 multilib. - * src/powerpc/darwin_closure.S: Likewise. - -2005-03-21 Zack Weinberg - - * configure.ac: Do not invoke TL_AC_GCC_VERSION. - Do not set tool_include_dir. - * aclocal.m4, configure, Makefile.in, testsuite/Makefile.in: - Regenerate. - * include/Makefile.am: Set gcc_version and toollibffidir. - * include/Makefile.in: Regenerate. - -2005-02-22 Andrew Haley - - * src/powerpc/ffi.c (ffi_prep_cif_machdep): Bump alignment to - odd-numbered register pairs for 64-bit integer types. - -2005-02-23 Andreas Tobler - - PR libffi/20104 - * testsuite/libffi.call/return_ll1.c: New test case. - -2005-02-11 Janis Johnson - - * testsuite/libffi.call/cls_align_longdouble.c: Remove dg-options. - * testsuite/libffi.call/float.c: Ditto. - * testsuite/libffi.call/float2.c: Ditto. - * testsuite/libffi.call/float3.c: Ditto. - -2005-02-08 Andreas Tobler - - * src/frv/ffitarget.h: Remove PPC stuff which does not belong to frv. - -2005-01-12 Eric Botcazou - - * testsuite/libffi.special/special.exp (cxx_options): Add - -shared-libgcc. - -2004-12-31 Richard Henderson - - * src/types.c (FFI_AGGREGATE_TYPEDEF): Remove. - (FFI_TYPEDEF): Rename from FFI_INTEGRAL_TYPEDEF. Replace size and - offset parameters with a type parameter; deduce size and structure - alignment. Update all users. - -2004-12-31 Richard Henderson - - * src/types.c (FFI_TYPE_POINTER): Define with sizeof. - (FFI_TYPE_LONGDOUBLE): Fix for ia64. - * src/ia64/ffitarget.h (struct ffi_ia64_trampoline_struct): Move - into ffi_prep_closure. - * src/ia64/ia64_flags.h, src/ia64/ffi.c, src/ia64/unix.S: Rewrite - from scratch. - -2004-12-27 Richard Henderson - - * src/x86/unix64.S: Fix typo in unwind info. - -2004-12-25 Richard Henderson - - * src/x86/ffi64.c (struct register_args): Rename from stackLayout. - (enum x86_64_reg_class): Add X86_64_COMPLEX_X87_CLASS. - (merge_classes): Check for it. - (SSE_CLASS_P): New. - (classify_argument): Pass byte_offset by value; perform all updates - inside struct case. - (examine_argument): Add classes argument; handle - X86_64_COMPLEX_X87_CLASS. - (ffi_prep_args): Merge into ... - (ffi_call): ... here. Share stack frame with ffi_call_unix64. - (ffi_prep_cif_machdep): Setup cif->flags for proper structure return. - (ffi_fill_return_value): Remove. - (ffi_prep_closure): Remove dead assert. - (ffi_closure_unix64_inner): Rename from ffi_closure_UNIX64_inner. - Rewrite to use struct register_args instead of va_list. Create - flags for handling structure returns. - * src/x86/unix64.S: Remove dead strings. - (ffi_call_unix64): Rename from ffi_call_UNIX64. Rewrite to share - stack frame with ffi_call. Handle structure returns properly. - (float2sse, floatfloat2sse, double2sse): Remove. - (sse2float, sse2double, sse2floatfloat): Remove. - (ffi_closure_unix64): Rename from ffi_closure_UNIX64. Rewrite - to handle structure returns properly. - -2004-12-08 David Edelsohn - - * Makefile.am (AM_MAKEFLAGS): Remove duplicate LIBCFLAGS and - PICFLAG. - * Makefile.in: Regenerated. - -2004-12-02 Richard Sandiford - - * configure.ac: Use TL_AC_GCC_VERSION to set gcc_version. - * configure, aclocal.m4, Makefile.in: Regenerate. - * include/Makefile.in, testsuite/Makefile.in: Regenerate. - -2004-11-29 Kelley Cook - - * configure: Regenerate for libtool change. - -2004-11-25 Kelley Cook - - * configure: Regenerate for libtool reversion. - -2004-11-24 Kelley Cook - - * configure: Regenerate for libtool change. - -2004-11-23 John David Anglin - - * testsuite/lib/libffi-dg.exp: Use new procs in target-libpath.exp. - -2004-11-23 Richard Sandiford - - * src/mips/o32.S (ffi_call_O32, ffi_closure_O32): Use jalr instead - of jal. Use an absolute encoding for the frame information. - -2004-11-23 Kelley Cook - - * Makefile.am: Remove no-dependencies. Add ACLOCAL_AMFLAGS. - * acinclude.m4: Delete logic for sincludes. - * aclocal.m4, Makefile.in, configure: Regenerate. - * include/Makefile: Likewise. - * testsuite/Makefile: Likewise. - -2004-11-22 Eric Botcazou - - * src/sparc/ffi.c (ffi_prep_closure): Align doubles and 64-bit integers - on a 8-byte boundary. - * src/sparc/v8.S (ffi_closure_v8): Reserve frame space for arguments. - -2004-10-27 Richard Earnshaw - - * src/arm/ffi.c (ffi_prep_cif_machdep): Handle functions that return - long long values. Round stack allocation to a multiple of 8 bytes - for ATPCS compatibility. - * src/arm/sysv.S (ffi_call_SYSV): Rework to avoid use of APCS register - names. Handle returning long long types. Add Thumb and interworking - support. Improve soft-float code. - -2004-10-27 Richard Earnshaw - - * testsuite/lib/libffi-db.exp (load_gcc_lib): New function. - (libffi_exit): New function. - (libffi_init): Build the testglue wrapper if needed. - -2004-10-25 Eric Botcazou - - PR other/18138 - * testsuite/lib/libffi-dg.exp: Accept more than one multilib libgcc. - -2004-10-25 Kazuhiro Inaoka - - * src/m32r/libffitarget.h (FFI_CLOSURES): Set to 0. - -2004-10-20 Kaz Kojima - - * src/sh/sysv.S (ffi_call_SYSV): Don't align for double data. - * testsuite/libffi.call/float3.c: New test case. - -2004-10-18 Kaz Kojima - - * src/sh/ffi.c (ffi_prep_closure): Set T bit in trampoline for - the function returning a structure pointed with R2. - * src/sh/sysv.S (ffi_closure_SYSV): Use R2 as the pointer to - the structure return value if T bit set. Emit position - independent code and EH data if PIC. - -2004-10-13 Kazuhiro Inaoka - - * Makefile.am: Add m32r support. - * configure.ac: Likewise. - * Makefile.in: Regenerate. - * confiugre: Regenerate. - * src/types.c: Add m32r port to FFI_INTERNAL_TYPEDEF - (uint64, sint64, double, longdouble) - * src/m32r: New directory. - * src/m32r/ffi.c: New file. - * src/m32r/sysv.S: Likewise. - * src/m32r/ffitarget.h: Likewise. - -2004-10-02 Kaz Kojima - - * testsuite/libffi.call/negint.c: New test case. - -2004-09-14 H.J. Lu - - PR libgcj/17465 - * testsuite/lib/libffi-dg.exp: Don't use global ld_library_path. - Set up LD_LIBRARY_PATH, SHLIB_PATH, LD_LIBRARYN32_PATH, - LD_LIBRARY64_PATH, LD_LIBRARY_PATH_32, LD_LIBRARY_PATH_64 and - DYLD_LIBRARY_PATH. - -2004-09-05 Andreas Tobler - - * testsuite/libffi.call/many_win32.c: Remove whitespaces. - * testsuite/libffi.call/promotion.c: Likewise. - * testsuite/libffi.call/return_ll.c: Remove unused var. Cleanup - whitespaces. - * testsuite/libffi.call/return_sc.c: Likewise. - * testsuite/libffi.call/return_uc.c: Likewise. - -2004-09-05 Andreas Tobler - - * src/powerpc/darwin.S: Fix comments and identation. - * src/powerpc/darwin_closure.S: Likewise. - -2004-09-02 Andreas Tobler - - * src/powerpc/ffi_darwin.c: Add flag for longdouble return values. - (ffi_prep_args): Handle longdouble arguments. - (ffi_prep_cif_machdep): Set flags for longdouble. Calculate space for - longdouble. - (ffi_closure_helper_DARWIN): Add closure handling for longdouble. - * src/powerpc/darwin.S (_ffi_call_DARWIN): Add handling of longdouble - values. - * src/powerpc/darwin_closure.S (_ffi_closure_ASM): Likewise. - * src/types.c: Defined longdouble size and alignment for darwin. - -2004-09-02 Andreas Tobler - - * src/powerpc/aix.S: Remove whitespaces. - * src/powerpc/aix_closure.S: Likewise. - * src/powerpc/asm.h: Likewise. - * src/powerpc/ffi.c: Likewise. - * src/powerpc/ffitarget.h: Likewise. - * src/powerpc/linux64.S: Likewise. - * src/powerpc/linux64_closure.S: Likewise. - * src/powerpc/ppc_closure.S: Likewise. - * src/powerpc/sysv.S: Likewise. - -2004-08-30 Anthony Green - - * Makefile.am: Add frv support. - * Makefile.in, testsuite/Makefile.in: Rebuilt. - * configure.ac: Read configure.host. - * configure.in: Read configure.host. - * configure.host: New file. frv-elf needs libgloss. - * include/ffi.h.in: Force ffi_closure to have a nice big (8) - alignment. This is needed to frv and shouldn't harm the others. - * include/ffi_common.h (ALIGN_DOWN): New macro. - * src/frv/ffi.c, src/frv/ffitarget.h, src/frv/eabi.S: New files. - -2004-08-24 David Daney - - * testsuite/libffi.call/closure_fn0.c: Xfail mips64* instead of mips*. - * testsuite/libffi.call/closure_fn1.c: Likewise. - * testsuite/libffi.call/closure_fn2.c Likewise. - * testsuite/libffi.call/closure_fn3.c: Likewise. - * testsuite/libffi.call/closure_fn4.c: Likewise. - * testsuite/libffi.call/closure_fn5.c: Likewise. - * testsuite/libffi.call/cls_18byte.c: Likewise. - * testsuite/libffi.call/cls_19byte.c: Likewise. - * testsuite/libffi.call/cls_1_1byte.c: Likewise. - * testsuite/libffi.call/cls_20byte.c: Likewise. - * testsuite/libffi.call/cls_20byte1.c: Likewise. - * testsuite/libffi.call/cls_24byte.c: Likewise. - * testsuite/libffi.call/cls_2byte.c: Likewise. - * testsuite/libffi.call/cls_3_1byte.c: Likewise. - * testsuite/libffi.call/cls_3byte1.c: Likewise. - * testsuite/libffi.call/cls_3byte2.c: Likewise. - * testsuite/libffi.call/cls_4_1byte.c: Likewise. - * testsuite/libffi.call/cls_4byte.c: Likewise. - * testsuite/libffi.call/cls_64byte.c: Likewise. - * testsuite/libffi.call/cls_6byte.c: Likewise. - * testsuite/libffi.call/cls_7byte.c: Likewise. - * testsuite/libffi.call/cls_8byte.c: Likewise. - * testsuite/libffi.call/cls_9byte1.c: Likewise. - * testsuite/libffi.call/cls_9byte2.c: Likewise. - * testsuite/libffi.call/cls_align_double.c: Likewise. - * testsuite/libffi.call/cls_align_float.c: Likewise. - * testsuite/libffi.call/cls_align_longdouble.c: Likewise. - * testsuite/libffi.call/cls_align_pointer.c: Likewise. - * testsuite/libffi.call/cls_align_sint16.c: Likewise. - * testsuite/libffi.call/cls_align_sint32.c: Likewise. - * testsuite/libffi.call/cls_align_sint64.c: Likewise. - * testsuite/libffi.call/cls_align_uint16.c: Likewise. - * testsuite/libffi.call/cls_align_uint32.c: Likewise. - * testsuite/libffi.call/cls_align_uint64.c: Likewise. - * testsuite/libffi.call/cls_double.c: Likewise. - * testsuite/libffi.call/cls_float.c: Likewise. - * testsuite/libffi.call/cls_multi_schar.c: Likewise. - * testsuite/libffi.call/cls_multi_sshort.c: Likewise. - * testsuite/libffi.call/cls_multi_sshortchar.c: Likewise. - * testsuite/libffi.call/cls_multi_uchar.c: Likewise. - * testsuite/libffi.call/cls_multi_ushort.c: Likewise. - * testsuite/libffi.call/cls_multi_ushortchar.c: Likewise. - * testsuite/libffi.call/cls_schar.c: Likewise. - * testsuite/libffi.call/cls_sint.c: Likewise. - * testsuite/libffi.call/cls_sshort.c: Likewise. - * testsuite/libffi.call/cls_uchar.c: Likewise. - * testsuite/libffi.call/cls_uint.c: Likewise. - * testsuite/libffi.call/cls_ulonglong.c: Likewise. - * testsuite/libffi.call/cls_ushort.c: Likewise. - * testsuite/libffi.call/nested_struct.c: Likewise. - * testsuite/libffi.call/nested_struct1.c: Likewise. - * testsuite/libffi.call/nested_struct2.c: Likewise. - * testsuite/libffi.call/nested_struct3.c: Likewise. - * testsuite/libffi.call/problem1.c: Likewise. - * testsuite/libffi.special/unwindtest.cc: Likewise. - * testsuite/libffi.call/cls_12byte.c: Likewise and set return value - to zero. - * testsuite/libffi.call/cls_16byte.c: Likewise. - * testsuite/libffi.call/cls_5byte.c: Likewise. - -2004-08-23 David Daney - - PR libgcj/13141 - * src/mips/ffitarget.h (FFI_O32_SOFT_FLOAT): New ABI. - * src/mips/ffi.c (ffi_prep_args): Fix alignment calculation. - (ffi_prep_cif_machdep): Handle FFI_O32_SOFT_FLOAT floating point - parameters and return types. - (ffi_call): Handle FFI_O32_SOFT_FLOAT ABI. - (ffi_prep_closure): Ditto. - (ffi_closure_mips_inner_O32): Handle FFI_O32_SOFT_FLOAT ABI, fix - alignment calculations. - * src/mips/o32.S (ffi_closure_O32): Don't use floating point - instructions if FFI_O32_SOFT_FLOAT, make stack frame ABI compliant. - -2004-08-14 Casey Marshall - - * src/mips/ffi.c (ffi_pref_cif_machdep): set `cif->flags' to - contain `FFI_TYPE_UINT64' as return type for any 64-bit - integer (O32 ABI only). - (ffi_prep_closure): new function. - (ffi_closure_mips_inner_O32): new function. - * src/mips/ffitarget.h: Define `FFI_CLOSURES' and - `FFI_TRAMPOLINE_SIZE' appropriately if the ABI is o32. - * src/mips/o32.S (ffi_call_O32): add labels for .eh_frame. Return - 64 bit integers correctly. - (ffi_closure_O32): new function. - Added DWARF-2 unwind info for both functions. - -2004-08-10 Andrew Haley - - * src/x86/ffi64.c (ffi_prep_args ): 8-align all stack arguments. - -2004-08-01 Robert Millan - - * configure.ac: Detect knetbsd-gnu and kfreebsd-gnu. - * configure: Regenerate. - -2004-07-30 Maciej W. Rozycki - - * acinclude.m4 (AC_FUNC_MMAP_BLACKLIST): Check for - and mmap() explicitly instead of relying on preset autoconf cache - variables. - * aclocal.m4: Regenerate. - * configure: Regenerate. - -2004-07-11 Ulrich Weigand - - * src/s390/ffi.c (ffi_prep_args): Fix C aliasing violation. - (ffi_check_float_struct): Remove unused prototype. - -2004-06-30 Geoffrey Keating - - * src/powerpc/ffi_darwin.c (flush_icache): ';' is a comment - character on Darwin, use '\n\t' instead. - -2004-06-26 Matthias Klose - - * libtool-version: Fix typo in revision/age. - -2004-06-17 Matthias Klose - - * libtool-version: New. - * Makefile.am (libffi_la_LDFLAGS): Use -version-info for soname. - * Makefile.in: Regenerate. - -2004-06-15 Paolo Bonzini - - * Makefile.am: Remove useless multilib rules. - * Makefile.in: Regenerate. - * aclocal.m4: Regenerate with automake 1.8.5. - * configure.ac: Remove useless multilib configury. - * configure: Regenerate. - -2004-06-15 Paolo Bonzini - - * .cvsignore: New file. - -2004-06-10 Jakub Jelinek - - * src/ia64/unix.S (ffi_call_unix): Insert group barrier break - fp_done. - (ffi_closure_UNIX): Fix f14/f15 adjustment if FLOAT_SZ is ever - changed from 8. - -2004-06-06 Sean McNeil - - * configure.ac: Add x86_64-*-freebsd* support. - * configure: Regenerate. - -2004-04-26 Joe Buck - - Bug 15093 - * configure.ac: Test for existence of mmap and sys/mman.h before - checking blacklist. Fix suggested by Jim Wilson. - * configure: Regenerate. - -2004-04-26 Matt Austern - - * src/powerpc/darwin.S: Go through a non-lazy pointer for initial - FDE location. - * src/powerpc/darwin_closure.S: Likewise. - -2004-04-24 Andreas Tobler - - * testsuite/libffi.call/cls_multi_schar.c (main): Fix initialization - error. Reported by Thomas Heller . - * testsuite/libffi.call/cls_multi_sshort.c (main): Likewise. - * testsuite/libffi.call/cls_multi_ushort.c (main): Likewise. - -2004-03-20 Matthias Klose - - * src/pa/linux.S: Fix typo. - -2004-03-19 Matthias Klose - - * Makefile.am: Update. - * Makefile.in: Regenerate. - * src/pa/ffi.h.in: Remove. - * src/pa/ffitarget.h: New file. - -2004-02-10 Randolph Chung - - * Makefile.am: Add PA support. - * Makefile.in: Regenerate. - * include/Makefile.in: Regenerate. - * configure.ac: Add PA target. - * configure: Regenerate. - * src/pa/ffi.c: New file. - * src/pa/ffi.h.in: Add PA support. - * src/pa/linux.S: New file. - * prep_cif.c: Add PA support. - -2004-03-16 Hosaka Yuji - - * src/types.c: Fix alignment size of X86_WIN32 case int64 and - double. - * src/x86/ffi.c (ffi_prep_args): Replace ecif->cif->rtype->type - with ecif->cif->flags. - (ffi_call, ffi_prep_incoming_args_SYSV): Replace cif->rtype->type - with cif->flags. - (ffi_prep_cif_machdep): Add X86_WIN32 struct case. - (ffi_closure_SYSV): Add 1 or 2-bytes struct case for X86_WIN32. - * src/x86/win32.S (retstruct1b, retstruct2b, sc_retstruct1b, - sc_retstruct2b): Add for 1 or 2-bytes struct case. - -2004-03-15 Kelley Cook - - * configure.in: Rename file to ... - * configure.ac: ... this. - * fficonfig.h.in: Regenerate. - * Makefile.in: Regenerate. - * include/Makefile.in: Regenerate. - * testsuite/Makefile.in: Regenerate. - -2004-03-12 Matt Austern - - * src/powerpc/darwin.S: Fix EH information so it corresponds to - changes in EH format resulting from addition of linkonce support. - * src/powerpc/darwin_closure.S: Likewise. - -2004-03-11 Andreas Tobler - Paolo Bonzini - - * Makefile.am (AUTOMAKE_OPTIONS): Set them. - Remove VPATH. Remove rules for object files. Remove multilib support. - (AM_CCASFLAGS): Add. - * configure.in (AC_CONFIG_HEADERS): Relace AM_CONFIG_HEADER. - (AC_PREREQ): Bump version to 2.59. - (AC_INIT): Fill with version info and bug address. - (ORIGINAL_LD_FOR_MULTILIBS): Remove. - (AM_ENABLE_MULTILIB): Use this instead of AC_ARG_ENABLE. - De-precious CC so that the right flags are passed down to multilibs. - (AC_MSG_ERROR): Replace obsolete macro AC_ERROR. - (AC_CONFIG_FILES): Replace obsolete macro AC_LINK_FILES. - (AC_OUTPUT): Reorganize the output with AC_CONFIG_COMMANDS. - * configure: Rebuilt. - * aclocal.m4: Likewise. - * Makefile.in, include/Makefile.in, testsuite/Makefile.in: Likewise. - * fficonfig.h.in: Likewise. - -2004-03-11 Andreas Schwab - - * src/ia64/ffi.c (ffi_prep_incoming_args_UNIX): Get floating point - arguments from fp registers only for the first 8 parameter slots. - Don't convert a float parameter when passed in memory. - -2004-03-09 Hans-Peter Nilsson - - * configure: Regenerate for config/accross.m4 correction. - -2004-02-25 Matt Kraai - - * src/powerpc/ffi.c (ffi_prep_args_SYSV): Change - ecif->cif->bytes to bytes. - (ffi_prep_cif_machdep): Add braces around nested if statement. - -2004-02-09 Alan Modra - - * src/types.c (pointer): POWERPC64 has 8 byte pointers. - - * src/powerpc/ffi.c (ffi_prep_args64): Correct long double handling. - (ffi_closure_helper_LINUX64): Fix typo. - * testsuite/libffi.call/cls_align_longdouble.c: Pass -mlong-double-128 - for powerpc64-*-*. - * testsuite/libffi.call/float.c: Likewise. - * testsuite/libffi.call/float2.c: Likewise. - -2004-02-08 Alan Modra - - * src/powerpc/ffi.c (ffi_prep_cif_machdep ): Correct - long double function return and long double arg handling. - (ffi_closure_helper_LINUX64): Formatting. Delete unused "ng" var. - Use "end_pfr" instead of "nf". Correct long double handling. - Localise "temp". - * src/powerpc/linux64.S (ffi_call_LINUX64): Save f2 long double - return value. - * src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Allocate - space for long double return value. Adjust stack frame and offsets. - Load f2 long double return. - -2004-02-07 Alan Modra - - * src/types.c: Use 16 byte long double for POWERPC64. - -2004-01-25 Eric Botcazou - - * src/sparc/ffi.c (ffi_prep_args_v9): Shift the parameter array - when the structure return address is passed in %o0. - (ffi_V9_return_struct): Rename into ffi_v9_layout_struct. - (ffi_v9_layout_struct): Align the field following a nested structure - on a word boundary. Use memmove instead of memcpy. - (ffi_call): Update call to ffi_V9_return_struct. - (ffi_prep_closure): Define 'ctx' only for V8. - (ffi_closure_sparc_inner): Clone into ffi_closure_sparc_inner_v8 - and ffi_closure_sparc_inner_v9. - (ffi_closure_sparc_inner_v8): Return long doubles by reference. - Always skip the structure return address. For structures and long - doubles, copy the argument directly. - (ffi_closure_sparc_inner_v9): Skip the structure return address only - if required. Shift the maximum floating-point slot accordingly. For - big structures, copy the argument directly; otherwise, left-justify the - argument and call ffi_v9_layout_struct to lay out the structure on - the stack. - * src/sparc/v8.S: Undef STACKFRAME before defining it. - (ffi_closure_v8): Pass the structure return address. Update call to - ffi_closure_sparc_inner_v8. Short-circuit FFI_TYPE_INT handling. - Skip the 'unimp' insn when returning long doubles and structures. - * src/sparc/v9.S: Undef STACKFRAME before defining it. - (ffi_closure_v9): Increase the frame size by 2 words. Short-circuit - FFI_TYPE_INT handling. Load structures both in integers and - floating-point registers on return. - * README: Update status of the SPARC port. - -2004-01-24 Andreas Tobler - - * testsuite/libffi.call/pyobjc-tc.c (main): Treat result value - as of type ffi_arg. - * testsuite/libffi.call/struct3.c (main): Fix CHECK. - -2004-01-22 Ulrich Weigand - - * testsuite/libffi.call/cls_uint.c (cls_ret_uint_fn): Treat result - value as of type ffi_arg, not unsigned int. - -2004-01-21 Michael Ritzert - - * ffi64.c (ffi_prep_args): Cast the RHS of an assignment instead - of the LHS. - -2004-01-12 Andreas Tobler - - * testsuite/lib/libffi-dg.exp: Set LD_LIBRARY_PATH_32 for - Solaris. - -2004-01-08 Rainer Orth - - * testsuite/libffi.call/ffitest.h (allocate_mmap): Cast MAP_FAILED - to void *. - -2003-12-10 Richard Henderson - - * testsuite/libffi.call/cls_align_pointer.c: Cast pointers to - size_t instead of int. - -2003-12-04 Hosaka Yuji - - * testsuite/libffi.call/many_win32.c: Include . - * testsuite/libffi.call/many_win32.c (main): Replace variable - int i with unsigned long ul. - - * testsuite/libffi.call/cls_align_uint64.c: New test case. - * testsuite/libffi.call/cls_align_sint64.c: Likewise. - * testsuite/libffi.call/cls_align_uint32.c: Likewise. - * testsuite/libffi.call/cls_align_sint32.c: Likewise. - * testsuite/libffi.call/cls_align_uint16.c: Likewise. - * testsuite/libffi.call/cls_align_sint16.c: Likewise. - * testsuite/libffi.call/cls_align_float.c: Likewise. - * testsuite/libffi.call/cls_align_double.c: Likewise. - * testsuite/libffi.call/cls_align_longdouble.c: Likewise. - * testsuite/libffi.call/cls_align_pointer.c: Likewise. - -2003-12-02 Hosaka Yuji - - PR other/13221 - * src/x86/ffi.c (ffi_prep_args, ffi_prep_incoming_args_SYSV): - Align arguments to 32 bits. - -2003-12-01 Andreas Tobler - - PR other/13221 - * testsuite/libffi.call/cls_multi_sshort.c: New test case. - * testsuite/libffi.call/cls_multi_sshortchar.c: Likewise. - * testsuite/libffi.call/cls_multi_uchar.c: Likewise. - * testsuite/libffi.call/cls_multi_schar.c: Likewise. - * testsuite/libffi.call/cls_multi_ushortchar.c: Likewise. - * testsuite/libffi.call/cls_multi_ushort.c: Likewise. - - * testsuite/libffi.special/unwindtest.cc: Cosmetics. - -2003-11-26 Kaveh R. Ghazi - - * testsuite/libffi.call/ffitest.h: Include . - * testsuite/libffi.special/ffitestcxx.h: Likewise. - -2003-11-22 Andreas Tobler - - * Makefile.in: Rebuilt. - * configure: Likewise. - * testsuite/libffi.special/unwindtest.cc: Convert the mmap to - the right type. - -2003-11-21 Andreas Jaeger - Andreas Tobler - - * acinclude.m4: Add AC_FUNC_MMAP_BLACKLIST. - * configure.in: Call AC_FUNC_MMAP_BLACKLIST. - * Makefile.in: Rebuilt. - * aclocal.m4: Likewise. - * configure: Likewise. - * fficonfig.h.in: Likewise. - * testsuite/lib/libffi-dg.exp: Add include dir. - * testsuite/libffi.call/ffitest.h: Add MMAP definitions. - * testsuite/libffi.special/ffitestcxx.h: Likewise. - * testsuite/libffi.call/closure_fn0.c: Use MMAP functionality - for ffi_closure if available. - * testsuite/libffi.call/closure_fn1.c: Likewise. - * testsuite/libffi.call/closure_fn2.c: Likewise. - * testsuite/libffi.call/closure_fn3.c: Likewise. - * testsuite/libffi.call/closure_fn4.c: Likewise. - * testsuite/libffi.call/closure_fn5.c: Likewise. - * testsuite/libffi.call/cls_12byte.c: Likewise. - * testsuite/libffi.call/cls_16byte.c: Likewise. - * testsuite/libffi.call/cls_18byte.c: Likewise. - * testsuite/libffi.call/cls_19byte.c: Likewise. - * testsuite/libffi.call/cls_1_1byte.c: Likewise. - * testsuite/libffi.call/cls_20byte.c: Likewise. - * testsuite/libffi.call/cls_20byte1.c: Likewise. - * testsuite/libffi.call/cls_24byte.c: Likewise. - * testsuite/libffi.call/cls_2byte.c: Likewise. - * testsuite/libffi.call/cls_3_1byte.c: Likewise. - * testsuite/libffi.call/cls_3byte1.c: Likewise. - * testsuite/libffi.call/cls_3byte2.c: Likewise. - * testsuite/libffi.call/cls_4_1byte.c: Likewise. - * testsuite/libffi.call/cls_4byte.c: Likewise. - * testsuite/libffi.call/cls_5byte.c: Likewise. - * testsuite/libffi.call/cls_64byte.c: Likewise. - * testsuite/libffi.call/cls_6byte.c: Likewise. - * testsuite/libffi.call/cls_7byte.c: Likewise. - * testsuite/libffi.call/cls_8byte.c: Likewise. - * testsuite/libffi.call/cls_9byte1.c: Likewise. - * testsuite/libffi.call/cls_9byte2.c: Likewise. - * testsuite/libffi.call/cls_double.c: Likewise. - * testsuite/libffi.call/cls_float.c: Likewise. - * testsuite/libffi.call/cls_schar.c: Likewise. - * testsuite/libffi.call/cls_sint.c: Likewise. - * testsuite/libffi.call/cls_sshort.c: Likewise. - * testsuite/libffi.call/cls_uchar.c: Likewise. - * testsuite/libffi.call/cls_uint.c: Likewise. - * testsuite/libffi.call/cls_ulonglong.c: Likewise. - * testsuite/libffi.call/cls_ushort.c: Likewise. - * testsuite/libffi.call/nested_struct.c: Likewise. - * testsuite/libffi.call/nested_struct1.c: Likewise. - * testsuite/libffi.call/nested_struct2.c: Likewise. - * testsuite/libffi.call/nested_struct3.c: Likewise. - * testsuite/libffi.call/problem1.c: Likewise. - * testsuite/libffi.special/unwindtest.cc: Likewise. - -2003-11-20 Andreas Tobler - - * testsuite/lib/libffi-dg.exp: Make the -lgcc_s conditional. - -2003-11-19 Andreas Tobler - - * testsuite/lib/libffi-dg.exp: Add DYLD_LIBRARY_PATH for darwin. - Add -lgcc_s to additional flags. - -2003-11-12 Andreas Tobler - - * configure.in, include/Makefile.am: PR libgcj/11147, install - the ffitarget.h header file in a gcc versioned and target - dependent place. - * configure: Regenerated. - * Makefile.in, include/Makefile.in: Likewise. - * testsuite/Makefile.in: Likewise. - -2003-11-09 Andreas Tobler - - * testsuite/libffi.call/closure_fn0.c: Print result and check - with dg-output to make debugging easier. - * testsuite/libffi.call/closure_fn1.c: Likewise. - * testsuite/libffi.call/closure_fn2.c: Likewise. - * testsuite/libffi.call/closure_fn3.c: Likewise. - * testsuite/libffi.call/closure_fn4.c: Likewise. - * testsuite/libffi.call/closure_fn5.c: Likewise. - * testsuite/libffi.call/cls_12byte.c: Likewise. - * testsuite/libffi.call/cls_16byte.c: Likewise. - * testsuite/libffi.call/cls_18byte.c: Likewise. - * testsuite/libffi.call/cls_19byte.c: Likewise. - * testsuite/libffi.call/cls_1_1byte.c: Likewise. - * testsuite/libffi.call/cls_20byte.c: Likewise. - * testsuite/libffi.call/cls_20byte1.c: Likewise. - * testsuite/libffi.call/cls_24byte.c: Likewise. - * testsuite/libffi.call/cls_2byte.c: Likewise. - * testsuite/libffi.call/cls_3_1byte.c: Likewise. - * testsuite/libffi.call/cls_3byte1.c: Likewise. - * testsuite/libffi.call/cls_3byte2.c: Likewise. - * testsuite/libffi.call/cls_4_1byte.c: Likewise. - * testsuite/libffi.call/cls_4byte.c: Likewise. - * testsuite/libffi.call/cls_5byte.c: Likewise. - * testsuite/libffi.call/cls_64byte.c: Likewise. - * testsuite/libffi.call/cls_6byte.c: Likewise. - * testsuite/libffi.call/cls_7byte.c: Likewise. - * testsuite/libffi.call/cls_8byte.c: Likewise. - * testsuite/libffi.call/cls_9byte1.c: Likewise. - * testsuite/libffi.call/cls_9byte2.c: Likewise. - * testsuite/libffi.call/cls_double.c: Likewise. - * testsuite/libffi.call/cls_float.c: Likewise. - * testsuite/libffi.call/cls_schar.c: Likewise. - * testsuite/libffi.call/cls_sint.c: Likewise. - * testsuite/libffi.call/cls_sshort.c: Likewise. - * testsuite/libffi.call/cls_uchar.c: Likewise. - * testsuite/libffi.call/cls_uint.c: Likewise. - * testsuite/libffi.call/cls_ulonglong.c: Likewise. - * testsuite/libffi.call/cls_ushort.c: Likewise. - * testsuite/libffi.call/problem1.c: Likewise. - - * testsuite/libffi.special/unwindtest.cc: Make ffi_closure - static. - -2003-11-08 Andreas Tobler - - * testsuite/libffi.call/cls_9byte2.c: New test case. - * testsuite/libffi.call/cls_9byte1.c: Likewise. - * testsuite/libffi.call/cls_64byte.c: Likewise. - * testsuite/libffi.call/cls_20byte1.c: Likewise. - * testsuite/libffi.call/cls_19byte.c: Likewise. - * testsuite/libffi.call/cls_18byte.c: Likewise. - * testsuite/libffi.call/closure_fn4.c: Likewise. - * testsuite/libffi.call/closure_fn5.c: Likewise. - * testsuite/libffi.call/cls_schar.c: Likewise. - * testsuite/libffi.call/cls_sint.c: Likewise. - * testsuite/libffi.call/cls_sshort.c: Likewise. - * testsuite/libffi.call/nested_struct2.c: Likewise. - * testsuite/libffi.call/nested_struct3.c: Likewise. - -2003-11-08 Andreas Tobler - - * testsuite/libffi.call/cls_double.c: Do a check on the result. - * testsuite/libffi.call/cls_uchar.c: Likewise. - * testsuite/libffi.call/cls_uint.c: Likewise. - * testsuite/libffi.call/cls_ulonglong.c: Likewise. - * testsuite/libffi.call/cls_ushort.c: Likewise. - * testsuite/libffi.call/return_sc.c: Cleanup whitespaces. - -2003-11-06 Andreas Tobler - - * src/prep_cif.c (ffi_prep_cif): Move the validity check after - the initialization. - -2003-10-23 Andreas Tobler - - * src/java_raw_api.c (ffi_java_ptrarray_to_raw): Replace - FFI_ASSERT(FALSE) with FFI_ASSERT(0). - -2003-10-22 David Daney - - * src/mips/ffitarget.h: Replace undefined UINT32 and friends with - __attribute__((__mode__(__SI__))) and friends. - -2003-10-22 Andreas Schwab - - * src/ia64/ffi.c: Replace FALSE/TRUE with false/true. - -2003-10-21 Andreas Tobler - - * configure.in: AC_LINK_FILES(ffitarget.h). - * configure: Regenerate. - * Makefile.in: Likewise. - * include/Makefile.in: Likewise. - * testsuite/Makefile.in: Likewise. - * fficonfig.h.in: Likewise. - -2003-10-21 Paolo Bonzini - Richard Henderson - - Avoid that ffi.h includes fficonfig.h. - - * Makefile.am (EXTRA_DIST): Include ffitarget.h files - (TARGET_SRC_MIPS_GCC): Renamed to TARGET_SRC_MIPS_IRIX. - (TARGET_SRC_MIPS_SGI): Removed. - (MIPS_GCC): Renamed to TARGET_SRC_MIPS_IRIX. - (MIPS_SGI): Removed. - (CLEANFILES): Removed. - (mostlyclean-am, clean-am, mostlyclean-sub, clean-sub): New - targets. - * acconfig.h: Removed. - * configure.in: Compute sizeofs only for double and long double. - Use them to define and subst HAVE_LONG_DOUBLE. Include comments - into AC_DEFINE instead of using acconfig.h. Create - include/ffitarget.h instead of include/fficonfig.h. Rename - MIPS_GCC to MIPS_IRIX, drop MIPS_SGI since we are in gcc's tree. - AC_DEFINE EH_FRAME_FLAGS. - * include/Makefile.am (DISTCLEANFILES): New automake macro. - (hack_DATA): Add ffitarget.h. - * include/ffi.h.in: Remove all system specific definitions. - Declare raw API even if it is not installed, why bother? - Use limits.h instead of SIZEOF_* to define ffi_type_*. Do - not define EH_FRAME_FLAGS, it is in fficonfig.h now. Include - ffitarget.h instead of fficonfig.h. Remove ALIGN macro. - (UINT_ARG, INT_ARG): Removed, use ffi_arg and ffi_sarg instead. - * include/ffi_common.h (bool): Do not define. - (ffi_assert): Accept failed assertion. - (ffi_type_test): Return void and accept file/line. - (FFI_ASSERT): Pass stringized failed assertion. - (FFI_ASSERT_AT): New macro. - (FFI_ASSERT_VALID_TYPE): New macro. - (UINT8, SINT8, UINT16, SINT16, UINT32, SINT32, - UINT64, SINT64): Define here with gcc's __attribute__ macro - instead of in ffi.h - (FLOAT32, ALIGN): Define here instead of in ffi.h - * include/ffi-mips.h: Removed. Its content moved to - src/mips/ffitarget.h after separating assembly and C sections. - * src/alpha/ffi.c, src/alpha/ffi.c, src/java_raw_api.c - src/prep_cif.c, src/raw_api.c, src/ia64/ffi.c, - src/mips/ffi.c, src/mips/n32.S, src/mips/o32.S, - src/mips/ffitarget.h, src/sparc/ffi.c, src/x86/ffi64.c: - SIZEOF_ARG -> FFI_SIZEOF_ARG. - * src/ia64/ffi.c: Include stdbool.h (provided by GCC 2.95+). - * src/debug.c (ffi_assert): Accept stringized failed assertion. - (ffi_type_test): Rewritten. - * src/prep-cif.c (initialize_aggregate, ffi_prep_cif): Call - FFI_ASSERT_VALID_TYPE. - * src/alpha/ffitarget.h, src/arm/ffitarget.h, - src/ia64/ffitarget.h, src/m68k/ffitarget.h, - src/mips/ffitarget.h, src/powerpc/ffitarget.h, - src/s390/ffitarget.h, src/sh/ffitarget.h, - src/sh64/ffitarget.h, src/sparc/ffitarget.h, - src/x86/ffitarget.h: New files. - * src/alpha/osf.S, src/arm/sysv.S, src/ia64/unix.S, - src/m68k/sysv.S, src/mips/n32.S, src/mips/o32.S, - src/powerpc/aix.S, src/powerpc/darwin.S, - src/powerpc/ffi_darwin.c, src/powerpc/linux64.S, - src/powerpc/linux64_closure.S, src/powerpc/ppc_closure.S, - src/powerpc/sysv.S, src/s390/sysv.S, src/sh/sysv.S, - src/sh64/sysv.S, src/sparc/v8.S, src/sparc/v9.S, - src/x86/sysv.S, src/x86/unix64.S, src/x86/win32.S: - include fficonfig.h - -2003-10-20 Rainer Orth - - * src/mips/ffi.c: Use _ABIN32, _ABIO32 instead of external - _MIPS_SIM_NABI32, _MIPS_SIM_ABI32. - -2003-10-19 Andreas Tobler - - * src/powerpc/ffi_darwin.c (ffi_prep_args): Declare bytes again. - Used when FFI_DEBUG = 1. - -2003-10-14 Alan Modra - - * src/types.c (double, longdouble): Default POWERPC64 to 8 byte size - and align. - -2003-10-06 Rainer Orth - - * include/ffi_mips.h: Define FFI_MIPS_N32 for N32/N64 ABIs, - FFI_MIPS_O32 for O32 ABI. - -2003-10-01 Andreas Tobler - - * testsuite/lib/libffi-dg.exp: Set LD_LIBRARY_PATH_64 for - SPARC64. Cleanup whitespaces. - -2003-09-19 Andreas Tobler - - * testsuite/libffi.call/closure_fn0.c: Xfail mips, arm, - strongarm, xscale. Cleanup whitespaces. - * testsuite/libffi.call/closure_fn1.c: Likewise. - * testsuite/libffi.call/closure_fn2.c: Likewise. - * testsuite/libffi.call/closure_fn3.c: Likewise. - * testsuite/libffi.call/cls_12byte.c: Likewise. - * testsuite/libffi.call/cls_16byte.c: Likewise. - * testsuite/libffi.call/cls_1_1byte.c: Likewise. - * testsuite/libffi.call/cls_20byte.c: Likewise. - * testsuite/libffi.call/cls_24byte.c: Likewise. - * testsuite/libffi.call/cls_2byte.c: Likewise. - * testsuite/libffi.call/cls_3_1byte.c: Likewise. - * testsuite/libffi.call/cls_3byte1.c: Likewise. - * testsuite/libffi.call/cls_3byte2.c: Likewise. - * testsuite/libffi.call/cls_4_1byte.c: Likewise. - * testsuite/libffi.call/cls_4byte.c: Likewise. - * testsuite/libffi.call/cls_5byte.c: Likewise. - * testsuite/libffi.call/cls_6byte.c: Likewise. - * testsuite/libffi.call/cls_7byte.c: Likewise. - * testsuite/libffi.call/cls_8byte.c: Likewise. - * testsuite/libffi.call/cls_double.c: Likewise. - * testsuite/libffi.call/cls_float.c: Likewise. - * testsuite/libffi.call/cls_uchar.c: Likewise. - * testsuite/libffi.call/cls_uint.c: Likewise. - * testsuite/libffi.call/cls_ulonglong.c: Likewise. - * testsuite/libffi.call/cls_ushort.c: Likewise. - * testsuite/libffi.call/nested_struct.c: Likewise. - * testsuite/libffi.call/nested_struct1.c: Likewise. - * testsuite/libffi.call/problem1.c: Likewise. - * testsuite/libffi.special/unwindtest.cc: Likewise. - * testsuite/libffi.call/pyobjc-tc.c: Cleanup whitespaces. - -2003-09-18 David Edelsohn - - * src/powerpc/aix.S: Cleanup whitespaces. - * src/powerpc/aix_closure.S: Likewise. - -2003-09-18 Andreas Tobler - - * src/powerpc/darwin.S: Cleanup whitespaces, comment formatting. - * src/powerpc/darwin_closure.S: Likewise. - * src/powerpc/ffi_darwin.c: Likewise. - -2003-09-18 Andreas Tobler - David Edelsohn - - * src/types.c (double): Add AIX and Darwin to the right TYPEDEF. - * src/powerpc/aix_closure.S: Remove the pointer to the outgoing - parameter stack. - * src/powerpc/darwin_closure.S: Likewise. - * src/powerpc/ffi_darwin.c (ffi_prep_args): Handle structures - according to the Darwin/AIX ABI. - (ffi_prep_cif_machdep): Likewise. - (ffi_closure_helper_DARWIN): Likewise. - Remove the outgoing parameter stack logic. Simplify the evaluation - of the different CASE types. - (ffi_prep_clousure): Avoid the casts on lvalues. Change the branch - statement in the trampoline code. - -2003-09-18 Kaz Kojima - - * src/sh/ffi.c (ffi_prep_args): Take account into the alignement - for the register size. - (ffi_closure_helper_SYSV): Handle the structure return value - address correctly. - (ffi_closure_helper_SYSV): Return the appropriate type when - the registers are used for the structure return value. - * src/sh/sysv.S (ffi_closure_SYSV): Fix the stack layout for - the 64-bit return value. Update copyright years. - -2003-09-17 Rainer Orth - - * testsuite/lib/libffi-dg.exp (libffi_target_compile): Search in - srcdir for ffi_mips.h. - -2003-09-12 Alan Modra - - * src/prep_cif.c (initialize_aggregate): Include tail padding in - structure size. - * src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Correct - placement of float result. - * testsuite/libffi.special/unwindtest.cc (closure_test_fn1): Correct - cast of "resp" for big-endian 64 bit machines. - -2003-09-11 Alan Modra - - * src/types.c (double, longdouble): Merge identical SH and ARM - typedefs, and add POWERPC64. - * src/powerpc/ffi.c (ffi_prep_args64): Correct next_arg calc for - struct split over gpr and rest. - (ffi_prep_cif_machdep): Correct intarg_count for structures. - * src/powerpc/linux64.S (ffi_call_LINUX64): Fix gpr offsets. - -2003-09-09 Andreas Tobler - - * src/powerpc/ffi.c (ffi_closure_helper_SYSV) Handle struct - passing correctly. - -2003-09-09 Alan Modra - - * configure: Regenerate. - -2003-09-04 Andreas Tobler - - * Makefile.am: Remove build rules for ffitest. - * Makefile.in: Rebuilt. - -2003-09-04 Andreas Tobler - - * src/java_raw_api.c: Include to fix compiler warning - about implicit declaration of abort(). - -2003-09-04 Andreas Tobler - - * Makefile.am: Add dejagnu test framework. Fixes PR other/11411. - * Makefile.in: Rebuilt. - * configure.in: Add dejagnu test framework. - * configure: Rebuilt. - - * testsuite/Makefile.am: New file. - * testsuite/Makefile.in: Built - * testsuite/lib/libffi-dg.exp: New file. - * testsuite/config/default.exp: Likewise. - * testsuite/libffi.call/call.exp: Likewise. - * testsuite/libffi.call/ffitest.h: Likewise. - * testsuite/libffi.call/closure_fn0.c: Likewise. - * testsuite/libffi.call/closure_fn1.c: Likewise. - * testsuite/libffi.call/closure_fn2.c: Likewise. - * testsuite/libffi.call/closure_fn3.c: Likewise. - * testsuite/libffi.call/cls_1_1byte.c: Likewise. - * testsuite/libffi.call/cls_3_1byte.c: Likewise. - * testsuite/libffi.call/cls_4_1byte.c: Likewise. - * testsuite/libffi.call/cls_2byte.c: Likewise. - * testsuite/libffi.call/cls_3byte1.c: Likewise. - * testsuite/libffi.call/cls_3byte2.c: Likewise. - * testsuite/libffi.call/cls_4byte.c: Likewise. - * testsuite/libffi.call/cls_5byte.c: Likewise. - * testsuite/libffi.call/cls_6byte.c: Likewise. - * testsuite/libffi.call/cls_7byte.c: Likewise. - * testsuite/libffi.call/cls_8byte.c: Likewise. - * testsuite/libffi.call/cls_12byte.c: Likewise. - * testsuite/libffi.call/cls_16byte.c: Likewise. - * testsuite/libffi.call/cls_20byte.c: Likewise. - * testsuite/libffi.call/cls_24byte.c: Likewise. - * testsuite/libffi.call/cls_double.c: Likewise. - * testsuite/libffi.call/cls_float.c: Likewise. - * testsuite/libffi.call/cls_uchar.c: Likewise. - * testsuite/libffi.call/cls_uint.c: Likewise. - * testsuite/libffi.call/cls_ulonglong.c: Likewise. - * testsuite/libffi.call/cls_ushort.c: Likewise. - * testsuite/libffi.call/float.c: Likewise. - * testsuite/libffi.call/float1.c: Likewise. - * testsuite/libffi.call/float2.c: Likewise. - * testsuite/libffi.call/many.c: Likewise. - * testsuite/libffi.call/many_win32.c: Likewise. - * testsuite/libffi.call/nested_struct.c: Likewise. - * testsuite/libffi.call/nested_struct1.c: Likewise. - * testsuite/libffi.call/pyobjc-tc.c: Likewise. - * testsuite/libffi.call/problem1.c: Likewise. - * testsuite/libffi.call/promotion.c: Likewise. - * testsuite/libffi.call/return_ll.c: Likewise. - * testsuite/libffi.call/return_sc.c: Likewise. - * testsuite/libffi.call/return_uc.c: Likewise. - * testsuite/libffi.call/strlen.c: Likewise. - * testsuite/libffi.call/strlen_win32.c: Likewise. - * testsuite/libffi.call/struct1.c: Likewise. - * testsuite/libffi.call/struct2.c: Likewise. - * testsuite/libffi.call/struct3.c: Likewise. - * testsuite/libffi.call/struct4.c: Likewise. - * testsuite/libffi.call/struct5.c: Likewise. - * testsuite/libffi.call/struct6.c: Likewise. - * testsuite/libffi.call/struct7.c: Likewise. - * testsuite/libffi.call/struct8.c: Likewise. - * testsuite/libffi.call/struct9.c: Likewise. - * testsuite/libffi.special/special.exp: New file. - * testsuite/libffi.special/ffitestcxx.h: Likewise. - * testsuite/libffi.special/unwindtest.cc: Likewise. - - -2003-08-13 Kaz Kojima - - * src/sh/ffi.c (OFS_INT16): Set 0 for little endian case. Update - copyright years. - -2003-08-02 Alan Modra - - * src/powerpc/ffi.c (ffi_prep_args64): Modify for changed gcc - structure passing. - (ffi_closure_helper_LINUX64): Likewise. - * src/powerpc/linux64.S: Remove code writing to parm save area. - * src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Use return - address in lr from ffi_closure_helper_LINUX64 call to calculate - table address. Optimize function tail. - -2003-07-28 Andreas Tobler - - * src/sparc/ffi.c: Handle all floating point registers. - * src/sparc/v9.S: Likewise. Fixes second part of PR target/11410. - -2003-07-11 Gerald Pfeifer - - * README: Note that libffi is not part of GCC. Update the project - URL and status. - -2003-06-19 Franz Sirl - - * src/powerpc/ppc_closure.S: Include ffi.h. - -2003-06-13 Rainer Orth - - * src/x86/sysv.S: Avoid gas-only .uleb128/.sleb128 directives. - Use C style comments. - -2003-06-13 Kaz Kojima - - * Makefile.am: Add SHmedia support. Fix a typo of SH support. - * Makefile.in: Regenerate. - * configure.in (sh64-*-linux*, sh5*-*-linux*): Add target. - * configure: Regenerate. - * include/ffi.h.in: Add SHmedia support. - * src/sh64/ffi.c: New file. - * src/sh64/sysv.S: New file. - -2003-05-16 Jakub Jelinek - - * configure.in (HAVE_RO_EH_FRAME): Check whether .eh_frame section - should be read-only. - * configure: Rebuilt. - * fficonfig.h.in: Rebuilt. - * include/ffi.h.in (EH_FRAME_FLAGS): Define. - * src/alpha/osf.S: Use EH_FRAME_FLAGS. - * src/powerpc/linux64.S: Likewise. - * src/powerpc/linux64_closure.S: Likewise. Include ffi.h. - * src/powerpc/sysv.S: Use EH_FRAME_FLAGS. Use pcrel encoding - if -fpic/-fPIC/-mrelocatable. - * src/powerpc/powerpc_closure.S: Likewise. - * src/sparc/v8.S: If HAVE_RO_EH_FRAME is defined, don't include - #write in .eh_frame flags. - * src/sparc/v9.S: Likewise. - * src/x86/unix64.S: Use EH_FRAME_FLAGS. - * src/x86/sysv.S: Likewise. Use pcrel encoding if -fpic/-fPIC. - * src/s390/sysv.S: Use EH_FRAME_FLAGS. Include ffi.h. - -2003-05-07 Jeff Sturm - - Fixes PR bootstrap/10656 - * configure.in (HAVE_AS_REGISTER_PSEUDO_OP): Test assembler - support for .register pseudo-op. - * src/sparc/v8.S: Use it. - * fficonfig.h.in: Rebuilt. - * configure: Rebuilt. - -2003-04-18 Jakub Jelinek - - * include/ffi.h.in (POWERPC64): Define if 64-bit. - (enum ffi_abi): Add FFI_LINUX64 on POWERPC. - Make it the default on POWERPC64. - (FFI_TRAMPOLINE_SIZE): Define to 24 on POWERPC64. - * configure.in: Change powerpc-*-linux* into powerpc*-*-linux*. - * configure: Rebuilt. - * src/powerpc/ffi.c (hidden): Define. - (ffi_prep_args_SYSV): Renamed from - ffi_prep_args. Cast pointers to unsigned long to shut up warnings. - (NUM_GPR_ARG_REGISTERS64, NUM_FPR_ARG_REGISTERS64, - ASM_NEEDS_REGISTERS64): New. - (ffi_prep_args64): New function. - (ffi_prep_cif_machdep): Handle FFI_LINUX64 ABI. - (ffi_call): Likewise. - (ffi_prep_closure): Likewise. - (flush_icache): Surround by #ifndef POWERPC64. - (ffi_dblfl): New union type. - (ffi_closure_helper_SYSV): Use it to avoid aliasing problems. - (ffi_closure_helper_LINUX64): New function. - * src/powerpc/ppc_closure.S: Surround whole file by #ifndef - __powerpc64__. - * src/powerpc/sysv.S: Likewise. - (ffi_call_SYSV): Rename ffi_prep_args to ffi_prep_args_SYSV. - * src/powerpc/linux64.S: New file. - * src/powerpc/linux64_closure.S: New file. - * Makefile.am (EXTRA_DIST): Add src/powerpc/linux64.S and - src/powerpc/linux64_closure.S. - (TARGET_SRC_POWERPC): Likewise. - - * src/ffitest.c (closure_test_fn, closure_test_fn1, closure_test_fn2, - closure_test_fn3): Fix result printing on big-endian 64-bit - machines. - (main): Print tst2_arg instead of uninitialized tst2_result. - - * src/ffitest.c (main): Hide what closure pointer really points to - from the compiler. - -2003-04-16 Richard Earnshaw - - * configure.in (arm-*-netbsdelf*): Add configuration. - (configure): Regenerated. - -2003-04-04 Loren J. Rittle - - * include/Makefile.in: Regenerate. - -2003-03-21 Zdenek Dvorak - - * libffi/include/ffi.h.in: Define X86 instead of X86_64 in 32 - bit mode. - * libffi/src/x86/ffi.c (ffi_closure_SYSV, ffi_closure_raw_SYSV): - Receive closure pointer through parameter, read args using - __builtin_dwarf_cfa. - (FFI_INIT_TRAMPOLINE): Send closure reference through eax. - -2003-03-12 Andreas Schwab - - * configure.in: Avoid trailing /. in toolexeclibdir. - * configure: Rebuilt. - -2003-03-03 Andreas Tobler - - * src/powerpc/darwin_closure.S: Recode to fit dynamic libraries. - -2003-02-06 Andreas Tobler - - * libffi/src/powerpc/darwin_closure.S: - Fix alignement bug, allocate 8 bytes for the result. - * libffi/src/powerpc/aix_closure.S: - Likewise. - * libffi/src/powerpc/ffi_darwin.c: - Update stackframe description for aix/darwin_closure.S. - -2003-02-06 Jakub Jelinek - - * src/s390/ffi.c (ffi_closure_helper_SYSV): Add hidden visibility - attribute. - -2003-01-31 Christian Cornelssen , - Andreas Schwab - - * configure.in: Adjust command to source config-ml.in to account - for changes to the libffi_basedir definition. - (libffi_basedir): Remove ${srcdir} from value and include trailing - slash if nonempty. - - * configure: Regenerate. - -2003-01-29 Franz Sirl - - * src/powerpc/ppc_closure.S: Recode to fit shared libs. - -2003-01-28 Andrew Haley - - * include/ffi.h.in: Enable FFI_CLOSURES for x86_64. - * src/x86/ffi64.c (ffi_prep_closure): New. - (ffi_closure_UNIX64_inner): New. - * src/x86/unix64.S (ffi_closure_UNIX64): New. - -2003-01-27 Alexandre Oliva - - * configure.in (toolexecdir, toolexeclibdir): Set and AC_SUBST. - Remove USE_LIBDIR conditional. - * Makefile.am (toolexecdir, toolexeclibdir): Don't override. - * Makefile.in, configure: Rebuilt. - -2003-01027 David Edelsohn - - * Makefile.am (TARGET_SRC_POWERPC_AIX): Fix typo. - * Makefile.in: Regenerate. - -2003-01-22 Andrew Haley - - * src/powerpc/darwin.S (_ffi_call_AIX): Add Augmentation size to - unwind info. - -2003-01-21 Andreas Tobler - - * src/powerpc/darwin.S: Add unwind info. - * src/powerpc/darwin_closure.S: Likewise. - -2003-01-14 Andrew Haley - - * src/x86/ffi64.c (ffi_prep_args): Check for void retval. - (ffi_prep_cif_machdep): Likewise. - * src/x86/unix64.S: Add unwind info. - -2003-01-14 Andreas Jaeger - - * src/ffitest.c (main): Only use ffi_closures if those are - supported. - -2003-01-13 Andreas Tobler - - * libffi/src/ffitest.c - add closure testcases - -2003-01-13 Kevin B. Hendricks - - * libffi/src/powerpc/ffi.c - fix alignment bug for float (4 byte aligned iso 8 byte) - -2003-01-09 Geoffrey Keating - - * src/powerpc/ffi_darwin.c: Remove RCS version string. - * src/powerpc/darwin.S: Remove RCS version string. - -2003-01-03 Jeff Sturm - - * include/ffi.h.in: Add closure defines for SPARC, SPARC64. - * src/ffitest.c (main): Use static storage for closure. - * src/sparc/ffi.c (ffi_prep_closure, ffi_closure_sparc_inner): New. - * src/sparc/v8.S (ffi_closure_v8): New. - * src/sparc/v9.S (ffi_closure_v9): New. - -2002-11-10 Ranjit Mathew - - * include/ffi.h.in: Added FFI_STDCALL ffi_type - enumeration for X86_WIN32. - * src/x86/win32.S: Added ffi_call_STDCALL function - definition. - * src/x86/ffi.c (ffi_call/ffi_raw_call): Added - switch cases for recognising FFI_STDCALL and - calling ffi_call_STDCALL if target is X86_WIN32. - * src/ffitest.c (my_stdcall_strlen/stdcall_many): - stdcall versions of the "my_strlen" and "many" - test functions (for X86_WIN32). - Added test cases to test stdcall invocation using - these functions. - -2002-12-02 Kaz Kojima - - * src/sh/sysv.S: Add DWARF2 unwind info. - -2002-11-27 Ulrich Weigand - - * src/s390/sysv.S (.eh_frame section): Make section read-only. - -2002-11-26 Jim Wilson - - * src/types.c (FFI_TYPE_POINTER): Has size 8 on IA64. - -2002-11-23 H.J. Lu - - * acinclude.m4: Add dummy AM_PROG_LIBTOOL. - Include ../config/accross.m4. - * aclocal.m4; Rebuild. - * configure: Likewise. - -2002-11-15 Ulrich Weigand - - * src/s390/sysv.S (.eh_frame section): Adapt to pcrel FDE encoding. - -2002-11-11 DJ Delorie - - * configure.in: Look for common files in the right place. - -2002-10-08 Ulrich Weigand - - * src/java_raw_api.c (ffi_java_raw_to_ptrarray): Interpret - raw data as _Jv_word values, not ffi_raw. - (ffi_java_ptrarray_to_raw): Likewise. - (ffi_java_rvalue_to_raw): New function. - (ffi_java_raw_call): Call it. - (ffi_java_raw_to_rvalue): New function. - (ffi_java_translate_args): Call it. - * src/ffitest.c (closure_test_fn): Interpret return value - as ffi_arg, not int. - * src/s390/ffi.c (ffi_prep_cif_machdep): Add missing - FFI_TYPE_POINTER case. - (ffi_closure_helper_SYSV): Likewise. Also, assume return - values extended to word size. - -2002-10-02 Andreas Jaeger - - * src/x86/ffi64.c (ffi_prep_cif_machdep): Remove debug output. - -2002-10-01 Bo Thorsen - - * include/ffi.h.in: Fix i386 win32 compilation. - -2002-09-30 Ulrich Weigand - - * configure.in: Add s390x-*-linux-* target. - * configure: Regenerate. - * include/ffi.h.in: Define S390X for s390x targets. - (FFI_CLOSURES): Define for s390/s390x. - (FFI_TRAMPOLINE_SIZE): Likewise. - (FFI_NATIVE_RAW_API): Likewise. - * src/prep_cif.c (ffi_prep_cif): Do not compute stack space for s390. - * src/types.c (FFI_TYPE_POINTER): Use 8-byte pointers on s390x. - * src/s390/ffi.c: Major rework of existing code. Add support for - s390x targets. Add closure support. - * src/s390/sysv.S: Likewise. - -2002-09-29 Richard Earnshaw - - * src/arm/sysv.S: Fix typo. - -2002-09-28 Richard Earnshaw - - * src/arm/sysv.S: If we don't have machine/asm.h and the pre-processor - has defined __USER_LABEL_PREFIX__, then use it in CNAME. - (ffi_call_SYSV): Handle soft-float. - -2002-09-27 Bo Thorsen - - * include/ffi.h.in: Fix multilib x86-64 support. - -2002-09-22 Kaveh R. Ghazi - - * Makefile.am (all-multi): Fix multilib parallel build. - -2002-07-19 Kaz Kojima - - * configure.in (sh[34]*-*-linux*): Add brackets. - * configure: Regenerate. - -2002-07-18 Kaz Kojima - - * Makefile.am: Add SH support. - * Makefile.in: Regenerate. - * configure.in (sh-*-linux*, sh[34]*-*-linux*): Add target. - * configure: Regenerate. - * include/ffi.h.in: Add SH support. - * src/sh/ffi.c: New file. - * src/sh/sysv.S: New file. - * src/types.c: Add SH support. - -2002-07-16 Bo Thorsen - - * src/x86/ffi64.c: New file that adds x86-64 support. - * src/x86/unix64.S: New file that handles argument setup for - x86-64. - * src/x86/sysv.S: Don't use this on x86-64. - * src/x86/ffi.c: Don't use this on x86-64. - Remove unused vars. - * src/prep_cif.c (ffi_prep_cif): Don't do stack size calculation - for x86-64. - * src/ffitest.c (struct6): New test that tests a special case in - the x86-64 ABI. - (struct7): Likewise. - (struct8): Likewise. - (struct9): Likewise. - (closure_test_fn): Silence warning about this when it's not used. - (main): Add the new tests. - (main): Fix a couple of wrong casts and silence some compiler warnings. - * include/ffi.h.in: Add x86-64 ABI definition. - * fficonfig.h.in: Regenerate. - * Makefile.am: Add x86-64 support. - * configure.in: Likewise. - * Makefile.in: Regenerate. - * configure: Likewise. - -2002-06-24 Bo Thorsen - - * src/types.c: Merge settings for similar architectures. - Add x86-64 sizes and alignments. - -2002-06-23 Bo Thorsen - - * src/arm/ffi.c (ffi_prep_args): Remove unused vars. - * src/sparc/ffi.c (ffi_prep_args_v8): Likewise. - * src/mips/ffi.c (ffi_prep_args): Likewise. - * src/m68k/ffi.c (ffi_prep_args): Likewise. - -2002-07-18 H.J. Lu (hjl@gnu.org) - - * Makefile.am (TARGET_SRC_MIPS_LINUX): New. - (libffi_la_SOURCES): Support MIPS_LINUX. - (libffi_convenience_la_SOURCES): Likewise. - * Makefile.in: Regenerated. - - * configure.in (mips64*-*): Skip. - (mips*-*-linux*): New. - * configure: Regenerated. - - * src/mips/ffi.c: Include . - -2002-06-06 Ulrich Weigand - - * src/s390/sysv.S: Save/restore %r6. Add DWARF-2 unwind info. - -2002-05-27 Roger Sayle - - * src/x86/ffi.c (ffi_prep_args): Remove reference to avn. - -2002-05-27 Bo Thorsen - - * src/x86/ffi.c (ffi_prep_args): Remove unused variable and - fix formatting. - -2002-05-13 Andreas Tobler - - * src/powerpc/ffi_darwin.c (ffi_prep_closure): Declare fd at - beginning of function (for older apple cc). - -2002-05-08 Alexandre Oliva - - * configure.in (ORIGINAL_LD_FOR_MULTILIBS): Preserve LD at - script entry, and set LD to it when configuring multilibs. - * configure: Rebuilt. - -2002-05-05 Jason Thorpe - - * configure.in (sparc64-*-netbsd*): Add target. - (sparc-*-netbsdelf*): Likewise. - * configure: Regenerate. - -2002-04-28 David S. Miller - - * configure.in, configure: Fix SPARC test in previous change. - -2002-04-29 Gerhard Tonn - - * Makefile.am: Add Linux for S/390 support. - * Makefile.in: Regenerate. - * configure.in: Add Linux for S/390 support. - * configure: Regenerate. - * include/ffi.h.in: Add Linux for S/390 support. - * src/s390/ffi.c: New file from libffi CVS tree. - * src/s390/sysv.S: New file from libffi CVS tree. - -2002-04-28 Jakub Jelinek - - * configure.in (HAVE_AS_SPARC_UA_PCREL): Check for working - %r_disp32(). - * src/sparc/v8.S: Use it. - * src/sparc/v9.S: Likewise. - * fficonfig.h.in: Rebuilt. - * configure: Rebuilt. - -2002-04-08 Hans Boehm - - * src/java_raw_api.c (ffi_java_raw_size): Handle FFI_TYPE_DOUBLE - correctly. - * src/ia64/unix.S: Add unwind information. Fix comments. - Save sp in a way that's compatible with unwind info. - (ffi_call_unix): Correctly restore sp in all cases. - * src/ia64/ffi.c: Add, fix comments. - -2002-04-08 Jakub Jelinek - - * src/sparc/v8.S: Make .eh_frame dependent on target word size. - -2002-04-06 Jason Thorpe - - * configure.in (alpha*-*-netbsd*): Add target. - * configure: Regenerate. - -2002-04-04 Jeff Sturm - - * src/sparc/v8.S: Add unwind info. - * src/sparc/v9.S: Likewise. - -2002-03-30 Krister Walfridsson - - * configure.in: Enable i*86-*-netbsdelf*. - * configure: Rebuilt. - -2002-03-29 David Billinghurst - - PR other/2620 - * src/mips/n32.s: Delete - * src/mips/o32.s: Delete - -2002-03-21 Loren J. Rittle - - * configure.in: Enable alpha*-*-freebsd*. - * configure: Rebuilt. - -2002-03-17 Bryce McKinlay - - * Makefile.am: libfficonvenience -> libffi_convenience. - * Makefile.in: Rebuilt. - - * Makefile.am: Define ffitest_OBJECTS. - * Makefile.in: Rebuilt. - -2002-03-07 Andreas Tobler - David Edelsohn - - * Makefile.am (EXTRA_DIST): Add Darwin and AIX closure files. - (TARGET_SRC_POWERPC_AIX): Add aix_closure.S. - (TARGET_SRC_POWERPC_DARWIN): Add darwin_closure.S. - * Makefile.in: Regenerate. - * include/ffi.h.in: Add AIX and Darwin closure definitions. - * src/powerpc/ffi_darwin.c (ffi_prep_closure): New function. - (flush_icache, flush_range): New functions. - (ffi_closure_helper_DARWIN): New function. - * src/powerpc/aix_closure.S: New file. - * src/powerpc/darwin_closure.S: New file. - -2002-02-24 Jeff Sturm - - * include/ffi.h.in: Add typedef for ffi_arg. - * src/ffitest.c (main): Declare rint with ffi_arg. - -2002-02-21 Andreas Tobler - - * src/powerpc/ffi_darwin.c (ffi_prep_args): Skip appropriate - number of GPRs for floating-point arguments. - -2002-01-31 Anthony Green - - * configure: Rebuilt. - * configure.in: Replace CHECK_SIZEOF and endian tests with - cross-compiler friendly macros. - * aclocal.m4 (AC_COMPILE_CHECK_SIZEOF, AC_C_BIGENDIAN_CROSS): New - macros. - -2002-01-18 David Edelsohn - - * src/powerpc/darwin.S (_ffi_call_AIX): New. - * src/powerpc/aix.S (ffi_call_DARWIN): New. - -2002-01-17 David Edelsohn - - * Makefile.am (EXTRA_DIST): Add Darwin and AIX files. - (TARGET_SRC_POWERPC_AIX): New. - (POWERPC_AIX): New stanza. - * Makefile.in: Regenerate. - * configure.in: Add AIX case. - * configure: Regenerate. - * include/ffi.h.in (ffi_abi): Add FFI_AIX. - * src/powerpc/ffi_darwin.c (ffi_status): Use "long" to scale frame - size. Fix "long double" support. - (ffi_call): Add FFI_AIX case. - * src/powerpc/aix.S: New. - -2001-10-09 John Hornkvist - - Implement Darwin PowerPC ABI. - * configure.in: Handle powerpc-*-darwin*. - * Makefile.am: Set source files for POWERPC_DARWIN. - * configure: Rebuilt. - * Makefile.in: Rebuilt. - * include/ffi.h.in: Define FFI_DARWIN and FFI_DEFAULT_ABI for - POWERPC_DARWIN. - * src/powerpc/darwin.S: New file. - * src/powerpc/ffi_darwin.c: New file. - -2001-10-07 Joseph S. Myers - - * src/x86/ffi.c: Fix spelling error of "separate" as "seperate". - -2001-07-16 Rainer Orth - - * src/x86/sysv.S: Avoid gas-only .balign directive. - Use C style comments. - -2001-07-16 Rainer Orth - - * src/alpha/ffi.c (ffi_prep_closure): Avoid gas-only mnemonic. - Fixes PR bootstrap/3563. - -2001-06-26 Rainer Orth - - * src/alpha/osf.S (ffi_closure_osf): Use .rdata for ECOFF. - -2001-06-25 Rainer Orth - - * configure.in: Recognize sparc*-sun-* host. - * configure: Regenerate. - -2001-06-06 Andrew Haley - - * src/alpha/osf.S (__FRAME_BEGIN__): Conditionalize for ELF. - -2001-06-03 Andrew Haley - - * src/alpha/osf.S: Add unwind info. - * src/powerpc/sysv.S: Add unwind info. - * src/powerpc/ppc_closure.S: Likewise. - -2000-05-31 Jeff Sturm - - * configure.in: Fix AC_ARG_ENABLE usage. - * configure: Rebuilt. - -2001-05-06 Bryce McKinlay - - * configure.in: Remove warning about beta code. - * configure: Rebuilt. - -2001-04-25 Hans Boehm - - * src/ia64/unix.S: Restore stack pointer when returning from - ffi_closure_UNIX. - * src/ia64/ffi.c: Fix typo in comment. - -2001-04-18 Jim Wilson - - * src/ia64/unix.S: Delete unnecessary increment and decrement of loc2 - to eliminate RAW DV. - -2001-04-12 Bryce McKinlay - - * Makefile.am: Make a libtool convenience library. - * Makefile.in: Rebuilt. - -2001-03-29 Bryce McKinlay - - * configure.in: Use different syntax for subdirectory creation. - * configure: Rebuilt. - -2001-03-27 Jon Beniston - - * configure.in: Added X86_WIN32 target (Win32, CygWin, MingW). - * configure: Rebuilt. - * Makefile.am: Added X86_WIN32 target support. - * Makefile.in: Rebuilt. - - * include/ffi.h.in: Added X86_WIN32 target support. - - * src/ffitest.c: Doesn't run structure tests for X86_WIN32 targets. - * src/types.c: Added X86_WIN32 target support. - - * src/x86/win32.S: New file. Based on sysv.S, but with EH - stuff removed and made to work with CygWin's gas. - -2001-03-26 Bryce McKinlay - - * configure.in: Make target subdirectory in build dir. - * Makefile.am: Override suffix based rules to specify correct output - subdirectory. - * Makefile.in: Rebuilt. - * configure: Rebuilt. - -2001-03-23 Kevin B Hendricks - - * src/powerpc/ppc_closure.S: New file. - * src/powerpc/ffi.c (ffi_prep_args): Fixed ABI compatibility bug - involving long long and register pairs. - (ffi_prep_closure): New function. - (flush_icache): Likewise. - (ffi_closure_helper_SYSV): Likewise. - * include/ffi.h.in (FFI_CLOSURES): Define on PPC. - (FFI_TRAMPOLINE_SIZE): Likewise. - (FFI_NATIVE_RAW_API): Likewise. - * Makefile.in: Rebuilt. - * Makefile.am (EXTRA_DIST): Added src/powerpc/ppc_closure.S. - (TARGET_SRC_POWERPC): Likewise. - -2001-03-19 Tom Tromey - - * Makefile.in: Rebuilt. - * Makefile.am (ffitest_LDFLAGS): New macro. - -2001-03-02 Nick Clifton - - * include/ffi.h.in: Remove RCS ident string. - * include/ffi_mips.h: Remove RCS ident string. - * src/debug.c: Remove RCS ident string. - * src/ffitest.c: Remove RCS ident string. - * src/prep_cif.c: Remove RCS ident string. - * src/types.c: Remove RCS ident string. - * src/alpha/ffi.c: Remove RCS ident string. - * src/alpha/osf.S: Remove RCS ident string. - * src/arm/ffi.c: Remove RCS ident string. - * src/arm/sysv.S: Remove RCS ident string. - * src/mips/ffi.c: Remove RCS ident string. - * src/mips/n32.S: Remove RCS ident string. - * src/mips/o32.S: Remove RCS ident string. - * src/sparc/ffi.c: Remove RCS ident string. - * src/sparc/v8.S: Remove RCS ident string. - * src/sparc/v9.S: Remove RCS ident string. - * src/x86/ffi.c: Remove RCS ident string. - * src/x86/sysv.S: Remove RCS ident string. - -2001-02-08 Joseph S. Myers - - * include/ffi.h.in: Change sourceware.cygnus.com references to - gcc.gnu.org. - -2000-12-09 Richard Henderson - - * src/alpha/ffi.c (ffi_call): Simplify struct return test. - (ffi_closure_osf_inner): Index rather than increment avalue - and arg_types. Give ffi_closure_osf the raw return value type. - * src/alpha/osf.S (ffi_closure_osf): Handle return value type - promotion. - -2000-12-07 Richard Henderson - - * src/raw_api.c (ffi_translate_args): Fix typo. - (ffi_prep_closure): Likewise. - - * include/ffi.h.in [ALPHA]: Define FFI_CLOSURES and - FFI_TRAMPOLINE_SIZE. - * src/alpha/ffi.c (ffi_prep_cif_machdep): Adjust minimal - cif->bytes for new ffi_call_osf implementation. - (ffi_prep_args): Absorb into ... - (ffi_call): ... here. Do all stack allocation here and - avoid a callback function. - (ffi_prep_closure, ffi_closure_osf_inner): New. - * src/alpha/osf.S (ffi_call_osf): Reimplement with no callback. - (ffi_closure_osf): New. - -2000-09-10 Alexandre Oliva - - * config.guess, config.sub, install-sh: Removed. - * ltconfig, ltmain.sh, missing, mkinstalldirs: Likewise. - * Makefile.in: Rebuilt. - - * acinclude.m4: Include libtool macros from the top level. - * aclocal.m4, configure: Rebuilt. - -2000-08-22 Alexandre Oliva - - * configure.in [i*86-*-freebsd*] (TARGET, TARGETDIR): Set. - * configure: Rebuilt. - -2000-05-11 Scott Bambrough - - * libffi/src/arm/sysv.S (ffi_call_SYSV): Doubles are not saved to - memory correctly. Use conditional instructions, not branches where - possible. - -2000-05-04 Tom Tromey - - * configure: Rebuilt. - * configure.in: Match `arm*-*-linux-*'. - From Chris Dornan . - -2000-04-28 Jakub Jelinek - - * Makefile.am (SUBDIRS): Define. - (AM_MAKEFLAGS): Likewise. - (Multilib support.): Add section. - * Makefile.in: Rebuilt. - * ltconfig (extra_compiler_flags, extra_compiler_flags_value): - New variables. Set for gcc using -print-multi-lib. Export them - to libtool. - (sparc64-*-linux-gnu*): Use libsuff 64 for search paths. - * ltmain.sh (B|b|V): Don't throw away gcc's -B, -b and -V options - for -shared links. - (extra_compiler_flags_value, extra_compiler_flags): Check these - for extra compiler options which need to be passed down in - compiler_flags. - -2000-04-16 Anthony Green - - * configure: Rebuilt. - * configure.in: Change i*86-pc-linux* to i*86-*-linux*. - -2000-04-14 Jakub Jelinek - - * include/ffi.h.in (SPARC64): Define for 64bit SPARC builds. - Set SPARC FFI_DEFAULT_ABI based on SPARC64 define. - * src/sparc/ffi.c (ffi_prep_args_v8): Renamed from ffi_prep_args. - Replace all void * sizeofs with sizeof(int). - Only compare type with FFI_TYPE_LONGDOUBLE if LONGDOUBLE is - different than DOUBLE. - Remove FFI_TYPE_SINT32 and FFI_TYPE_UINT32 cases (handled elsewhere). - (ffi_prep_args_v9): New function. - (ffi_prep_cif_machdep): Handle V9 ABI and long long on V8. - (ffi_V9_return_struct): New function. - (ffi_call): Handle FFI_V9 ABI from 64bit code and FFI_V8 ABI from - 32bit code (not yet cross-arch calls). - * src/sparc/v8.S: Add struct return delay nop. - Handle long long. - * src/sparc/v9.S: New file. - * src/prep_cif.c (ffi_prep_cif): Return structure pointer - is used on sparc64 only for structures larger than 32 bytes. - Pass by reference for structures is done for structure arguments - larger than 16 bytes. - * src/ffitest.c (main): Use 64bit rint on sparc64. - Run long long tests on sparc. - * src/types.c (FFI_TYPE_POINTER): Pointer is 64bit on alpha and - sparc64. - (FFI_TYPE_LONGDOUBLE): long double is 128 bit aligned to 128 bits - on sparc64. - * configure.in (sparc-*-linux*): New supported target. - (sparc64-*-linux*): Likewise. - * configure: Rebuilt. - * Makefile.am: Add v9.S to SPARC files. - * Makefile.in: Likewise. - (LINK): Surround $(CCLD) into double quotes, so that multilib - compiles work correctly. - -2000-04-04 Alexandre Petit-Bianco - - * configure: Rebuilt. - * configure.in: (i*86-*-solaris*): New libffi target. Patch - proposed by Bryce McKinlay. - -2000-03-20 Tom Tromey - - * Makefile.in: Hand edit for java_raw_api.lo. - -2000-03-08 Bryce McKinlay - - * config.guess, config.sub: Update from the gcc tree. - Fix for PR libgcj/168. - -2000-03-03 Tom Tromey - - * Makefile.in: Fixed ia64 by hand. - - * configure: Rebuilt. - * configure.in (--enable-multilib): New option. - (libffi_basedir): New subst. - (AC_OUTPUT): Added multilib code. - -2000-03-02 Tom Tromey - - * Makefile.in: Rebuilt. - * Makefile.am (TARGET_SRC_IA64): Use `ia64', not `alpha', as - directory name. - -2000-02-25 Hans Boehm - - * src/ia64/ffi.c, src/ia64/ia64_flags.h, src/ia64/unix.S: New - files. - * src/raw_api.c (ffi_translate_args): Fixed typo in argument - list. - (ffi_prep_raw_closure): Use ffi_translate_args, not - ffi_closure_translate. - * src/java_raw_api.c: New file. - * src/ffitest.c (closure_test_fn): New function. - (main): Define `rint' as long long on IA64. Added new test when - FFI_CLOSURES is defined. - * include/ffi.h.in (ALIGN): Use size_t, not unsigned. - (ffi_abi): Recognize IA64. - (ffi_raw): Added `flt' field. - Added "Java raw API" code. - * configure.in: Recognize ia64. - * Makefile.am (TARGET_SRC_IA64): New macro. - (libffi_la_common_SOURCES): Added java_raw_api.c. - (libffi_la_SOURCES): Define in IA64 case. - -2000-01-04 Tom Tromey - - * Makefile.in: Rebuilt with newer automake. - -1999-12-31 Tom Tromey - - * Makefile.am (INCLUDES): Added -I$(top_srcdir)/src. - -1999-09-01 Tom Tromey - - * include/ffi.h.in: Removed PACKAGE and VERSION defines and - undefs. - * fficonfig.h.in: Rebuilt. - * configure: Rebuilt. - * configure.in: Pass 3rd argument to AM_INIT_AUTOMAKE. - Use AM_PROG_LIBTOOL (automake 1.4 compatibility). - * acconfig.h: Don't #undef PACKAGE or VERSION. - -1999-08-09 Anthony Green - - * include/ffi.h.in: Try to work around messy header problem - with PACKAGE and VERSION. - - * configure: Rebuilt. - * configure.in: Change version to 2.00-beta. - - * fficonfig.h.in: Rebuilt. - * acconfig.h (FFI_NO_STRUCTS, FFI_NO_RAW_API): Define. - - * src/x86/ffi.c (ffi_raw_call): Rename. - -1999-08-02 Kresten Krab Thorup - - * src/x86/ffi.c (ffi_closure_SYSV): New function. - (ffi_prep_incoming_args_SYSV): Ditto. - (ffi_prep_closure): Ditto. - (ffi_closure_raw_SYSV): Ditto. - (ffi_prep_raw_closure): More ditto. - (ffi_call_raw): Final ditto. - - * include/ffi.h.in: Add definitions for closure and raw API. - - * src/x86/ffi.c (ffi_prep_cif_machdep): Added case for - FFI_TYPE_UINT64. - - * Makefile.am (libffi_la_common_SOURCES): Added raw_api.c - - * src/raw_api.c: New file. - - * include/ffi.h.in (ffi_raw): New type. - (UINT_ARG, SINT_ARG): New defines. - (ffi_closure, ffi_raw_closure): New types. - (ffi_prep_closure, ffi_prep_raw_closure): New declarations. - - * configure.in: Add check for endianness and sizeof void*. - - * src/x86/sysv.S (ffi_call_SYSV): Call fixup routine via argument, - instead of directly. - - * configure: Rebuilt. - -Thu Jul 8 14:28:42 1999 Anthony Green - - * configure.in: Add x86 and powerpc BeOS configurations. - From Makoto Kato . - -1999-05-09 Anthony Green - - * configure.in: Add warning about this being beta code. - Remove src/Makefile.am from the picture. - * configure: Rebuilt. - - * Makefile.am: Move logic from src/Makefile.am. Add changes - to support libffi as a target library. - * Makefile.in: Rebuilt. - - * aclocal.m4, config.guess, config.sub, ltconfig, ltmain.sh: - Upgraded to new autoconf, automake, libtool. - - * README: Tweaks. - - * LICENSE: Update copyright date. - - * src/Makefile.am, src/Makefile.in: Removed. - -1998-11-29 Anthony Green - - * include/ChangeLog: Removed. - * src/ChangeLog: Removed. - * src/mips/ChangeLog: Removed. - * src/sparc/ChangeLog: Remboved. - * src/x86/ChangeLog: Removed. - - * ChangeLog.v1: Created. - -============================================================================= -From the old ChangeLog.libffi file.... - -2011-02-08 Andreas Tobler - - * testsuite/lib/libffi.exp: Tweak for stand-alone mode. - -2009-12-25 Samuli Suominen - - * configure.ac: Undefine _AC_ARG_VAR_PRECIOUS for autoconf 2.64. - * configure: Rebuilt. - * fficonfig.h.in: Rebuilt. - -2009-06-16 Andrew Haley - - * testsuite/libffi.call/cls_align_sint64.c, - testsuite/libffi.call/cls_align_uint64.c, - testsuite/libffi.call/cls_longdouble_va.c, - testsuite/libffi.call/cls_ulonglong.c, - testsuite/libffi.call/return_ll1.c, - testsuite/libffi.call/stret_medium2.c: Fix printf format - specifiers. - * testsuite/libffi.call/huge_struct.c: Ad x86 XFAILs. - * testsuite/libffi.call/float2.c: Fix dg-excess-errors. - * testsuite/libffi.call/ffitest.h, - testsuite/libffi.special/ffitestcxx.h (PRIdLL, PRIuLL): Define. - -2009-06-12 Andrew Haley - - * testsuite/libffi.call/cls_align_sint64.c, - testsuite/libffi.call/cls_align_uint64.c, - testsuite/libffi.call/cls_ulonglong.c, - testsuite/libffi.call/return_ll1.c, - testsuite/libffi.call/stret_medium2.c: Fix printf format - specifiers. - testsuite/libffi.special/unwindtest.cc: include stdint.h. - -2009-06-11 Timothy Wall - - * Makefile.am, - configure.ac, - include/ffi.h.in, - include/ffi_common.h, - src/closures.c, - src/dlmalloc.c, - src/x86/ffi.c, - src/x86/ffitarget.h, - src/x86/win64.S (new), - README: Added win64 support (mingw or MSVC) - * Makefile.in, - include/Makefile.in, - man/Makefile.in, - testsuite/Makefile.in, - configure, - aclocal.m4: Regenerated - * ltcf-c.sh: properly escape cygwin/w32 path - * man/ffi_call.3: Clarify size requirements for return value. - * src/x86/ffi64.c: Fix filename in comment. - * src/x86/win32.S: Remove unused extern. - - * testsuite/libffi.call/closure_fn0.c, - testsuite/libffi.call/closure_fn1.c, - testsuite/libffi.call/closure_fn2.c, - testsuite/libffi.call/closure_fn3.c, - testsuite/libffi.call/closure_fn4.c, - testsuite/libffi.call/closure_fn5.c, - testsuite/libffi.call/closure_fn6.c, - testsuite/libffi.call/closure_stdcall.c, - testsuite/libffi.call/cls_12byte.c, - testsuite/libffi.call/cls_16byte.c, - testsuite/libffi.call/cls_18byte.c, - testsuite/libffi.call/cls_19byte.c, - testsuite/libffi.call/cls_1_1byte.c, - testsuite/libffi.call/cls_20byte.c, - testsuite/libffi.call/cls_20byte1.c, - testsuite/libffi.call/cls_24byte.c, - testsuite/libffi.call/cls_2byte.c, - testsuite/libffi.call/cls_3_1byte.c, - testsuite/libffi.call/cls_3byte1.c, - testsuite/libffi.call/cls_3byte2.c, - testsuite/libffi.call/cls_4_1byte.c, - testsuite/libffi.call/cls_4byte.c, - testsuite/libffi.call/cls_5_1_byte.c, - testsuite/libffi.call/cls_5byte.c, - testsuite/libffi.call/cls_64byte.c, - testsuite/libffi.call/cls_6_1_byte.c, - testsuite/libffi.call/cls_6byte.c, - testsuite/libffi.call/cls_7_1_byte.c, - testsuite/libffi.call/cls_7byte.c, - testsuite/libffi.call/cls_8byte.c, - testsuite/libffi.call/cls_9byte1.c, - testsuite/libffi.call/cls_9byte2.c, - testsuite/libffi.call/cls_align_double.c, - testsuite/libffi.call/cls_align_float.c, - testsuite/libffi.call/cls_align_longdouble.c, - testsuite/libffi.call/cls_align_longdouble_split.c, - testsuite/libffi.call/cls_align_longdouble_split2.c, - testsuite/libffi.call/cls_align_pointer.c, - testsuite/libffi.call/cls_align_sint16.c, - testsuite/libffi.call/cls_align_sint32.c, - testsuite/libffi.call/cls_align_sint64.c, - testsuite/libffi.call/cls_align_uint16.c, - testsuite/libffi.call/cls_align_uint32.c, - testsuite/libffi.call/cls_align_uint64.c, - testsuite/libffi.call/cls_dbls_struct.c, - testsuite/libffi.call/cls_double.c, - testsuite/libffi.call/cls_double_va.c, - testsuite/libffi.call/cls_float.c, - testsuite/libffi.call/cls_longdouble.c, - testsuite/libffi.call/cls_longdouble_va.c, - testsuite/libffi.call/cls_multi_schar.c, - testsuite/libffi.call/cls_multi_sshort.c, - testsuite/libffi.call/cls_multi_sshortchar.c, - testsuite/libffi.call/cls_multi_uchar.c, - testsuite/libffi.call/cls_multi_ushort.c, - testsuite/libffi.call/cls_multi_ushortchar.c, - testsuite/libffi.call/cls_pointer.c, - testsuite/libffi.call/cls_pointer_stack.c, - testsuite/libffi.call/cls_schar.c, - testsuite/libffi.call/cls_sint.c, - testsuite/libffi.call/cls_sshort.c, - testsuite/libffi.call/cls_uchar.c, - testsuite/libffi.call/cls_uint.c, - testsuite/libffi.call/cls_ulonglong.c, - testsuite/libffi.call/cls_ushort.c, - testsuite/libffi.call/err_bad_abi.c, - testsuite/libffi.call/err_bad_typedef.c, - testsuite/libffi.call/float2.c, - testsuite/libffi.call/huge_struct.c, - testsuite/libffi.call/nested_struct.c, - testsuite/libffi.call/nested_struct1.c, - testsuite/libffi.call/nested_struct10.c, - testsuite/libffi.call/nested_struct2.c, - testsuite/libffi.call/nested_struct3.c, - testsuite/libffi.call/nested_struct4.c, - testsuite/libffi.call/nested_struct5.c, - testsuite/libffi.call/nested_struct6.c, - testsuite/libffi.call/nested_struct7.c, - testsuite/libffi.call/nested_struct8.c, - testsuite/libffi.call/nested_struct9.c, - testsuite/libffi.call/problem1.c, - testsuite/libffi.call/return_ldl.c, - testsuite/libffi.call/return_ll1.c, - testsuite/libffi.call/stret_large.c, - testsuite/libffi.call/stret_large2.c, - testsuite/libffi.call/stret_medium.c, - testsuite/libffi.call/stret_medium2.c, - testsuite/libffi.special/unwindtest.cc: use ffi_closure_alloc instead - of checking for MMAP. Use intptr_t instead of long casts. - -2009-06-04 Andrew Haley - - * src/powerpc/ffitarget.h: Fix misapplied merge from gcc. - -2009-06-04 Andrew Haley - - * src/mips/o32.S, - src/mips/n32.S: Fix licence formatting. - -2009-06-04 Andrew Haley - - * src/x86/darwin.S: Fix licence formatting. - src/x86/win32.S: Likewise. - src/sh64/sysv.S: Likewise. - src/sh/sysv.S: Likewise. - -2009-06-04 Andrew Haley - - * src/sh64/ffi.c: Remove lint directives. Was missing from merge - of Andreas Tobler's patch from 2006-04-22. - -2009-06-04 Andrew Haley - - * src/sh/ffi.c: Apply missing hunk from Alexandre Oliva's patch of - 2007-03-07. - -2008-12-26 Timothy Wall - - * testsuite/libffi.call/cls_longdouble.c, - testsuite/libffi.call/cls_longdouble_va.c, - testsuite/libffi.call/cls_align_longdouble.c, - testsuite/libffi.call/cls_align_longdouble_split.c, - testsuite/libffi.call/cls_align_longdouble_split2.c: mark expected - failures on x86_64 cygwin/mingw. - -2008-12-22 Timothy Wall - - * testsuite/libffi.call/closure_fn0.c, - testsuite/libffi.call/closure_fn1.c, - testsuite/libffi.call/closure_fn2.c, - testsuite/libffi.call/closure_fn3.c, - testsuite/libffi.call/closure_fn4.c, - testsuite/libffi.call/closure_fn5.c, - testsuite/libffi.call/closure_fn6.c, - testsuite/libffi.call/closure_loc_fn0.c, - testsuite/libffi.call/closure_stdcall.c, - testsuite/libffi.call/cls_align_pointer.c, - testsuite/libffi.call/cls_pointer.c, - testsuite/libffi.call/cls_pointer_stack.c: use portable cast from - pointer to integer (intptr_t). - * testsuite/libffi.call/cls_longdouble.c: disable for win64. - -2008-12-19 Anthony Green - - * configure.ac: Bump version to 3.0.8. - * configure, doc/stamp-vti, doc/version.texi: Rebuilt. - * libtool-version: Increment revision. - * README: Update for new release. - -2008-11-11 Anthony Green - - * configure.ac: Bump version to 3.0.7. - * configure, doc/stamp-vti, doc/version.texi: Rebuilt. - * libtool-version: Increment revision. - * README: Update for new release. - -2008-08-25 Andreas Tobler - - * src/powerpc/ffitarget.h (ffi_abi): Add FFI_LINUX and - FFI_LINUX_SOFT_FLOAT to the POWERPC_FREEBSD enum. - Add note about flag bits used for FFI_SYSV_TYPE_SMALL_STRUCT. - Adjust copyright notice. - * src/powerpc/ffi.c: Add two new flags to indicate if we have one - register or two register to use for FFI_SYSV structs. - (ffi_prep_cif_machdep): Pass the right register flag introduced above. - (ffi_closure_helper_SYSV): Fix the return type for - FFI_SYSV_TYPE_SMALL_STRUCT. Comment. - Adjust copyright notice. - -2008-07-24 Anthony Green - - * testsuite/libffi.call/cls_dbls_struct.c, - testsuite/libffi.call/cls_double_va.c, - testsuite/libffi.call/cls_longdouble.c, - testsuite/libffi.call/cls_longdouble_va.c, - testsuite/libffi.call/cls_pointer.c, - testsuite/libffi.call/cls_pointer_stack.c, - testsuite/libffi.call/err_bad_abi.c: Clean up failures from - compiler warnings. - -2008-07-17 Anthony Green - - * configure.ac: Bump version to 3.0.6. - * configure, doc/stamp-vti, doc/version.texi: Rebuilt. - * libtool-version: Increment revision. Add documentation. - * README: Update for new release. - -2008-07-16 Kaz Kojima - - * src/sh/ffi.c (ffi_prep_closure_loc): Turn INSN into an unsigned - int. - -2008-07-16 Kaz Kojima - - * src/sh/sysv.S: Add .note.GNU-stack on Linux. - * src/sh64/sysv.S: Likewise. - -2008-04-03 Anthony Green - - * libffi.pc.in (Libs): Add -L${libdir}. - * configure.ac: Bump version to 3.0.5. - * configure, doc/stamp-vti, doc/version.texi: Rebuilt. - * libtool-version: Increment revision. - * README: Update for new release. - -2008-04-03 Anthony Green - Xerces Ranby - - * include/ffi.h.in: Wrap definition of target architecture to - protect from double definitions. - -2008-03-22 Moriyoshi Koizumi - - * src/x86/ffi.c (ffi_prep_closure_loc): Fix for bug revealed in - closure_loc_fn0.c. - * testsuite/libffi.call/closure_loc_fn0.c (closure_loc_test_fn0): - New test. - -2008-03-04 Anthony Green - Blake Chaffin - hos@tamanegi.org - - * testsuite/libffi.call/cls_align_longdouble_split2.c - testsuite/libffi.call/cls_align_longdouble_split.c - testsuite/libffi.call/cls_dbls_struct.c - testsuite/libffi.call/cls_double_va.c - testsuite/libffi.call/cls_longdouble.c - testsuite/libffi.call/cls_longdouble_va.c - testsuite/libffi.call/cls_pointer.c - testsuite/libffi.call/cls_pointer_stack.c - testsuite/libffi.call/err_bad_abi.c - testsuite/libffi.call/err_bad_typedef.c - testsuite/libffi.call/huge_struct.c - testsuite/libffi.call/stret_large2.c - testsuite/libffi.call/stret_large.c - testsuite/libffi.call/stret_medium2.c - testsuite/libffi.call/stret_medium.c: New tests from Apple. - -2008-02-26 Jakub Jelinek - Anthony Green - - * src/alpha/osf.S: Add .note.GNU-stack on Linux. - * src/s390/sysv.S: Likewise. - * src/powerpc/linux64.S: Likewise. - * src/powerpc/linux64_closure.S: Likewise. - * src/powerpc/ppc_closure.S: Likewise. - * src/powerpc/sysv.S: Likewise. - * src/x86/unix64.S: Likewise. - * src/x86/sysv.S: Likewise. - * src/sparc/v8.S: Likewise. - * src/sparc/v9.S: Likewise. - * src/m68k/sysv.S: Likewise. - * src/ia64/unix.S: Likewise. - * src/arm/sysv.S: Likewise. - -2008-02-26 Anthony Green - Thomas Heller - - * src/x86/ffi.c (ffi_closure_SYSV_inner): Change C++ comment to C - comment. - -2008-02-26 Anthony Green - Thomas Heller - - * include/ffi.h.in: Change void (*)() to void (*)(void). - -2008-02-26 Anthony Green - Thomas Heller - - * src/alpha/ffi.c: Change void (*)() to void (*)(void). - src/alpha/osf.S, src/arm/ffi.c, src/frv/ffi.c, src/ia64/ffi.c, - src/ia64/unix.S, src/java_raw_api.c, src/m32r/ffi.c, - src/mips/ffi.c, src/pa/ffi.c, src/pa/hpux32.S, src/pa/linux.S, - src/powerpc/ffi.c, src/powerpc/ffi_darwin.c, src/raw_api.c, - src/s390/ffi.c, src/sh/ffi.c, src/sh64/ffi.c, src/sparc/ffi.c, - src/x86/ffi.c, src/x86/unix64.S, src/x86/darwin64.S, - src/x86/ffi64.c: Ditto. - -2008-02-24 Anthony Green - - * configure.ac: Accept openbsd*, not just openbsd. - Bump version to 3.0.4. - * configure, doc/stamp-vti, doc/version.texi: Rebuilt. - * libtool-version: Increment revision. - * README: Update for new release. - -2008-02-22 Anthony Green - - * README: Clean up list of tested platforms. - -2008-02-22 Anthony Green - - * configure.ac: Bump version to 3.0.3. - * configure, doc/stamp-vti, doc/version.texi: Rebuilt. - * libtool-version: Increment revision. - * README: Update for new release. Clean up test docs. - -2008-02-22 Bjoern Koenig - Andreas Tobler - - * configure.ac: Add amd64-*-freebsd* target. - * configure: Regenerate. - -2008-02-22 Thomas Heller - - * configure.ac: Add x86 OpenBSD support. - * configure: Rebuilt. - -2008-02-21 Thomas Heller - - * README: Change "make test" to "make check". - -2008-02-21 Anthony Green - - * configure.ac: Bump version to 3.0.2. - * configure, doc/stamp-vti, doc/version.texi: Rebuilt. - * libtool-version: Increment revision. - * README: Update for new release. - -2008-02-21 Björn König - - * src/x86/freebsd.S: New file. - * configure.ac: Add x86 FreeBSD support. - * Makefile.am: Ditto. - -2008-02-15 Anthony Green - - * configure.ac: Bump version to 3.0.1. - * configure, doc/stamp-vti, doc/version.texi: Rebuilt. - * libtool-version: Increment revision. - * README: Update for new release. - -2008-02-15 David Daney - - * src/mips/ffi.c: Remove extra '>' from include directive. - (ffi_prep_closure_loc): Use clear_location instead of tramp. - -2008-02-15 Anthony Green - - * configure.ac: Bump version to 3.0.0. - * configure, doc/stamp-vti, doc/version.texi: Rebuilt. - -2008-02-15 David Daney - - * src/mips/ffi.c (USE__BUILTIN___CLEAR_CACHE): - Define (conditionally), and use it to include cachectl.h. - (ffi_prep_closure_loc): Fix cache flushing. - * src/mips/ffitarget.h (_ABIN32, _ABI64, _ABIO32): Define. - -2008-02-15 Anthony Green - - * man/ffi_call.3, man/ffi_prep_cif.3, man/ffi.3: - Update dates and remove all references to ffi_prep_closure. - * configure.ac: Bump version to 2.99.9. - * configure, doc/stamp-vti, doc/version.texi: Rebuilt. - -2008-02-15 Anthony Green - - * man/ffi_prep_closure.3: Delete. - * man/Makefile.am (EXTRA_DIST): Remove ffi_prep_closure.3. - (man_MANS): Ditto. - * man/Makefile.in: Rebuilt. - * configure.ac: Bump version to 2.99.8. - * configure, doc/stamp-vti, doc/version.texi: Rebuilt. - -2008-02-14 Anthony Green - - * configure.ac: Bump version to 2.99.7. - * configure, doc/stamp-vti, doc/version.texi: Rebuilt. - * include/ffi.h.in LICENSE src/debug.c src/closures.c - src/ffitest.c src/s390/sysv.S src/s390/ffitarget.h - src/types.c src/m68k/ffitarget.h src/raw_api.c src/frv/ffi.c - src/frv/ffitarget.h src/sh/ffi.c src/sh/sysv.S - src/sh/ffitarget.h src/powerpc/ffitarget.h src/pa/ffi.c - src/pa/ffitarget.h src/pa/linux.S src/java_raw_api.c - src/cris/ffitarget.h src/x86/ffi.c src/x86/sysv.S - src/x86/unix64.S src/x86/win32.S src/x86/ffitarget.h - src/x86/ffi64.c src/x86/darwin.S src/ia64/ffi.c - src/ia64/ffitarget.h src/ia64/ia64_flags.h src/ia64/unix.S - src/sparc/ffi.c src/sparc/v9.S src/sparc/ffitarget.h - src/sparc/v8.S src/alpha/ffi.c src/alpha/ffitarget.h - src/alpha/osf.S src/sh64/ffi.c src/sh64/sysv.S - src/sh64/ffitarget.h src/mips/ffi.c src/mips/ffitarget.h - src/mips/n32.S src/mips/o32.S src/arm/ffi.c src/arm/sysv.S - src/arm/ffitarget.h src/prep_cif.c: Update license text. - -2008-02-14 Anthony Green - - * README: Update tested platforms. - * configure.ac: Bump version to 2.99.6. - * configure: Rebuilt. - -2008-02-14 Anthony Green - - * configure.ac: Bump version to 2.99.5. - * configure: Rebuilt. - * Makefile.am (EXTRA_DIST): Add darwin64.S - * Makefile.in: Rebuilt. - * testsuite/lib/libffi-dg.exp: Remove libstdc++ bits from GCC tree. - * LICENSE: Update WARRANTY. - -2008-02-14 Anthony Green - - * libffi.pc.in (libdir): Fix libdir definition. - * configure.ac: Bump version to 2.99.4. - * configure: Rebuilt. - -2008-02-14 Anthony Green - - * README: Update. - * libffi.info: New file. - * doc/stamp-vti: New file. - * configure.ac: Bump version to 2.99.3. - * configure: Rebuilt. - -2008-02-14 Anthony Green - - * Makefile.am (SUBDIRS): Add man dir. - * Makefile.in: Rebuilt. - * configure.ac: Create Makefile. - * configure: Rebuilt. - * man/ffi_call.3 man/ffi_prep_cif.3 man/ffi_prep_closure.3 - man/Makefile.am man/Makefile.in: New files. - -2008-02-14 Tom Tromey - - * aclocal.m4, Makefile.in, configure, fficonfig.h.in: Rebuilt. - * mdate-sh, texinfo.tex: New files. - * Makefile.am (info_TEXINFOS): New variable. - * doc/libffi.texi: New file. - * doc/version.texi: Likewise. - -2008-02-14 Anthony Green - - * Makefile.am (AM_CFLAGS): Don't compile with -D$(TARGET). - (lib_LTLIBRARIES): Define. - (toolexeclib_LIBRARIES): Undefine. - * Makefile.in: Rebuilt. - * configure.ac: Reset version to 2.99.1. - * configure.in: Rebuilt. - -2008-02-14 Anthony Green - - * libffi.pc.in: Use @PACKAGE_NAME@ and @PACKAGE_VERSION@. - * configure.ac: Reset version to 2.99.1. - * configure.in: Rebuilt. - * Makefile.am (EXTRA_DIST): Add ChangeLog.libffi. - * Makefile.in: Rebuilt. - * LICENSE: Update copyright notice. - -2008-02-14 Anthony Green - - * include/Makefile.am (nodist_includes_HEADERS): Define. Don't - distribute ffitarget.h or ffi.h from the build include dir. - * Makefile.in: Rebuilt. - -2008-02-14 Anthony Green - - * include/Makefile.am (includesdir): Install headers under libdir. - (pkgconfigdir): Define. Install libffi.pc. - * include/Makefile.in: Rebuilt. - * libffi.pc.in: Create. - * libtool-version: Increment CURRENT - * configure.ac: Add libffi.pc.in - * configure: Rebuilt. - -2008-02-03 Anthony Green - - * include/Makefile.am (includesdir): Fix header install with - DESTDIR. - * include/Makefile.in: Rebuilt. - -2008-02-03 Timothy Wall - - * src/x86/ffi.c (FFI_INIT_TRAMPOLINE_STDCALL): Calculate jump return - offset based on code pointer, not data pointer. - -2008-02-01 Anthony Green - - * include/Makefile.am: Fix header installs. - * Makefile.am: Ditto. - * include/Makefile.in: Rebuilt. - * Makefile.in: Ditto. - -2008-02-01 Anthony Green - - * src/x86/ffi.c (FFI_INIT_TRAMPOLINE_STDCALL, - FFI_INIT_TRAMPOLINE): Revert my broken changes to twall's last - patch. - -2008-01-31 Anthony Green - - * Makefile.am (EXTRA_DIST): Add missing files. - * testsuite/Makefile.am: Ditto. - * Makefile.in, testsuite/Makefile.in: Rebuilt. - -2008-01-31 Timothy Wall - - * testsuite/libffi.call/closure_stdcall.c: Add test for stdcall - closures. - * src/x86/ffitarget.h: Increase size of trampoline for stdcall - closures. - * src/x86/win32.S: Add assembly for stdcall closure. - * src/x86/ffi.c: Initialize stdcall closure trampoline. - -2008-01-30 H.J. Lu - - PR libffi/34612 - * src/x86/sysv.S (ffi_closure_SYSV): Pop 4 byte from stack when - returning struct. - - * testsuite/libffi.call/call.exp: Add "-O2 -fomit-frame-pointer" - tests. - -2008-01-30 Anthony Green - - * Makefile.am, include/Makefile.am: Move headers to - libffi_la_SOURCES for new automake. - * Makefile.in, include/Makefile.in: Rebuilt. - - * testsuite/lib/wrapper.exp: Copied from gcc tree to allow for - execution outside of gcc tree. - * testsuite/lib/target-libpath.exp: Ditto. - - * testsuite/lib/libffi-dg.exp: Many changes to allow for execution - outside of gcc tree. - - -============================================================================= -From the old ChangeLog.libgcj file.... - -2004-01-14 Kelley Cook - - * configure.in: Add in AC_PREREQ(2.13) - -2003-02-20 Alexandre Oliva - - * configure.in: Propagate ORIGINAL_LD_FOR_MULTILIBS to - config.status. - * configure: Rebuilt. - -2002-01-27 Alexandre Oliva - - * configure.in (toolexecdir, toolexeclibdir): Set and AC_SUBST. - Remove USE_LIBDIR conditional. - * Makefile.am (toolexecdir, toolexeclibdir): Don't override. - * Makefile.in, configure: Rebuilt. - -Mon Aug 9 18:33:38 1999 Rainer Orth - - * include/Makefile.in: Rebuilt. - * Makefile.in: Rebuilt - * Makefile.am (toolexeclibdir): Add $(MULTISUBDIR) even for native - builds. - Use USE_LIBDIR. - - * configure: Rebuilt. - * configure.in (USE_LIBDIR): Define for native builds. - Use lowercase in configure --help explanations. - -1999-08-08 Anthony Green - - * include/ffi.h.in (FFI_FN): Remove `...'. - -1999-08-08 Anthony Green - - * Makefile.in: Rebuilt. - * Makefile.am (AM_CFLAGS): Compile with -fexceptions. - - * src/x86/sysv.S: Add exception handling metadata. - - -============================================================================= - -The libffi version 1 ChangeLog archive. - -Version 1 of libffi had per-directory ChangeLogs. Current and future -versions have a single ChangeLog file in the root directory. The -version 1 ChangeLogs have all been concatenated into this file for -future reference only. - ---- libffi ---------------------------------------------------------------- - -Mon Oct 5 02:17:50 1998 Anthony Green - - * configure.in: Boosted rev. - * configure, Makefile.in, aclocal.m4: Rebuilt. - * README: Boosted rev and updated release notes. - -Mon Oct 5 01:03:03 1998 Anthony Green - - * configure.in: Boosted rev. - * configure, Makefile.in, aclocal.m4: Rebuilt. - * README: Boosted rev and updated release notes. - -1998-07-25 Andreas Schwab - - * m68k/ffi.c (ffi_prep_cif_machdep): Use bitmask for cif->flags. - Correctly handle small structures. - (ffi_prep_args): Also handle small structures. - (ffi_call): Pass size of return type to ffi_call_SYSV. - * m68k/sysv.S: Adjust for above changes. Correctly align small - structures in the return value. - - * types.c (uint64, sint64) [M68K]: Change alignment to 4. - -Fri Apr 17 17:26:58 1998 Anthony Green - - * configure.in: Boosted rev. - * configure,Makefile.in,aclocal.m4: Rebuilt. - * README: Boosted rev and added release notes. - -Sun Feb 22 00:50:41 1998 Geoff Keating - - * configure.in: Add PowerPC config bits. - -1998-02-14 Andreas Schwab - - * configure.in: Add m68k config bits. Change AC_CANONICAL_SYSTEM - to AC_CANONICAL_HOST, this is not a compiler. Use $host instead - of $target. Remove AC_CHECK_SIZEOF(char), we already know the - result. Fix argument of AC_ARG_ENABLE. - * configure, fficonfig.h.in: Rebuilt. - -Tue Feb 10 20:53:40 1998 Richard Henderson - - * configure.in: Add Alpha config bits. - -Tue May 13 13:39:20 1997 Anthony Green - - * README: Updated dates and reworded Irix comments. - - * configure.in: Removed AC_PROG_RANLIB. - - * Makefile.in, aclocal.m4, config.guess, config.sub, configure, - ltmain.sh, */Makefile.in: libtoolized again and rebuilt with - automake and autoconf. - -Sat May 10 18:44:50 1997 Tom Tromey - - * configure, aclocal.m4: Rebuilt. - * configure.in: Don't compute EXTRADIST; now handled in - src/Makefile.in. Removed macros implied by AM_INIT_AUTOMAKE. - Don't run AM_MAINTAINER_MODE. - -Thu May 8 14:34:05 1997 Anthony Green - - * missing, ltmain.sh, ltconfig.sh: Created. These are new files - required by automake and libtool. - - * README: Boosted rev to 1.14. Added notes. - - * acconfig.h: Moved PACKAGE and VERSION for new automake. - - * configure.in: Changes for libtool. - - * Makefile.am (check): make test now make check. Uses libtool now. - - * Makefile.in, configure.in, aclocal.h, fficonfig.h.in: Rebuilt. - -Thu May 1 16:27:07 1997 Anthony Green - - * missing: Added file required by new automake. - -Tue Nov 26 14:10:42 1996 Anthony Green - - * acconfig.h: Added USING_PURIFY flag. This is defined when - --enable-purify-safety was used at configure time. - - * configure.in (allsources): Added --enable-purify-safety switch. - (VERSION): Boosted rev to 1.13. - * configure: Rebuilt. - -Fri Nov 22 06:46:12 1996 Anthony Green - - * configure.in (VERSION): Boosted rev to 1.12. - Removed special CFLAGS hack for gcc. - * configure: Rebuilt. - - * README: Boosted rev to 1.12. Added notes. - - * Many files: Cygnus Support changed to Cygnus Solutions. - -Wed Oct 30 11:15:25 1996 Anthony Green - - * configure.in (VERSION): Boosted rev to 1.11. - * configure: Rebuilt. - - * README: Boosted rev to 1.11. Added notes about GNU make. - -Tue Oct 29 12:25:12 1996 Anthony Green - - * configure.in: Fixed -Wall trick. - (VERSION): Boosted rev. - * configure: Rebuilt - - * acconfig.h: Needed for --enable-debug configure switch. - - * README: Boosted rev to 1.09. Added more notes on building - libffi, and LCLint. - - * configure.in: Added --enable-debug switch. Boosted rev to - 1.09. - * configure: Rebuilt - -Tue Oct 15 13:11:28 1996 Anthony Green - - * configure.in (VERSION): Boosted rev to 1.08 - * configure: Rebuilt. - - * README: Added n32 bug fix notes. - - * Makefile.am: Added "make lint" production. - * Makefile.in: Rebuilt. - -Mon Oct 14 10:54:46 1996 Anthony Green - - * README: Added web page reference. - - * configure.in, README: Boosted rev to 1.05 - * configure: Rebuilt. - - * README: Fixed n32 sample code. - -Fri Oct 11 17:09:28 1996 Anthony Green - - * README: Added sparc notes. - - * configure.in, README: Boosted rev to 1.04. - * configure: Rebuilt. - -Thu Oct 10 10:31:03 1996 Anthony Green - - * configure.in, README: Boosted rev to 1.03. - * configure: Rebuilt. - - * README: Added struct notes. - - * Makefile.am (EXTRA_DIST): Added LICENSE to distribution. - * Makefile.in: Rebuilt. - - * README: Removed Linux section. No special notes now - because aggregates arg/return types work. - -Wed Oct 9 16:16:42 1996 Anthony Green - - * README, configure.in (VERSION): Boosted rev to 1.02 - * configure: Rebuilt. - -Tue Oct 8 11:56:33 1996 Anthony Green - - * README (NOTE): Added n32 notes. - - * Makefile.am: Added test production. - * Makefile: Rebuilt - - * README: spell checked! - - * configure.in (VERSION): Boosted rev to 1.01 - * configure: Rebuilt. - -Mon Oct 7 15:50:22 1996 Anthony Green - - * configure.in: Added nasty bit to support SGI tools. - * configure: Rebuilt. - - * README: Added SGI notes. Added note about automake bug. - -Mon Oct 7 11:00:28 1996 Anthony Green - - * README: Rewrote intro, and fixed examples. - -Fri Oct 4 10:19:55 1996 Anthony Green - - * configure.in: -D$TARGET is no longer used as a compiler switch. - It is now inserted into ffi.h at configure time. - * configure: Rebuilt. - - * FFI_ABI and FFI_STATUS are now ffi_abi and ffi_status. - -Thu Oct 3 13:47:34 1996 Anthony Green - - * README, LICENSE: Created. Wrote some docs. - - * configure.in: Don't barf on i586-unknown-linuxaout. - Added EXTRADIST code for "make dist". - * configure: Rebuilt. - - * */Makefile.in: Rebuilt with patched automake. - -Tue Oct 1 17:12:25 1996 Anthony Green - - * Makefile.am, aclocal.m4, config.guess, config.sub, - configure.in, fficonfig.h.in, install-sh, mkinstalldirs, - stamp-h.in: Created - * Makefile.in, configure: Generated - ---- libffi/include -------------------------------------------------------- - -Tue Feb 24 13:09:36 1998 Anthony Green - - * ffi_mips.h: Updated FFI_TYPE_STRUCT_* values based on - ffi.h.in changes. This is a work-around for SGI's "simple" - assembler. - -Sun Feb 22 00:51:55 1998 Geoff Keating - - * ffi.h.in: PowerPC support. - -1998-02-14 Andreas Schwab - - * ffi.h.in: Add m68k support. - (FFI_TYPE_LONGDOUBLE): Make it a separate value. - -Tue Feb 10 20:55:16 1998 Richard Henderson - - * ffi.h.in (SIZEOF_ARG): Use a pointer type by default. - - * ffi.h.in: Alpha support. - -Fri Nov 22 06:48:45 1996 Anthony Green - - * ffi.h.in, ffi_common.h: Cygnus Support -> Cygnus Solutions. - -Wed Nov 20 22:31:01 1996 Anthony Green - - * ffi.h.in: Added ffi_type_void definition. - -Tue Oct 29 12:22:40 1996 Anthony Green - - * Makefile.am (hack_DATA): Always install ffi_mips.h. - - * ffi.h.in: Removed FFI_DEBUG. It's now in the correct - place (acconfig.h). - Added #include for size_t definition. - -Tue Oct 15 17:23:35 1996 Anthony Green - - * ffi.h.in, ffi_common.h, ffi_mips.h: More clean up. - Commented out #define of FFI_DEBUG. - -Tue Oct 15 13:01:06 1996 Anthony Green - - * ffi_common.h: Added bool definition. - - * ffi.h.in, ffi_common.h: Clean up based on LCLint output. - Added funny /*@...@*/ comments to annotate source. - -Mon Oct 14 12:29:23 1996 Anthony Green - - * ffi.h.in: Interface changes based on feedback from Jim - Blandy. - -Fri Oct 11 16:49:35 1996 Anthony Green - - * ffi.h.in: Small change for sparc support. - -Thu Oct 10 14:53:37 1996 Anthony Green - - * ffi_mips.h: Added FFI_TYPE_STRUCT_* definitions for - special structure return types. - -Wed Oct 9 13:55:57 1996 Anthony Green - - * ffi.h.in: Added SIZEOF_ARG definition for X86 - -Tue Oct 8 11:40:36 1996 Anthony Green - - * ffi.h.in (FFI_FN): Added macro for eliminating compiler warnings. - Use it to case your function pointers to the proper type. - - * ffi_mips.h (SIZEOF_ARG): Added magic to fix type promotion bug. - - * Makefile.am (EXTRA_DIST): Added ffi_mips.h to EXTRA_DIST. - * Makefile: Rebuilt. - - * ffi_mips.h: Created. Moved all common mips definitions here. - -Mon Oct 7 10:58:12 1996 Anthony Green - - * ffi.h.in: The SGI assember is very picky about parens. Redefined - some macros to avoid problems. - - * ffi.h.in: Added FFI_DEFAULT_ABI definitions. Also added - externs for pointer, and 64bit integral ffi_types. - -Fri Oct 4 09:51:37 1996 Anthony Green - - * ffi.h.in: Added FFI_ABI member to ffi_cif and changed - function prototypes accordingly. - Added #define @TARGET@. Now programs including ffi.h don't - have to specify this themselves. - -Thu Oct 3 15:36:44 1996 Anthony Green - - * ffi.h.in: Changed ffi_prep_cif's values from void* to void** - - * Makefile.am (EXTRA_DIST): Added EXTRA_DIST for "make dist" - to work. - * Makefile.in: Regenerated. - -Wed Oct 2 10:16:59 1996 Anthony Green - - * Makefile.am: Created - * Makefile.in: Generated - - * ffi_common.h: Added rcsid comment - -Tue Oct 1 17:13:51 1996 Anthony Green - - * ffi.h.in, ffi_common.h: Created - ---- libffi/src ------------------------------------------------------------ - -Mon Oct 5 02:17:50 1998 Anthony Green - - * arm/ffi.c, arm/sysv.S: Created. - - * Makefile.am: Added arm files. - * Makefile.in: Rebuilt. - -Mon Oct 5 01:41:38 1998 Anthony Green - - * Makefile.am (libffi_la_LDFLAGS): Incremented revision. - -Sun Oct 4 16:27:17 1998 Anthony Green - - * alpha/osf.S (ffi_call_osf): Patch for DU assembler. - - * ffitest.c (main): long long and long double return values work - for x86. - -Fri Apr 17 11:50:58 1998 Anthony Green - - * Makefile.in: Rebuilt. - - * ffitest.c (main): Floating point tests not executed for systems - with broken lond double (SunOS 4 w/ GCC). - - * types.c: Fixed x86 alignment info for long long types. - -Thu Apr 16 07:15:28 1998 Anthony Green - - * ffitest.c: Added more notes about GCC bugs under Irix 6. - -Wed Apr 15 08:42:22 1998 Anthony Green - - * ffitest.c (struct5): New test function. - (main): New test with struct5. - -Thu Mar 5 10:48:11 1998 Anthony Green - - * prep_cif.c (initialize_aggregate): Fix assertion for - nested structures. - -Tue Feb 24 16:33:41 1998 Anthony Green - - * prep_cif.c (ffi_prep_cif): Added long double support for sparc. - -Sun Feb 22 00:52:18 1998 Geoff Keating - - * powerpc/asm.h: New file. - * powerpc/ffi.c: New file. - * powerpc/sysv.S: New file. - * Makefile.am: PowerPC port. - * ffitest.c (main): Allow all tests to run even in presence of gcc - bug on PowerPC. - -1998-02-17 Anthony Green - - * mips/ffi.c: Fixed comment typo. - - * x86/ffi.c (ffi_prep_cif_machdep), x86/sysv.S (retfloat): - Fixed x86 long double return handling. - - * types.c: Fixed x86 long double alignment info. - -1998-02-14 Andreas Schwab - - * types.c: Add m68k support. - - * ffitest.c (floating): Add long double parameter. - (return_ll, ldblit): New functions to test long long and long - double return value. - (main): Fix type error in assignment of ts[1-4]_type.elements. - Add tests for long long and long double arguments and return - values. - - * prep_cif.c (ffi_prep_cif) [M68K]: Don't allocate argument for - struct value pointer. - - * m68k/ffi.c, m68k/sysv.S: New files. - * Makefile.am: Add bits for m68k port. Add kludge to work around - automake deficiency. - (test): Don't require "." in $PATH. - * Makefile.in: Rebuilt. - -Wed Feb 11 07:36:50 1998 Anthony Green - - * Makefile.in: Rebuilt. - -Tue Feb 10 20:56:00 1998 Richard Henderson - - * alpha/ffi.c, alpha/osf.S: New files. - * Makefile.am: Alpha port. - -Tue Nov 18 14:12:07 1997 Anthony Green - - * mips/ffi.c (ffi_prep_cif_machdep): Initialize rstruct_flag - for n32. - -Tue Jun 3 17:18:20 1997 Anthony Green - - * ffitest.c (main): Added hack to get structure tests working - correctly. - -Sat May 10 19:06:42 1997 Tom Tromey - - * Makefile.in: Rebuilt. - * Makefile.am (EXTRA_DIST): Explicitly list all distributable - files in subdirs. - (VERSION, CC): Removed. - -Thu May 8 17:19:01 1997 Anthony Green - - * Makefile.am: Many changes for new automake and libtool. - * Makefile.in: Rebuilt. - -Fri Nov 22 06:57:56 1996 Anthony Green - - * ffitest.c (main): Fixed test case for non mips machines. - -Wed Nov 20 22:31:59 1996 Anthony Green - - * types.c: Added ffi_type_void declaration. - -Tue Oct 29 13:07:19 1996 Anthony Green - - * ffitest.c (main): Fixed character constants. - (main): Emit warning for structure test 3 failure on Sun. - - * Makefile.am (VPATH): Fixed VPATH def'n so automake won't - strip it out. - Moved distdir hack from libffi to automake. - (ffitest): Added missing -c for $(COMPILE) (change in automake). - * Makefile.in: Rebuilt. - -Tue Oct 15 13:08:20 1996 Anthony Green - - * Makefile.am: Added "make lint" production. - * Makefile.in: Rebuilt. - - * prep_cif.c (STACK_ARG_SIZE): Improved STACK_ARG_SIZE macro. - Clean up based on LCLint output. Added funny /*@...@*/ comments to - annotate source. - - * ffitest.c, debug.c: Cleaned up code. - -Mon Oct 14 12:26:56 1996 Anthony Green - - * ffitest.c: Changes based on interface changes. - - * prep_cif.c (ffi_prep_cif): Cleaned up interface based on - feedback from Jim Blandy. - -Fri Oct 11 15:53:18 1996 Anthony Green - - * ffitest.c: Reordered tests while porting to sparc. - Made changes to handle lame structure passing for sparc. - Removed calls to fflush(). - - * prep_cif.c (ffi_prep_cif): Added special case for sparc - aggregate type arguments. - -Thu Oct 10 09:56:51 1996 Anthony Green - - * ffitest.c (main): Added structure passing/returning tests. - - * prep_cif.c (ffi_prep_cif): Perform proper initialization - of structure return types if needed. - (initialize_aggregate): Bug fix - -Wed Oct 9 16:04:20 1996 Anthony Green - - * types.c: Added special definitions for x86 (double doesn't - need double word alignment). - - * ffitest.c: Added many tests - -Tue Oct 8 09:19:22 1996 Anthony Green - - * prep_cif.c (ffi_prep_cif): Fixed assertion. - - * debug.c (ffi_assert): Must return a non void now. - - * Makefile.am: Added test production. - * Makefile: Rebuilt. - - * ffitest.c (main): Created. - - * types.c: Created. Stripped common code out of */ffi.c. - - * prep_cif.c: Added missing stdlib.h include. - - * debug.c (ffi_type_test): Used "a" to eliminate compiler - warnings in non-debug builds. Included ffi_common.h. - -Mon Oct 7 15:36:42 1996 Anthony Green - - * Makefile.am: Added a rule for .s -> .o - This is required by the SGI compiler. - * Makefile: Rebuilt. - -Fri Oct 4 09:51:08 1996 Anthony Green - - * prep_cif.c (initialize_aggregate): Moved abi specification - to ffi_prep_cif(). - -Thu Oct 3 15:37:37 1996 Anthony Green - - * prep_cif.c (ffi_prep_cif): Changed values from void* to void**. - (initialize_aggregate): Fixed aggregate type initialization. - - * Makefile.am (EXTRA_DIST): Added support code for "make dist". - * Makefile.in: Regenerated. - -Wed Oct 2 11:41:57 1996 Anthony Green - - * debug.c, prep_cif: Created. - - * Makefile.am: Added debug.o and prep_cif.o to OBJ. - * Makefile.in: Regenerated. - - * Makefile.am (INCLUDES): Added missing -I../include - * Makefile.in: Regenerated. - -Tue Oct 1 17:11:51 1996 Anthony Green - - * error.c, Makefile.am: Created. - * Makefile.in: Generated. - ---- libffi/src/x86 -------------------------------------------------------- - -Sun Oct 4 16:27:17 1998 Anthony Green - - * sysv.S (retlongdouble): Fixed long long return value support. - * ffi.c (ffi_prep_cif_machdep): Ditto. - -Wed May 13 04:30:33 1998 Anthony Green - - * ffi.c (ffi_prep_cif_machdep): Fixed long double return value - support. - -Wed Apr 15 08:43:20 1998 Anthony Green - - * ffi.c (ffi_prep_args): small struct support was missing. - -Thu May 8 16:53:58 1997 Anthony Green - - * objects.mak: Removed. - -Mon Dec 2 15:12:58 1996 Tom Tromey - - * sysv.S: Use .balign, for a.out Linux boxes. - -Tue Oct 15 13:06:50 1996 Anthony Green - - * ffi.c: Clean up based on LCLint output. - Added funny /*@...@*/ comments to annotate source. - -Fri Oct 11 16:43:38 1996 Anthony Green - - * ffi.c (ffi_call): Added assertion for bad ABIs. - -Wed Oct 9 13:57:27 1996 Anthony Green - - * sysv.S (retdouble): Fixed double return problems. - - * ffi.c (ffi_call): Corrected fn arg definition. - (ffi_prep_cif_machdep): Fixed double return problems - -Tue Oct 8 12:12:49 1996 Anthony Green - - * ffi.c: Moved ffi_type definitions to types.c. - (ffi_prep_args): Fixed type promotion bug. - -Mon Oct 7 15:53:06 1996 Anthony Green - - * ffi.c (FFI_*_TYPEDEF): Removed redundant ';' - -Fri Oct 4 09:54:53 1996 Anthony Green - - * ffi.c (ffi_call): Removed FFI_ABI arg, and swapped - remaining args. - -Wed Oct 2 10:07:05 1996 Anthony Green - - * ffi.c, sysv.S, objects.mak: Created. - (ffi_prep_cif): cif->rvalue no longer initialized to NULL. - (ffi_prep_cif_machdep): Moved machine independent cif processing - to src/prep_cif.c. Introduced ffi_prep_cif_machdep(). - ---- libffi/src/mips ------------------------------------------------------- - -Tue Feb 17 17:18:07 1998 Anthony Green - - * o32.S: Fixed typo in comment. - - * ffi.c (ffi_prep_cif_machdep): Fixed argument processing. - -Thu May 8 16:53:58 1997 Anthony Green - - * o32.s, n32.s: Wrappers for SGI tool support. - - * objects.mak: Removed. - -Tue Oct 29 14:37:45 1996 Anthony Green - - * ffi.c (ffi_prep_args): Changed int z to size_t z. - -Tue Oct 15 13:17:25 1996 Anthony Green - - * n32.S: Fixed bad stack munging. - - * ffi.c: Moved prototypes for ffi_call_?32() to here from - ffi_mips.h because extended_cif is not defined in ffi_mips.h. - -Mon Oct 14 12:42:02 1996 Anthony Green - - * ffi.c: Interface changes based on feedback from Jim Blandy. - -Thu Oct 10 11:22:16 1996 Anthony Green - - * n32.S, ffi.c: Lots of changes to support passing and - returning structures with the n32 calling convention. - - * n32.S: Fixed fn pointer bug. - - * ffi.c (ffi_prep_cif_machdep): Fix for o32 structure - return values. - (ffi_prep_args): Fixed n32 structure passing when structures - partially fit in registers. - -Wed Oct 9 13:49:25 1996 Anthony Green - - * objects.mak: Added n32.o. - - * n32.S: Created. - - * ffi.c (ffi_prep_args): Added magic to support proper - n32 processing. - -Tue Oct 8 10:37:35 1996 Anthony Green - - * ffi.c: Moved ffi_type definitions to types.c. - (ffi_prep_args): Fixed type promotion bug. - - * o32.S: This code is only built for o32 compiles. - A lot of the #define cruft has moved to ffi_mips.h. - - * ffi.c (ffi_prep_cif_machdep): Fixed arg flags. Second arg - is only processed if the first is either a float or double. - -Mon Oct 7 15:33:59 1996 Anthony Green - - * o32.S: Modified to compile under each of o32, n32 and n64. - - * ffi.c (FFI_*_TYPEDEF): Removed redundant ';' - -Fri Oct 4 09:53:25 1996 Anthony Green - - * ffi.c (ffi_call): Removed FFI_ABI arg, and swapped - remaining args. - -Wed Oct 2 17:41:22 1996 Anthony Green - - * o32.S: Removed crufty definitions. - -Wed Oct 2 12:53:42 1996 Anthony Green - - * ffi.c (ffi_prep_cif): cif->rvalue no longer initialized to NULL. - (ffi_prep_cif_machdep): Moved all machine independent cif processing - to src/prep_cif.c. Introduced ffi_prep_cif_machdep. Return types - of FFI_TYPE_STRUCT are no different than FFI_TYPE_INT. - -Tue Oct 1 17:11:02 1996 Anthony Green - - * ffi.c, o32.S, object.mak: Created - ---- libffi/src/sparc ------------------------------------------------------ - -Tue Feb 24 16:33:18 1998 Anthony Green - - * ffi.c (ffi_prep_args): Added long double support. - -Thu May 8 16:53:58 1997 Anthony Green - - * objects.mak: Removed. - -Thu May 1 16:07:56 1997 Anthony Green - - * v8.S: Fixed minor portability problem reported by - Russ McManus . - -Tue Nov 26 14:12:43 1996 Anthony Green - - * v8.S: Used STACKFRAME define elsewhere. - - * ffi.c (ffi_prep_args): Zero out space when USING_PURIFY - is set. - (ffi_prep_cif_machdep): Allocate the correct stack frame - space for functions with < 6 args. - -Tue Oct 29 15:08:55 1996 Anthony Green - - * ffi.c (ffi_prep_args): int z is now size_t z. - -Mon Oct 14 13:31:24 1996 Anthony Green - - * v8.S (ffi_call_V8): Gordon rewrites this again. It looks - great now. - - * ffi.c (ffi_call): The comment about hijacked registers - is no longer valid after gordoni hacked v8.S. - - * v8.S (ffi_call_V8): Rewrote with gordoni. Much simpler. - - * v8.S, ffi.c: ffi_call() had changed to accept more than - two args, so v8.S had to change (because it hijacks incoming - arg registers). - - * ffi.c: Interface changes based on feedback from Jim Blandy. - -Thu Oct 10 17:48:16 1996 Anthony Green - - * ffi.c, v8.S, objects.mak: Created. - - diff --git a/LICENSE b/LICENSE index acb2f7a..e4034b0 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -libffi - Copyright (c) 1996-2019 Anthony Green, Red Hat, Inc and others. +libffi - Copyright (c) 1996-2021 Anthony Green, Red Hat, Inc and others. See source files for details. Permission is hereby granted, free of charge, to any person obtaining diff --git a/LICENSE-BUILDTOOLS b/LICENSE-BUILDTOOLS deleted file mode 100644 index d1d626e..0000000 --- a/LICENSE-BUILDTOOLS +++ /dev/null @@ -1,353 +0,0 @@ -The libffi source distribution contains certain code that is not part -of libffi, and is only used as tooling to assist with the building and -testing of libffi. This includes the msvcc.sh script used to wrap the -Microsoft compiler with GNU compatible command-line options, -make_sunver.pl, and the libffi test code distributed in the -testsuite/libffi.bhaible directory. This code is distributed with -libffi for the purpose of convenience only, and libffi is in no way -derived from this code. - -msvcc.sh an testsuite/libffi.bhaible are both distributed under the -terms of the GNU GPL version 2, as below. - - - - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) 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 -this service 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 make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. 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. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -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 -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the 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 a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE 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. - - 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 -convey 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 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. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision 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, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This 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. diff --git a/Makefile.am b/Makefile.am deleted file mode 100644 index 4fd6193..0000000 --- a/Makefile.am +++ /dev/null @@ -1,159 +0,0 @@ -## Process this with automake to create Makefile.in - -AUTOMAKE_OPTIONS = foreign subdir-objects - -ACLOCAL_AMFLAGS = -I m4 - -SUBDIRS = include testsuite man -if BUILD_DOCS -## This hack is needed because it doesn't seem possible to make a -## conditional info_TEXINFOS in Automake. At least Automake 1.14 -## either gives errors -- if this attempted in the most -## straightforward way -- or simply unconditionally tries to build the -## info file. -SUBDIRS += doc -endif - -EXTRA_DIST = LICENSE ChangeLog.old \ - m4/libtool.m4 m4/lt~obsolete.m4 \ - m4/ltoptions.m4 m4/ltsugar.m4 m4/ltversion.m4 \ - m4/ltversion.m4 src/debug.c msvcc.sh \ - generate-darwin-source-and-headers.py \ - libffi.xcodeproj/project.pbxproj \ - libtool-ldflags libtool-version configure.host README.md \ - libffi.map.in LICENSE-BUILDTOOLS msvc_build make_sunver.pl - -# local.exp is generated by configure -DISTCLEANFILES = local.exp - -# Subdir rules rely on $(FLAGS_TO_PASS) -FLAGS_TO_PASS = $(AM_MAKEFLAGS) - -MAKEOVERRIDES= - -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = libffi.pc - -toolexeclib_LTLIBRARIES = libffi.la -noinst_LTLIBRARIES = libffi_convenience.la - -libffi_la_SOURCES = src/prep_cif.c src/types.c \ - src/raw_api.c src/java_raw_api.c src/closures.c - -if FFI_DEBUG -libffi_la_SOURCES += src/debug.c -endif - -noinst_HEADERS = \ - src/aarch64/ffitarget.h src/aarch64/internal.h \ - src/alpha/ffitarget.h src/alpha/internal.h \ - src/arc/ffitarget.h \ - src/arm/ffitarget.h src/arm/internal.h \ - src/avr32/ffitarget.h \ - src/bfin/ffitarget.h \ - src/cris/ffitarget.h \ - src/frv/ffitarget.h \ - src/ia64/ffitarget.h src/ia64/ia64_flags.h \ - src/m32r/ffitarget.h \ - src/m68k/ffitarget.h \ - src/m88k/ffitarget.h \ - src/metag/ffitarget.h \ - src/microblaze/ffitarget.h \ - src/mips/ffitarget.h \ - src/moxie/ffitarget.h \ - src/nios2/ffitarget.h \ - src/or1k/ffitarget.h \ - src/pa/ffitarget.h \ - src/powerpc/ffitarget.h src/powerpc/asm.h src/powerpc/ffi_powerpc.h \ - src/riscv/ffitarget.h \ - src/s390/ffitarget.h src/s390/internal.h \ - src/sh/ffitarget.h \ - src/sh64/ffitarget.h \ - src/sparc/ffitarget.h src/sparc/internal.h \ - src/tile/ffitarget.h \ - src/vax/ffitarget.h \ - src/x86/ffitarget.h src/x86/internal.h src/x86/internal64.h src/x86/asmnames.h \ - src/xtensa/ffitarget.h \ - src/dlmalloc.c - -EXTRA_libffi_la_SOURCES = src/aarch64/ffi.c src/aarch64/sysv.S \ - src/aarch64/win64_armasm.S src/alpha/ffi.c src/alpha/osf.S \ - src/arc/ffi.c src/arc/arcompact.S src/arm/ffi.c \ - src/arm/sysv.S src/arm/ffi.c src/arm/sysv_msvc_arm32.S \ - src/avr32/ffi.c src/avr32/sysv.S src/bfin/ffi.c \ - src/bfin/sysv.S src/cris/ffi.c src/cris/sysv.S src/frv/ffi.c \ - src/frv/eabi.S src/ia64/ffi.c src/ia64/unix.S src/m32r/ffi.c \ - src/m32r/sysv.S src/m68k/ffi.c src/m68k/sysv.S src/m88k/ffi.c \ - src/m88k/obsd.S src/metag/ffi.c src/metag/sysv.S \ - src/microblaze/ffi.c src/microblaze/sysv.S src/mips/ffi.c \ - src/mips/o32.S src/mips/n32.S src/moxie/ffi.c \ - src/moxie/eabi.S src/nios2/ffi.c src/nios2/sysv.S \ - src/or1k/ffi.c src/or1k/sysv.S src/pa/ffi.c src/pa/linux.S \ - src/pa/hpux32.S src/powerpc/ffi.c src/powerpc/ffi_sysv.c \ - src/powerpc/ffi_linux64.c src/powerpc/sysv.S \ - src/powerpc/linux64.S src/powerpc/linux64_closure.S \ - src/powerpc/ppc_closure.S src/powerpc/aix.S \ - src/powerpc/darwin.S src/powerpc/aix_closure.S \ - src/powerpc/darwin_closure.S src/powerpc/ffi_darwin.c \ - src/riscv/ffi.c src/riscv/sysv.S src/s390/ffi.c \ - src/s390/sysv.S src/sh/ffi.c src/sh/sysv.S src/sh64/ffi.c \ - src/sh64/sysv.S src/sparc/ffi.c src/sparc/ffi64.c \ - src/sparc/v8.S src/sparc/v9.S src/tile/ffi.c src/tile/tile.S \ - src/vax/ffi.c src/vax/elfbsd.S src/x86/ffi.c src/x86/sysv.S \ - src/x86/ffiw64.c src/x86/win64.S src/x86/ffi64.c \ - src/x86/unix64.S src/x86/sysv_intel.S src/x86/win64_intel.S \ - src/xtensa/ffi.c src/xtensa/sysv.S - -TARGET_OBJ = @TARGET_OBJ@ -libffi_la_LIBADD = $(TARGET_OBJ) - -libffi_convenience_la_SOURCES = $(libffi_la_SOURCES) -EXTRA_libffi_convenience_la_SOURCES = $(EXTRA_libffi_la_SOURCES) -libffi_convenience_la_LIBADD = $(libffi_la_LIBADD) -libffi_convenience_la_DEPENDENCIES = $(libffi_la_DEPENDENCIES) -nodist_libffi_convenience_la_SOURCES = $(nodist_libffi_la_SOURCES) - -LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/libtool-ldflags $(LDFLAGS)) - -AM_CFLAGS = -if FFI_DEBUG -# Build debug. Define FFI_DEBUG on the commandline so that, when building with -# MSVC, it can link against the debug CRT. -AM_CFLAGS += -DFFI_DEBUG -endif - -if LIBFFI_BUILD_VERSIONED_SHLIB -if LIBFFI_BUILD_VERSIONED_SHLIB_GNU -libffi_version_script = -Wl,--version-script,libffi.map -libffi_version_dep = libffi.map -endif -if LIBFFI_BUILD_VERSIONED_SHLIB_SUN -libffi_version_script = -Wl,-M,libffi.map-sun -libffi_version_dep = libffi.map-sun -libffi.map-sun : libffi.map $(top_srcdir)/make_sunver.pl \ - $(libffi_la_OBJECTS) $(libffi_la_LIBADD) - perl $(top_srcdir)/make_sunver.pl libffi.map \ - `echo $(libffi_la_OBJECTS) $(libffi_la_LIBADD) | \ - sed 's,\([^/ ]*\)\.l\([ao]\),.libs/\1.\2,g'` \ - > $@ || (rm -f $@ ; exit 1) -endif -else -libffi_version_script = -libffi_version_dep = -endif -libffi_version_info = -version-info `grep -v '^\#' $(srcdir)/libtool-version` - -libffi.map: $(top_srcdir)/libffi.map.in - $(COMPILE) -D$(TARGET) -E -x assembler-with-cpp -o $@ $< - -libffi_la_LDFLAGS = -no-undefined $(libffi_version_info) $(libffi_version_script) $(LTLDFLAGS) $(AM_LTLDFLAGS) -libffi_la_DEPENDENCIES = $(libffi_la_LIBADD) $(libffi_version_dep) - -AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src -AM_CCASFLAGS = $(AM_CPPFLAGS) - -dist-hook: - d=`(cd $(distdir); pwd)`; (cd doc; make pdf; cp *.pdf $$d/doc) - if [ -d $(top_srcdir)/.git ] ; then (cd $(top_srcdir); git log --no-decorate) ; else echo 'See git log for history.' ; fi > $(distdir)/ChangeLog - s=`awk '/was released on/{ print NR; exit}' $(top_srcdir)/README.md`; tail -n +$$(($$s-1)) $(top_srcdir)/README.md > $(distdir)/README.md - diff --git a/Makefile.in b/Makefile.in deleted file mode 100644 index adce607..0000000 --- a/Makefile.in +++ /dev/null @@ -1,2024 +0,0 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2018 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@ - - - -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -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@ -target_triplet = @target@ -@BUILD_DOCS_TRUE@am__append_1 = doc -@FFI_DEBUG_TRUE@am__append_2 = src/debug.c -# Build debug. Define FFI_DEBUG on the commandline so that, when building with -# MSVC, it can link against the debug CRT. -@FFI_DEBUG_TRUE@am__append_3 = -DFFI_DEBUG -subdir = . -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/asmcfi.m4 \ - $(top_srcdir)/m4/ax_append_flag.m4 \ - $(top_srcdir)/m4/ax_cc_maxopt.m4 \ - $(top_srcdir)/m4/ax_cflags_warn_all.m4 \ - $(top_srcdir)/m4/ax_check_compile_flag.m4 \ - $(top_srcdir)/m4/ax_compiler_vendor.m4 \ - $(top_srcdir)/m4/ax_configure_args.m4 \ - $(top_srcdir)/m4/ax_enable_builddir.m4 \ - $(top_srcdir)/m4/ax_gcc_archflag.m4 \ - $(top_srcdir)/m4/ax_gcc_x86_cpuid.m4 \ - $(top_srcdir)/m4/ax_require_defined.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ - $(am__configure_deps) $(noinst_HEADERS) $(am__DIST_COMMON) -am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ - configure.lineno config.status.lineno -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = fficonfig.h -CONFIG_CLEAN_FILES = libffi.pc -CONFIG_CLEAN_VPATH_FILES = -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 = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__installdirs = "$(DESTDIR)$(toolexeclibdir)" \ - "$(DESTDIR)$(pkgconfigdir)" -LTLIBRARIES = $(noinst_LTLIBRARIES) $(toolexeclib_LTLIBRARIES) -am__DEPENDENCIES_1 = -am__libffi_la_SOURCES_DIST = src/prep_cif.c src/types.c src/raw_api.c \ - src/java_raw_api.c src/closures.c src/debug.c -am__dirstamp = $(am__leading_dot)dirstamp -@FFI_DEBUG_TRUE@am__objects_1 = src/debug.lo -am_libffi_la_OBJECTS = src/prep_cif.lo src/types.lo src/raw_api.lo \ - src/java_raw_api.lo src/closures.lo $(am__objects_1) -libffi_la_OBJECTS = $(am_libffi_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -libffi_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(libffi_la_LDFLAGS) $(LDFLAGS) -o $@ -am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) -am__libffi_convenience_la_SOURCES_DIST = src/prep_cif.c src/types.c \ - src/raw_api.c src/java_raw_api.c src/closures.c src/debug.c -am__objects_2 = src/prep_cif.lo src/types.lo src/raw_api.lo \ - src/java_raw_api.lo src/closures.lo $(am__objects_1) -am_libffi_convenience_la_OBJECTS = $(am__objects_2) -nodist_libffi_convenience_la_OBJECTS = -libffi_convenience_la_OBJECTS = $(am_libffi_convenience_la_OBJECTS) \ - $(nodist_libffi_convenience_la_OBJECTS) -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__maybe_remake_depfiles = depfiles -am__depfiles_remade = src/$(DEPDIR)/closures.Plo \ - src/$(DEPDIR)/debug.Plo src/$(DEPDIR)/java_raw_api.Plo \ - src/$(DEPDIR)/prep_cif.Plo src/$(DEPDIR)/raw_api.Plo \ - src/$(DEPDIR)/types.Plo src/aarch64/$(DEPDIR)/ffi.Plo \ - src/aarch64/$(DEPDIR)/sysv.Plo \ - src/aarch64/$(DEPDIR)/win64_armasm.Plo \ - src/alpha/$(DEPDIR)/ffi.Plo src/alpha/$(DEPDIR)/osf.Plo \ - src/arc/$(DEPDIR)/arcompact.Plo src/arc/$(DEPDIR)/ffi.Plo \ - src/arm/$(DEPDIR)/ffi.Plo src/arm/$(DEPDIR)/sysv.Plo \ - src/arm/$(DEPDIR)/sysv_msvc_arm32.Plo \ - src/avr32/$(DEPDIR)/ffi.Plo src/avr32/$(DEPDIR)/sysv.Plo \ - src/bfin/$(DEPDIR)/ffi.Plo src/bfin/$(DEPDIR)/sysv.Plo \ - src/cris/$(DEPDIR)/ffi.Plo src/cris/$(DEPDIR)/sysv.Plo \ - src/frv/$(DEPDIR)/eabi.Plo src/frv/$(DEPDIR)/ffi.Plo \ - src/ia64/$(DEPDIR)/ffi.Plo src/ia64/$(DEPDIR)/unix.Plo \ - src/m32r/$(DEPDIR)/ffi.Plo src/m32r/$(DEPDIR)/sysv.Plo \ - src/m68k/$(DEPDIR)/ffi.Plo src/m68k/$(DEPDIR)/sysv.Plo \ - src/m88k/$(DEPDIR)/ffi.Plo src/m88k/$(DEPDIR)/obsd.Plo \ - src/metag/$(DEPDIR)/ffi.Plo src/metag/$(DEPDIR)/sysv.Plo \ - src/microblaze/$(DEPDIR)/ffi.Plo \ - src/microblaze/$(DEPDIR)/sysv.Plo src/mips/$(DEPDIR)/ffi.Plo \ - src/mips/$(DEPDIR)/n32.Plo src/mips/$(DEPDIR)/o32.Plo \ - src/moxie/$(DEPDIR)/eabi.Plo src/moxie/$(DEPDIR)/ffi.Plo \ - src/nios2/$(DEPDIR)/ffi.Plo src/nios2/$(DEPDIR)/sysv.Plo \ - src/or1k/$(DEPDIR)/ffi.Plo src/or1k/$(DEPDIR)/sysv.Plo \ - src/pa/$(DEPDIR)/ffi.Plo src/pa/$(DEPDIR)/hpux32.Plo \ - src/pa/$(DEPDIR)/linux.Plo src/powerpc/$(DEPDIR)/aix.Plo \ - src/powerpc/$(DEPDIR)/aix_closure.Plo \ - src/powerpc/$(DEPDIR)/darwin.Plo \ - src/powerpc/$(DEPDIR)/darwin_closure.Plo \ - src/powerpc/$(DEPDIR)/ffi.Plo \ - src/powerpc/$(DEPDIR)/ffi_darwin.Plo \ - src/powerpc/$(DEPDIR)/ffi_linux64.Plo \ - src/powerpc/$(DEPDIR)/ffi_sysv.Plo \ - src/powerpc/$(DEPDIR)/linux64.Plo \ - src/powerpc/$(DEPDIR)/linux64_closure.Plo \ - src/powerpc/$(DEPDIR)/ppc_closure.Plo \ - src/powerpc/$(DEPDIR)/sysv.Plo src/riscv/$(DEPDIR)/ffi.Plo \ - src/riscv/$(DEPDIR)/sysv.Plo src/s390/$(DEPDIR)/ffi.Plo \ - src/s390/$(DEPDIR)/sysv.Plo src/sh/$(DEPDIR)/ffi.Plo \ - src/sh/$(DEPDIR)/sysv.Plo src/sh64/$(DEPDIR)/ffi.Plo \ - src/sh64/$(DEPDIR)/sysv.Plo src/sparc/$(DEPDIR)/ffi.Plo \ - src/sparc/$(DEPDIR)/ffi64.Plo src/sparc/$(DEPDIR)/v8.Plo \ - src/sparc/$(DEPDIR)/v9.Plo src/tile/$(DEPDIR)/ffi.Plo \ - src/tile/$(DEPDIR)/tile.Plo src/vax/$(DEPDIR)/elfbsd.Plo \ - src/vax/$(DEPDIR)/ffi.Plo src/x86/$(DEPDIR)/ffi.Plo \ - src/x86/$(DEPDIR)/ffi64.Plo src/x86/$(DEPDIR)/ffiw64.Plo \ - src/x86/$(DEPDIR)/sysv.Plo src/x86/$(DEPDIR)/sysv_intel.Plo \ - src/x86/$(DEPDIR)/unix64.Plo src/x86/$(DEPDIR)/win64.Plo \ - src/x86/$(DEPDIR)/win64_intel.Plo src/xtensa/$(DEPDIR)/ffi.Plo \ - src/xtensa/$(DEPDIR)/sysv.Plo -am__mv = mv -f -CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -LTCPPASCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CCAS) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CCASFLAGS) $(CCASFLAGS) -AM_V_CPPAS = $(am__v_CPPAS_@AM_V@) -am__v_CPPAS_ = $(am__v_CPPAS_@AM_DEFAULT_V@) -am__v_CPPAS_0 = @echo " CPPAS " $@; -am__v_CPPAS_1 = -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(libffi_la_SOURCES) $(EXTRA_libffi_la_SOURCES) \ - $(libffi_convenience_la_SOURCES) \ - $(EXTRA_libffi_convenience_la_SOURCES) \ - $(nodist_libffi_convenience_la_SOURCES) -DIST_SOURCES = $(am__libffi_la_SOURCES_DIST) \ - $(EXTRA_libffi_la_SOURCES) \ - $(am__libffi_convenience_la_SOURCES_DIST) \ - $(EXTRA_libffi_convenience_la_SOURCES) -RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ - ctags-recursive dvi-recursive html-recursive info-recursive \ - install-data-recursive install-dvi-recursive \ - install-exec-recursive install-html-recursive \ - install-info-recursive install-pdf-recursive \ - install-ps-recursive install-recursive installcheck-recursive \ - installdirs-recursive pdf-recursive ps-recursive \ - tags-recursive uninstall-recursive -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -DATA = $(pkgconfig_DATA) -HEADERS = $(noinst_HEADERS) -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -am__recursive_targets = \ - $(RECURSIVE_TARGETS) \ - $(RECURSIVE_CLEAN_TARGETS) \ - $(am__extra_recursive_targets) -AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ - cscope distdir distdir-am dist dist-all distcheck -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ - $(LISP)fficonfig.h.in -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -CSCOPE = cscope -DIST_SUBDIRS = include testsuite man doc -am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/fficonfig.h.in \ - $(srcdir)/libffi.pc.in compile config.guess config.sub depcomp \ - install-sh ltmain.sh missing -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -distdir = $(PACKAGE)-$(VERSION) -top_distdir = $(distdir) -am__remove_distdir = \ - if test -d "$(distdir)"; then \ - find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -rf "$(distdir)" \ - || { sleep 5 && rm -rf "$(distdir)"; }; \ - else :; fi -am__post_remove_distdir = $(am__remove_distdir) -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -DIST_ARCHIVES = $(distdir).tar.gz -GZIP_ENV = --best -DIST_TARGETS = dist-gzip -distuninstallcheck_listfiles = find . -type f -print -am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ - | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' -distcleancheck_listfiles = find . -type f -print -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AM_LTLDFLAGS = @AM_LTLDFLAGS@ -AM_RUNTESTFLAGS = @AM_RUNTESTFLAGS@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCAS = @CCAS@ -CCASDEPMODE = @CCASDEPMODE@ -CCASFLAGS = @CCASFLAGS@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FFI_EXEC_TRAMPOLINE_TABLE = @FFI_EXEC_TRAMPOLINE_TABLE@ -FGREP = @FGREP@ -GREP = @GREP@ -HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@ -HAVE_LONG_DOUBLE_VARIANT = @HAVE_LONG_DOUBLE_VARIANT@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OPT_LDFLAGS = @OPT_LDFLAGS@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PRTDIAG = @PRTDIAG@ -RANLIB = @RANLIB@ -SECTION_LDFLAGS = @SECTION_LDFLAGS@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -TARGET = @TARGET@ -TARGETDIR = @TARGETDIR@ -TARGET_OBJ = @TARGET_OBJ@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -ax_enable_builddir_sed = @ax_enable_builddir_sed@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sys_symbol_underscore = @sys_symbol_underscore@ -sysconfdir = @sysconfdir@ -target = @target@ -target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ -toolexecdir = @toolexecdir@ -toolexeclibdir = @toolexeclibdir@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -AUTOMAKE_OPTIONS = foreign subdir-objects -ACLOCAL_AMFLAGS = -I m4 -SUBDIRS = include testsuite man $(am__append_1) -EXTRA_DIST = LICENSE ChangeLog.old \ - m4/libtool.m4 m4/lt~obsolete.m4 \ - m4/ltoptions.m4 m4/ltsugar.m4 m4/ltversion.m4 \ - m4/ltversion.m4 src/debug.c msvcc.sh \ - generate-darwin-source-and-headers.py \ - libffi.xcodeproj/project.pbxproj \ - libtool-ldflags libtool-version configure.host README.md \ - libffi.map.in LICENSE-BUILDTOOLS msvc_build make_sunver.pl - - -# local.exp is generated by configure -DISTCLEANFILES = local.exp - -# Subdir rules rely on $(FLAGS_TO_PASS) -FLAGS_TO_PASS = $(AM_MAKEFLAGS) -MAKEOVERRIDES = -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = libffi.pc -toolexeclib_LTLIBRARIES = libffi.la -noinst_LTLIBRARIES = libffi_convenience.la -libffi_la_SOURCES = src/prep_cif.c src/types.c src/raw_api.c \ - src/java_raw_api.c src/closures.c $(am__append_2) -noinst_HEADERS = \ - src/aarch64/ffitarget.h src/aarch64/internal.h \ - src/alpha/ffitarget.h src/alpha/internal.h \ - src/arc/ffitarget.h \ - src/arm/ffitarget.h src/arm/internal.h \ - src/avr32/ffitarget.h \ - src/bfin/ffitarget.h \ - src/cris/ffitarget.h \ - src/frv/ffitarget.h \ - src/ia64/ffitarget.h src/ia64/ia64_flags.h \ - src/m32r/ffitarget.h \ - src/m68k/ffitarget.h \ - src/m88k/ffitarget.h \ - src/metag/ffitarget.h \ - src/microblaze/ffitarget.h \ - src/mips/ffitarget.h \ - src/moxie/ffitarget.h \ - src/nios2/ffitarget.h \ - src/or1k/ffitarget.h \ - src/pa/ffitarget.h \ - src/powerpc/ffitarget.h src/powerpc/asm.h src/powerpc/ffi_powerpc.h \ - src/riscv/ffitarget.h \ - src/s390/ffitarget.h src/s390/internal.h \ - src/sh/ffitarget.h \ - src/sh64/ffitarget.h \ - src/sparc/ffitarget.h src/sparc/internal.h \ - src/tile/ffitarget.h \ - src/vax/ffitarget.h \ - src/x86/ffitarget.h src/x86/internal.h src/x86/internal64.h src/x86/asmnames.h \ - src/xtensa/ffitarget.h \ - src/dlmalloc.c - -EXTRA_libffi_la_SOURCES = src/aarch64/ffi.c src/aarch64/sysv.S \ - src/aarch64/win64_armasm.S src/alpha/ffi.c src/alpha/osf.S \ - src/arc/ffi.c src/arc/arcompact.S src/arm/ffi.c \ - src/arm/sysv.S src/arm/ffi.c src/arm/sysv_msvc_arm32.S \ - src/avr32/ffi.c src/avr32/sysv.S src/bfin/ffi.c \ - src/bfin/sysv.S src/cris/ffi.c src/cris/sysv.S src/frv/ffi.c \ - src/frv/eabi.S src/ia64/ffi.c src/ia64/unix.S src/m32r/ffi.c \ - src/m32r/sysv.S src/m68k/ffi.c src/m68k/sysv.S src/m88k/ffi.c \ - src/m88k/obsd.S src/metag/ffi.c src/metag/sysv.S \ - src/microblaze/ffi.c src/microblaze/sysv.S src/mips/ffi.c \ - src/mips/o32.S src/mips/n32.S src/moxie/ffi.c \ - src/moxie/eabi.S src/nios2/ffi.c src/nios2/sysv.S \ - src/or1k/ffi.c src/or1k/sysv.S src/pa/ffi.c src/pa/linux.S \ - src/pa/hpux32.S src/powerpc/ffi.c src/powerpc/ffi_sysv.c \ - src/powerpc/ffi_linux64.c src/powerpc/sysv.S \ - src/powerpc/linux64.S src/powerpc/linux64_closure.S \ - src/powerpc/ppc_closure.S src/powerpc/aix.S \ - src/powerpc/darwin.S src/powerpc/aix_closure.S \ - src/powerpc/darwin_closure.S src/powerpc/ffi_darwin.c \ - src/riscv/ffi.c src/riscv/sysv.S src/s390/ffi.c \ - src/s390/sysv.S src/sh/ffi.c src/sh/sysv.S src/sh64/ffi.c \ - src/sh64/sysv.S src/sparc/ffi.c src/sparc/ffi64.c \ - src/sparc/v8.S src/sparc/v9.S src/tile/ffi.c src/tile/tile.S \ - src/vax/ffi.c src/vax/elfbsd.S src/x86/ffi.c src/x86/sysv.S \ - src/x86/ffiw64.c src/x86/win64.S src/x86/ffi64.c \ - src/x86/unix64.S src/x86/sysv_intel.S src/x86/win64_intel.S \ - src/xtensa/ffi.c src/xtensa/sysv.S - -libffi_la_LIBADD = $(TARGET_OBJ) -libffi_convenience_la_SOURCES = $(libffi_la_SOURCES) -EXTRA_libffi_convenience_la_SOURCES = $(EXTRA_libffi_la_SOURCES) -libffi_convenience_la_LIBADD = $(libffi_la_LIBADD) -libffi_convenience_la_DEPENDENCIES = $(libffi_la_DEPENDENCIES) -nodist_libffi_convenience_la_SOURCES = $(nodist_libffi_la_SOURCES) -LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/libtool-ldflags $(LDFLAGS)) -AM_CFLAGS = $(am__append_3) -@LIBFFI_BUILD_VERSIONED_SHLIB_FALSE@libffi_version_script = -@LIBFFI_BUILD_VERSIONED_SHLIB_GNU_TRUE@@LIBFFI_BUILD_VERSIONED_SHLIB_TRUE@libffi_version_script = -Wl,--version-script,libffi.map -@LIBFFI_BUILD_VERSIONED_SHLIB_SUN_TRUE@@LIBFFI_BUILD_VERSIONED_SHLIB_TRUE@libffi_version_script = -Wl,-M,libffi.map-sun -@LIBFFI_BUILD_VERSIONED_SHLIB_FALSE@libffi_version_dep = -@LIBFFI_BUILD_VERSIONED_SHLIB_GNU_TRUE@@LIBFFI_BUILD_VERSIONED_SHLIB_TRUE@libffi_version_dep = libffi.map -@LIBFFI_BUILD_VERSIONED_SHLIB_SUN_TRUE@@LIBFFI_BUILD_VERSIONED_SHLIB_TRUE@libffi_version_dep = libffi.map-sun -libffi_version_info = -version-info `grep -v '^\#' $(srcdir)/libtool-version` -libffi_la_LDFLAGS = -no-undefined $(libffi_version_info) $(libffi_version_script) $(LTLDFLAGS) $(AM_LTLDFLAGS) -libffi_la_DEPENDENCIES = $(libffi_la_LIBADD) $(libffi_version_dep) -AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src -AM_CCASFLAGS = $(AM_CPPFLAGS) -all: fficonfig.h - $(MAKE) $(AM_MAKEFLAGS) all-recursive - -.SUFFIXES: -.SUFFIXES: .S .c .lo .o .obj -am--refresh: Makefile - @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ - $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign 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__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - $(am__cd) $(srcdir) && $(AUTOCONF) -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) -$(am__aclocal_m4_deps): - -fficonfig.h: stamp-h1 - @test -f $@ || rm -f stamp-h1 - @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 - -stamp-h1: $(srcdir)/fficonfig.h.in $(top_builddir)/config.status - @rm -f stamp-h1 - cd $(top_builddir) && $(SHELL) ./config.status fficonfig.h -$(srcdir)/fficonfig.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) - rm -f stamp-h1 - touch $@ - -distclean-hdr: - -rm -f fficonfig.h stamp-h1 -libffi.pc: $(top_builddir)/config.status $(srcdir)/libffi.pc.in - cd $(top_builddir) && $(SHELL) ./config.status $@ - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } - -install-toolexeclibLTLIBRARIES: $(toolexeclib_LTLIBRARIES) - @$(NORMAL_INSTALL) - @list='$(toolexeclib_LTLIBRARIES)'; test -n "$(toolexeclibdir)" || list=; \ - list2=; for p in $$list; do \ - if test -f $$p; then \ - list2="$$list2 $$p"; \ - else :; fi; \ - done; \ - test -z "$$list2" || { \ - echo " $(MKDIR_P) '$(DESTDIR)$(toolexeclibdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(toolexeclibdir)" || exit 1; \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(toolexeclibdir)'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(toolexeclibdir)"; \ - } - -uninstall-toolexeclibLTLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(toolexeclib_LTLIBRARIES)'; test -n "$(toolexeclibdir)" || list=; \ - for p in $$list; do \ - $(am__strip_dir) \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(toolexeclibdir)/$$f'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(toolexeclibdir)/$$f"; \ - done - -clean-toolexeclibLTLIBRARIES: - -test -z "$(toolexeclib_LTLIBRARIES)" || rm -f $(toolexeclib_LTLIBRARIES) - @list='$(toolexeclib_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } -src/$(am__dirstamp): - @$(MKDIR_P) src - @: > src/$(am__dirstamp) -src/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/$(DEPDIR) - @: > src/$(DEPDIR)/$(am__dirstamp) -src/prep_cif.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) -src/types.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) -src/raw_api.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) -src/java_raw_api.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) -src/closures.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) -src/debug.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) -src/aarch64/$(am__dirstamp): - @$(MKDIR_P) src/aarch64 - @: > src/aarch64/$(am__dirstamp) -src/aarch64/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/aarch64/$(DEPDIR) - @: > src/aarch64/$(DEPDIR)/$(am__dirstamp) -src/aarch64/ffi.lo: src/aarch64/$(am__dirstamp) \ - src/aarch64/$(DEPDIR)/$(am__dirstamp) -src/aarch64/sysv.lo: src/aarch64/$(am__dirstamp) \ - src/aarch64/$(DEPDIR)/$(am__dirstamp) -src/aarch64/win64_armasm.lo: src/aarch64/$(am__dirstamp) \ - src/aarch64/$(DEPDIR)/$(am__dirstamp) -src/alpha/$(am__dirstamp): - @$(MKDIR_P) src/alpha - @: > src/alpha/$(am__dirstamp) -src/alpha/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/alpha/$(DEPDIR) - @: > src/alpha/$(DEPDIR)/$(am__dirstamp) -src/alpha/ffi.lo: src/alpha/$(am__dirstamp) \ - src/alpha/$(DEPDIR)/$(am__dirstamp) -src/alpha/osf.lo: src/alpha/$(am__dirstamp) \ - src/alpha/$(DEPDIR)/$(am__dirstamp) -src/arc/$(am__dirstamp): - @$(MKDIR_P) src/arc - @: > src/arc/$(am__dirstamp) -src/arc/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/arc/$(DEPDIR) - @: > src/arc/$(DEPDIR)/$(am__dirstamp) -src/arc/ffi.lo: src/arc/$(am__dirstamp) \ - src/arc/$(DEPDIR)/$(am__dirstamp) -src/arc/arcompact.lo: src/arc/$(am__dirstamp) \ - src/arc/$(DEPDIR)/$(am__dirstamp) -src/arm/$(am__dirstamp): - @$(MKDIR_P) src/arm - @: > src/arm/$(am__dirstamp) -src/arm/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/arm/$(DEPDIR) - @: > src/arm/$(DEPDIR)/$(am__dirstamp) -src/arm/ffi.lo: src/arm/$(am__dirstamp) \ - src/arm/$(DEPDIR)/$(am__dirstamp) -src/arm/sysv.lo: src/arm/$(am__dirstamp) \ - src/arm/$(DEPDIR)/$(am__dirstamp) -src/arm/sysv_msvc_arm32.lo: src/arm/$(am__dirstamp) \ - src/arm/$(DEPDIR)/$(am__dirstamp) -src/avr32/$(am__dirstamp): - @$(MKDIR_P) src/avr32 - @: > src/avr32/$(am__dirstamp) -src/avr32/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/avr32/$(DEPDIR) - @: > src/avr32/$(DEPDIR)/$(am__dirstamp) -src/avr32/ffi.lo: src/avr32/$(am__dirstamp) \ - src/avr32/$(DEPDIR)/$(am__dirstamp) -src/avr32/sysv.lo: src/avr32/$(am__dirstamp) \ - src/avr32/$(DEPDIR)/$(am__dirstamp) -src/bfin/$(am__dirstamp): - @$(MKDIR_P) src/bfin - @: > src/bfin/$(am__dirstamp) -src/bfin/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/bfin/$(DEPDIR) - @: > src/bfin/$(DEPDIR)/$(am__dirstamp) -src/bfin/ffi.lo: src/bfin/$(am__dirstamp) \ - src/bfin/$(DEPDIR)/$(am__dirstamp) -src/bfin/sysv.lo: src/bfin/$(am__dirstamp) \ - src/bfin/$(DEPDIR)/$(am__dirstamp) -src/cris/$(am__dirstamp): - @$(MKDIR_P) src/cris - @: > src/cris/$(am__dirstamp) -src/cris/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/cris/$(DEPDIR) - @: > src/cris/$(DEPDIR)/$(am__dirstamp) -src/cris/ffi.lo: src/cris/$(am__dirstamp) \ - src/cris/$(DEPDIR)/$(am__dirstamp) -src/cris/sysv.lo: src/cris/$(am__dirstamp) \ - src/cris/$(DEPDIR)/$(am__dirstamp) -src/frv/$(am__dirstamp): - @$(MKDIR_P) src/frv - @: > src/frv/$(am__dirstamp) -src/frv/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/frv/$(DEPDIR) - @: > src/frv/$(DEPDIR)/$(am__dirstamp) -src/frv/ffi.lo: src/frv/$(am__dirstamp) \ - src/frv/$(DEPDIR)/$(am__dirstamp) -src/frv/eabi.lo: src/frv/$(am__dirstamp) \ - src/frv/$(DEPDIR)/$(am__dirstamp) -src/ia64/$(am__dirstamp): - @$(MKDIR_P) src/ia64 - @: > src/ia64/$(am__dirstamp) -src/ia64/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/ia64/$(DEPDIR) - @: > src/ia64/$(DEPDIR)/$(am__dirstamp) -src/ia64/ffi.lo: src/ia64/$(am__dirstamp) \ - src/ia64/$(DEPDIR)/$(am__dirstamp) -src/ia64/unix.lo: src/ia64/$(am__dirstamp) \ - src/ia64/$(DEPDIR)/$(am__dirstamp) -src/m32r/$(am__dirstamp): - @$(MKDIR_P) src/m32r - @: > src/m32r/$(am__dirstamp) -src/m32r/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/m32r/$(DEPDIR) - @: > src/m32r/$(DEPDIR)/$(am__dirstamp) -src/m32r/ffi.lo: src/m32r/$(am__dirstamp) \ - src/m32r/$(DEPDIR)/$(am__dirstamp) -src/m32r/sysv.lo: src/m32r/$(am__dirstamp) \ - src/m32r/$(DEPDIR)/$(am__dirstamp) -src/m68k/$(am__dirstamp): - @$(MKDIR_P) src/m68k - @: > src/m68k/$(am__dirstamp) -src/m68k/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/m68k/$(DEPDIR) - @: > src/m68k/$(DEPDIR)/$(am__dirstamp) -src/m68k/ffi.lo: src/m68k/$(am__dirstamp) \ - src/m68k/$(DEPDIR)/$(am__dirstamp) -src/m68k/sysv.lo: src/m68k/$(am__dirstamp) \ - src/m68k/$(DEPDIR)/$(am__dirstamp) -src/m88k/$(am__dirstamp): - @$(MKDIR_P) src/m88k - @: > src/m88k/$(am__dirstamp) -src/m88k/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/m88k/$(DEPDIR) - @: > src/m88k/$(DEPDIR)/$(am__dirstamp) -src/m88k/ffi.lo: src/m88k/$(am__dirstamp) \ - src/m88k/$(DEPDIR)/$(am__dirstamp) -src/m88k/obsd.lo: src/m88k/$(am__dirstamp) \ - src/m88k/$(DEPDIR)/$(am__dirstamp) -src/metag/$(am__dirstamp): - @$(MKDIR_P) src/metag - @: > src/metag/$(am__dirstamp) -src/metag/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/metag/$(DEPDIR) - @: > src/metag/$(DEPDIR)/$(am__dirstamp) -src/metag/ffi.lo: src/metag/$(am__dirstamp) \ - src/metag/$(DEPDIR)/$(am__dirstamp) -src/metag/sysv.lo: src/metag/$(am__dirstamp) \ - src/metag/$(DEPDIR)/$(am__dirstamp) -src/microblaze/$(am__dirstamp): - @$(MKDIR_P) src/microblaze - @: > src/microblaze/$(am__dirstamp) -src/microblaze/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/microblaze/$(DEPDIR) - @: > src/microblaze/$(DEPDIR)/$(am__dirstamp) -src/microblaze/ffi.lo: src/microblaze/$(am__dirstamp) \ - src/microblaze/$(DEPDIR)/$(am__dirstamp) -src/microblaze/sysv.lo: src/microblaze/$(am__dirstamp) \ - src/microblaze/$(DEPDIR)/$(am__dirstamp) -src/mips/$(am__dirstamp): - @$(MKDIR_P) src/mips - @: > src/mips/$(am__dirstamp) -src/mips/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/mips/$(DEPDIR) - @: > src/mips/$(DEPDIR)/$(am__dirstamp) -src/mips/ffi.lo: src/mips/$(am__dirstamp) \ - src/mips/$(DEPDIR)/$(am__dirstamp) -src/mips/o32.lo: src/mips/$(am__dirstamp) \ - src/mips/$(DEPDIR)/$(am__dirstamp) -src/mips/n32.lo: src/mips/$(am__dirstamp) \ - src/mips/$(DEPDIR)/$(am__dirstamp) -src/moxie/$(am__dirstamp): - @$(MKDIR_P) src/moxie - @: > src/moxie/$(am__dirstamp) -src/moxie/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/moxie/$(DEPDIR) - @: > src/moxie/$(DEPDIR)/$(am__dirstamp) -src/moxie/ffi.lo: src/moxie/$(am__dirstamp) \ - src/moxie/$(DEPDIR)/$(am__dirstamp) -src/moxie/eabi.lo: src/moxie/$(am__dirstamp) \ - src/moxie/$(DEPDIR)/$(am__dirstamp) -src/nios2/$(am__dirstamp): - @$(MKDIR_P) src/nios2 - @: > src/nios2/$(am__dirstamp) -src/nios2/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/nios2/$(DEPDIR) - @: > src/nios2/$(DEPDIR)/$(am__dirstamp) -src/nios2/ffi.lo: src/nios2/$(am__dirstamp) \ - src/nios2/$(DEPDIR)/$(am__dirstamp) -src/nios2/sysv.lo: src/nios2/$(am__dirstamp) \ - src/nios2/$(DEPDIR)/$(am__dirstamp) -src/or1k/$(am__dirstamp): - @$(MKDIR_P) src/or1k - @: > src/or1k/$(am__dirstamp) -src/or1k/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/or1k/$(DEPDIR) - @: > src/or1k/$(DEPDIR)/$(am__dirstamp) -src/or1k/ffi.lo: src/or1k/$(am__dirstamp) \ - src/or1k/$(DEPDIR)/$(am__dirstamp) -src/or1k/sysv.lo: src/or1k/$(am__dirstamp) \ - src/or1k/$(DEPDIR)/$(am__dirstamp) -src/pa/$(am__dirstamp): - @$(MKDIR_P) src/pa - @: > src/pa/$(am__dirstamp) -src/pa/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/pa/$(DEPDIR) - @: > src/pa/$(DEPDIR)/$(am__dirstamp) -src/pa/ffi.lo: src/pa/$(am__dirstamp) src/pa/$(DEPDIR)/$(am__dirstamp) -src/pa/linux.lo: src/pa/$(am__dirstamp) \ - src/pa/$(DEPDIR)/$(am__dirstamp) -src/pa/hpux32.lo: src/pa/$(am__dirstamp) \ - src/pa/$(DEPDIR)/$(am__dirstamp) -src/powerpc/$(am__dirstamp): - @$(MKDIR_P) src/powerpc - @: > src/powerpc/$(am__dirstamp) -src/powerpc/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/powerpc/$(DEPDIR) - @: > src/powerpc/$(DEPDIR)/$(am__dirstamp) -src/powerpc/ffi.lo: src/powerpc/$(am__dirstamp) \ - src/powerpc/$(DEPDIR)/$(am__dirstamp) -src/powerpc/ffi_sysv.lo: src/powerpc/$(am__dirstamp) \ - src/powerpc/$(DEPDIR)/$(am__dirstamp) -src/powerpc/ffi_linux64.lo: src/powerpc/$(am__dirstamp) \ - src/powerpc/$(DEPDIR)/$(am__dirstamp) -src/powerpc/sysv.lo: src/powerpc/$(am__dirstamp) \ - src/powerpc/$(DEPDIR)/$(am__dirstamp) -src/powerpc/linux64.lo: src/powerpc/$(am__dirstamp) \ - src/powerpc/$(DEPDIR)/$(am__dirstamp) -src/powerpc/linux64_closure.lo: src/powerpc/$(am__dirstamp) \ - src/powerpc/$(DEPDIR)/$(am__dirstamp) -src/powerpc/ppc_closure.lo: src/powerpc/$(am__dirstamp) \ - src/powerpc/$(DEPDIR)/$(am__dirstamp) -src/powerpc/aix.lo: src/powerpc/$(am__dirstamp) \ - src/powerpc/$(DEPDIR)/$(am__dirstamp) -src/powerpc/darwin.lo: src/powerpc/$(am__dirstamp) \ - src/powerpc/$(DEPDIR)/$(am__dirstamp) -src/powerpc/aix_closure.lo: src/powerpc/$(am__dirstamp) \ - src/powerpc/$(DEPDIR)/$(am__dirstamp) -src/powerpc/darwin_closure.lo: src/powerpc/$(am__dirstamp) \ - src/powerpc/$(DEPDIR)/$(am__dirstamp) -src/powerpc/ffi_darwin.lo: src/powerpc/$(am__dirstamp) \ - src/powerpc/$(DEPDIR)/$(am__dirstamp) -src/riscv/$(am__dirstamp): - @$(MKDIR_P) src/riscv - @: > src/riscv/$(am__dirstamp) -src/riscv/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/riscv/$(DEPDIR) - @: > src/riscv/$(DEPDIR)/$(am__dirstamp) -src/riscv/ffi.lo: src/riscv/$(am__dirstamp) \ - src/riscv/$(DEPDIR)/$(am__dirstamp) -src/riscv/sysv.lo: src/riscv/$(am__dirstamp) \ - src/riscv/$(DEPDIR)/$(am__dirstamp) -src/s390/$(am__dirstamp): - @$(MKDIR_P) src/s390 - @: > src/s390/$(am__dirstamp) -src/s390/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/s390/$(DEPDIR) - @: > src/s390/$(DEPDIR)/$(am__dirstamp) -src/s390/ffi.lo: src/s390/$(am__dirstamp) \ - src/s390/$(DEPDIR)/$(am__dirstamp) -src/s390/sysv.lo: src/s390/$(am__dirstamp) \ - src/s390/$(DEPDIR)/$(am__dirstamp) -src/sh/$(am__dirstamp): - @$(MKDIR_P) src/sh - @: > src/sh/$(am__dirstamp) -src/sh/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/sh/$(DEPDIR) - @: > src/sh/$(DEPDIR)/$(am__dirstamp) -src/sh/ffi.lo: src/sh/$(am__dirstamp) src/sh/$(DEPDIR)/$(am__dirstamp) -src/sh/sysv.lo: src/sh/$(am__dirstamp) \ - src/sh/$(DEPDIR)/$(am__dirstamp) -src/sh64/$(am__dirstamp): - @$(MKDIR_P) src/sh64 - @: > src/sh64/$(am__dirstamp) -src/sh64/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/sh64/$(DEPDIR) - @: > src/sh64/$(DEPDIR)/$(am__dirstamp) -src/sh64/ffi.lo: src/sh64/$(am__dirstamp) \ - src/sh64/$(DEPDIR)/$(am__dirstamp) -src/sh64/sysv.lo: src/sh64/$(am__dirstamp) \ - src/sh64/$(DEPDIR)/$(am__dirstamp) -src/sparc/$(am__dirstamp): - @$(MKDIR_P) src/sparc - @: > src/sparc/$(am__dirstamp) -src/sparc/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/sparc/$(DEPDIR) - @: > src/sparc/$(DEPDIR)/$(am__dirstamp) -src/sparc/ffi.lo: src/sparc/$(am__dirstamp) \ - src/sparc/$(DEPDIR)/$(am__dirstamp) -src/sparc/ffi64.lo: src/sparc/$(am__dirstamp) \ - src/sparc/$(DEPDIR)/$(am__dirstamp) -src/sparc/v8.lo: src/sparc/$(am__dirstamp) \ - src/sparc/$(DEPDIR)/$(am__dirstamp) -src/sparc/v9.lo: src/sparc/$(am__dirstamp) \ - src/sparc/$(DEPDIR)/$(am__dirstamp) -src/tile/$(am__dirstamp): - @$(MKDIR_P) src/tile - @: > src/tile/$(am__dirstamp) -src/tile/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/tile/$(DEPDIR) - @: > src/tile/$(DEPDIR)/$(am__dirstamp) -src/tile/ffi.lo: src/tile/$(am__dirstamp) \ - src/tile/$(DEPDIR)/$(am__dirstamp) -src/tile/tile.lo: src/tile/$(am__dirstamp) \ - src/tile/$(DEPDIR)/$(am__dirstamp) -src/vax/$(am__dirstamp): - @$(MKDIR_P) src/vax - @: > src/vax/$(am__dirstamp) -src/vax/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/vax/$(DEPDIR) - @: > src/vax/$(DEPDIR)/$(am__dirstamp) -src/vax/ffi.lo: src/vax/$(am__dirstamp) \ - src/vax/$(DEPDIR)/$(am__dirstamp) -src/vax/elfbsd.lo: src/vax/$(am__dirstamp) \ - src/vax/$(DEPDIR)/$(am__dirstamp) -src/x86/$(am__dirstamp): - @$(MKDIR_P) src/x86 - @: > src/x86/$(am__dirstamp) -src/x86/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/x86/$(DEPDIR) - @: > src/x86/$(DEPDIR)/$(am__dirstamp) -src/x86/ffi.lo: src/x86/$(am__dirstamp) \ - src/x86/$(DEPDIR)/$(am__dirstamp) -src/x86/sysv.lo: src/x86/$(am__dirstamp) \ - src/x86/$(DEPDIR)/$(am__dirstamp) -src/x86/ffiw64.lo: src/x86/$(am__dirstamp) \ - src/x86/$(DEPDIR)/$(am__dirstamp) -src/x86/win64.lo: src/x86/$(am__dirstamp) \ - src/x86/$(DEPDIR)/$(am__dirstamp) -src/x86/ffi64.lo: src/x86/$(am__dirstamp) \ - src/x86/$(DEPDIR)/$(am__dirstamp) -src/x86/unix64.lo: src/x86/$(am__dirstamp) \ - src/x86/$(DEPDIR)/$(am__dirstamp) -src/x86/sysv_intel.lo: src/x86/$(am__dirstamp) \ - src/x86/$(DEPDIR)/$(am__dirstamp) -src/x86/win64_intel.lo: src/x86/$(am__dirstamp) \ - src/x86/$(DEPDIR)/$(am__dirstamp) -src/xtensa/$(am__dirstamp): - @$(MKDIR_P) src/xtensa - @: > src/xtensa/$(am__dirstamp) -src/xtensa/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/xtensa/$(DEPDIR) - @: > src/xtensa/$(DEPDIR)/$(am__dirstamp) -src/xtensa/ffi.lo: src/xtensa/$(am__dirstamp) \ - src/xtensa/$(DEPDIR)/$(am__dirstamp) -src/xtensa/sysv.lo: src/xtensa/$(am__dirstamp) \ - src/xtensa/$(DEPDIR)/$(am__dirstamp) - -libffi.la: $(libffi_la_OBJECTS) $(libffi_la_DEPENDENCIES) $(EXTRA_libffi_la_DEPENDENCIES) - $(AM_V_CCLD)$(libffi_la_LINK) -rpath $(toolexeclibdir) $(libffi_la_OBJECTS) $(libffi_la_LIBADD) $(LIBS) - -libffi_convenience.la: $(libffi_convenience_la_OBJECTS) $(libffi_convenience_la_DEPENDENCIES) $(EXTRA_libffi_convenience_la_DEPENDENCIES) - $(AM_V_CCLD)$(LINK) $(libffi_convenience_la_OBJECTS) $(libffi_convenience_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -rm -f src/*.$(OBJEXT) - -rm -f src/*.lo - -rm -f src/aarch64/*.$(OBJEXT) - -rm -f src/aarch64/*.lo - -rm -f src/alpha/*.$(OBJEXT) - -rm -f src/alpha/*.lo - -rm -f src/arc/*.$(OBJEXT) - -rm -f src/arc/*.lo - -rm -f src/arm/*.$(OBJEXT) - -rm -f src/arm/*.lo - -rm -f src/avr32/*.$(OBJEXT) - -rm -f src/avr32/*.lo - -rm -f src/bfin/*.$(OBJEXT) - -rm -f src/bfin/*.lo - -rm -f src/cris/*.$(OBJEXT) - -rm -f src/cris/*.lo - -rm -f src/frv/*.$(OBJEXT) - -rm -f src/frv/*.lo - -rm -f src/ia64/*.$(OBJEXT) - -rm -f src/ia64/*.lo - -rm -f src/m32r/*.$(OBJEXT) - -rm -f src/m32r/*.lo - -rm -f src/m68k/*.$(OBJEXT) - -rm -f src/m68k/*.lo - -rm -f src/m88k/*.$(OBJEXT) - -rm -f src/m88k/*.lo - -rm -f src/metag/*.$(OBJEXT) - -rm -f src/metag/*.lo - -rm -f src/microblaze/*.$(OBJEXT) - -rm -f src/microblaze/*.lo - -rm -f src/mips/*.$(OBJEXT) - -rm -f src/mips/*.lo - -rm -f src/moxie/*.$(OBJEXT) - -rm -f src/moxie/*.lo - -rm -f src/nios2/*.$(OBJEXT) - -rm -f src/nios2/*.lo - -rm -f src/or1k/*.$(OBJEXT) - -rm -f src/or1k/*.lo - -rm -f src/pa/*.$(OBJEXT) - -rm -f src/pa/*.lo - -rm -f src/powerpc/*.$(OBJEXT) - -rm -f src/powerpc/*.lo - -rm -f src/riscv/*.$(OBJEXT) - -rm -f src/riscv/*.lo - -rm -f src/s390/*.$(OBJEXT) - -rm -f src/s390/*.lo - -rm -f src/sh/*.$(OBJEXT) - -rm -f src/sh/*.lo - -rm -f src/sh64/*.$(OBJEXT) - -rm -f src/sh64/*.lo - -rm -f src/sparc/*.$(OBJEXT) - -rm -f src/sparc/*.lo - -rm -f src/tile/*.$(OBJEXT) - -rm -f src/tile/*.lo - -rm -f src/vax/*.$(OBJEXT) - -rm -f src/vax/*.lo - -rm -f src/x86/*.$(OBJEXT) - -rm -f src/x86/*.lo - -rm -f src/xtensa/*.$(OBJEXT) - -rm -f src/xtensa/*.lo - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/closures.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/debug.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/java_raw_api.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/prep_cif.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/raw_api.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/types.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/aarch64/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/aarch64/$(DEPDIR)/sysv.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/aarch64/$(DEPDIR)/win64_armasm.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/alpha/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/alpha/$(DEPDIR)/osf.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/arc/$(DEPDIR)/arcompact.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/arc/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/arm/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/arm/$(DEPDIR)/sysv.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/arm/$(DEPDIR)/sysv_msvc_arm32.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/avr32/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/avr32/$(DEPDIR)/sysv.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/bfin/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/bfin/$(DEPDIR)/sysv.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/cris/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/cris/$(DEPDIR)/sysv.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/frv/$(DEPDIR)/eabi.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/frv/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/ia64/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/ia64/$(DEPDIR)/unix.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/m32r/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/m32r/$(DEPDIR)/sysv.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/m68k/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/m68k/$(DEPDIR)/sysv.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/m88k/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/m88k/$(DEPDIR)/obsd.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/metag/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/metag/$(DEPDIR)/sysv.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/microblaze/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/microblaze/$(DEPDIR)/sysv.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/mips/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/mips/$(DEPDIR)/n32.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/mips/$(DEPDIR)/o32.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/moxie/$(DEPDIR)/eabi.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/moxie/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/nios2/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/nios2/$(DEPDIR)/sysv.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/or1k/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/or1k/$(DEPDIR)/sysv.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/pa/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/pa/$(DEPDIR)/hpux32.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/pa/$(DEPDIR)/linux.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/aix.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/aix_closure.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/darwin.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/darwin_closure.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/ffi_darwin.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/ffi_linux64.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/ffi_sysv.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/linux64.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/linux64_closure.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/ppc_closure.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/sysv.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/riscv/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/riscv/$(DEPDIR)/sysv.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/s390/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/s390/$(DEPDIR)/sysv.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/sh/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/sh/$(DEPDIR)/sysv.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/sh64/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/sh64/$(DEPDIR)/sysv.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/sparc/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/sparc/$(DEPDIR)/ffi64.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/sparc/$(DEPDIR)/v8.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/sparc/$(DEPDIR)/v9.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/tile/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/tile/$(DEPDIR)/tile.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/vax/$(DEPDIR)/elfbsd.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/vax/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/ffi64.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/ffiw64.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/sysv.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/sysv_intel.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/unix64.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/win64.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/win64_intel.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/xtensa/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/xtensa/$(DEPDIR)/sysv.Plo@am__quote@ # am--include-marker - -$(am__depfiles_remade): - @$(MKDIR_P) $(@D) - @echo '# dummy' >$@-t && $(am__mv) $@-t $@ - -am--depfiles: $(am__depfiles_remade) - -.S.o: -@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCCAS_TRUE@ $(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ $< - -.S.obj: -@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCCAS_TRUE@ $(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.S.lo: -@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCCAS_TRUE@ $(LTCPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(LTCPPASCOMPILE) -c -o $@ $< - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -rm -rf src/.libs src/_libs - -rm -rf src/aarch64/.libs src/aarch64/_libs - -rm -rf src/alpha/.libs src/alpha/_libs - -rm -rf src/arc/.libs src/arc/_libs - -rm -rf src/arm/.libs src/arm/_libs - -rm -rf src/avr32/.libs src/avr32/_libs - -rm -rf src/bfin/.libs src/bfin/_libs - -rm -rf src/cris/.libs src/cris/_libs - -rm -rf src/frv/.libs src/frv/_libs - -rm -rf src/ia64/.libs src/ia64/_libs - -rm -rf src/m32r/.libs src/m32r/_libs - -rm -rf src/m68k/.libs src/m68k/_libs - -rm -rf src/m88k/.libs src/m88k/_libs - -rm -rf src/metag/.libs src/metag/_libs - -rm -rf src/microblaze/.libs src/microblaze/_libs - -rm -rf src/mips/.libs src/mips/_libs - -rm -rf src/moxie/.libs src/moxie/_libs - -rm -rf src/nios2/.libs src/nios2/_libs - -rm -rf src/or1k/.libs src/or1k/_libs - -rm -rf src/pa/.libs src/pa/_libs - -rm -rf src/powerpc/.libs src/powerpc/_libs - -rm -rf src/riscv/.libs src/riscv/_libs - -rm -rf src/s390/.libs src/s390/_libs - -rm -rf src/sh/.libs src/sh/_libs - -rm -rf src/sh64/.libs src/sh64/_libs - -rm -rf src/sparc/.libs src/sparc/_libs - -rm -rf src/tile/.libs src/tile/_libs - -rm -rf src/vax/.libs src/vax/_libs - -rm -rf src/x86/.libs src/x86/_libs - -rm -rf src/xtensa/.libs src/xtensa/_libs - -distclean-libtool: - -rm -f libtool config.lt -install-pkgconfigDATA: $(pkgconfig_DATA) - @$(NORMAL_INSTALL) - @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ - done - -uninstall-pkgconfigDATA: - @$(NORMAL_UNINSTALL) - @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) - -# This directory's subdirectories are mostly independent; you can cd -# into them and run 'make' without going through this Makefile. -# To change the values of 'make' variables: instead of editing Makefiles, -# (1) if the variable is set in 'config.status', edit 'config.status' -# (which will cause the Makefiles to be regenerated when you run 'make'); -# (2) otherwise, pass the desired values on the 'make' command line. -$(am__recursive_targets): - @fail=; \ - if $(am__make_keepgoing); then \ - failcom='fail=yes'; \ - else \ - failcom='exit 1'; \ - fi; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-recursive -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-recursive - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscope: cscope.files - test ! -s cscope.files \ - || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) -clean-cscope: - -rm -f cscope.files -cscope.files: clean-cscope cscopelist -cscopelist: cscopelist-recursive - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -rm -f cscope.out cscope.in.out cscope.po.out cscope.files - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - $(am__remove_distdir) - test -d "$(distdir)" || mkdir "$(distdir)" - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - $(am__make_dryrun) \ - || test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$(top_distdir)" distdir="$(distdir)" \ - dist-hook - -test -n "$(am__skip_mode_fix)" \ - || find "$(distdir)" -type d ! -perm -755 \ - -exec chmod u+rwx,go+rx {} \; -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 $(install_sh) -c -m a+r {} {} \; \ - || chmod -R a+r "$(distdir)" -dist-gzip: distdir - tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz - $(am__post_remove_distdir) - -dist-bzip2: distdir - tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 - $(am__post_remove_distdir) - -dist-lzip: distdir - tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz - $(am__post_remove_distdir) - -dist-xz: distdir - tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz - $(am__post_remove_distdir) - -dist-tarZ: distdir - @echo WARNING: "Support for distribution archives compressed with" \ - "legacy program 'compress' is deprecated." >&2 - @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 - tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z - $(am__post_remove_distdir) - -dist-shar: distdir - @echo WARNING: "Support for shar distribution archives is" \ - "deprecated." >&2 - @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 - shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz - $(am__post_remove_distdir) - -dist-zip: distdir - -rm -f $(distdir).zip - zip -rq $(distdir).zip $(distdir) - $(am__post_remove_distdir) - -dist dist-all: - $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' - $(am__post_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*) \ - eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ - *.tar.bz2*) \ - bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ - *.tar.lz*) \ - lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ - *.tar.xz*) \ - xz -dc $(distdir).tar.xz | $(am__untar) ;;\ - *.tar.Z*) \ - uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ - *.shar.gz*) \ - eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ - *.zip*) \ - unzip $(distdir).zip ;;\ - esac - chmod -R a-w $(distdir) - chmod u+w $(distdir) - mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst - chmod a-w $(distdir) - test -d $(distdir)/_build || exit 0; \ - dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ - && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ - && am__cwd=`pwd` \ - && $(am__cd) $(distdir)/_build/sub \ - && ../../configure \ - $(AM_DISTCHECK_CONFIGURE_FLAGS) \ - $(DISTCHECK_CONFIGURE_FLAGS) \ - --srcdir=../.. --prefix="$$dc_install_base" \ - && $(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 \ - && cd "$$am__cwd" \ - || exit 1 - $(am__post_remove_distdir) - @(echo "$(distdir) archives ready for distribution: "; \ - list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ - sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' -distuninstallcheck: - @test -n '$(distuninstallcheck_dir)' || { \ - echo 'ERROR: trying to run $@ with an empty' \ - '$$(distuninstallcheck_dir)' >&2; \ - exit 1; \ - }; \ - $(am__cd) '$(distuninstallcheck_dir)' || { \ - echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ - exit 1; \ - }; \ - test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ - || { 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 -check: check-recursive -all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS) fficonfig.h -installdirs: installdirs-recursive -installdirs-am: - for dir in "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(pkgconfigdir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -rm -f src/$(DEPDIR)/$(am__dirstamp) - -rm -f src/$(am__dirstamp) - -rm -f src/aarch64/$(DEPDIR)/$(am__dirstamp) - -rm -f src/aarch64/$(am__dirstamp) - -rm -f src/alpha/$(DEPDIR)/$(am__dirstamp) - -rm -f src/alpha/$(am__dirstamp) - -rm -f src/arc/$(DEPDIR)/$(am__dirstamp) - -rm -f src/arc/$(am__dirstamp) - -rm -f src/arm/$(DEPDIR)/$(am__dirstamp) - -rm -f src/arm/$(am__dirstamp) - -rm -f src/avr32/$(DEPDIR)/$(am__dirstamp) - -rm -f src/avr32/$(am__dirstamp) - -rm -f src/bfin/$(DEPDIR)/$(am__dirstamp) - -rm -f src/bfin/$(am__dirstamp) - -rm -f src/cris/$(DEPDIR)/$(am__dirstamp) - -rm -f src/cris/$(am__dirstamp) - -rm -f src/frv/$(DEPDIR)/$(am__dirstamp) - -rm -f src/frv/$(am__dirstamp) - -rm -f src/ia64/$(DEPDIR)/$(am__dirstamp) - -rm -f src/ia64/$(am__dirstamp) - -rm -f src/m32r/$(DEPDIR)/$(am__dirstamp) - -rm -f src/m32r/$(am__dirstamp) - -rm -f src/m68k/$(DEPDIR)/$(am__dirstamp) - -rm -f src/m68k/$(am__dirstamp) - -rm -f src/m88k/$(DEPDIR)/$(am__dirstamp) - -rm -f src/m88k/$(am__dirstamp) - -rm -f src/metag/$(DEPDIR)/$(am__dirstamp) - -rm -f src/metag/$(am__dirstamp) - -rm -f src/microblaze/$(DEPDIR)/$(am__dirstamp) - -rm -f src/microblaze/$(am__dirstamp) - -rm -f src/mips/$(DEPDIR)/$(am__dirstamp) - -rm -f src/mips/$(am__dirstamp) - -rm -f src/moxie/$(DEPDIR)/$(am__dirstamp) - -rm -f src/moxie/$(am__dirstamp) - -rm -f src/nios2/$(DEPDIR)/$(am__dirstamp) - -rm -f src/nios2/$(am__dirstamp) - -rm -f src/or1k/$(DEPDIR)/$(am__dirstamp) - -rm -f src/or1k/$(am__dirstamp) - -rm -f src/pa/$(DEPDIR)/$(am__dirstamp) - -rm -f src/pa/$(am__dirstamp) - -rm -f src/powerpc/$(DEPDIR)/$(am__dirstamp) - -rm -f src/powerpc/$(am__dirstamp) - -rm -f src/riscv/$(DEPDIR)/$(am__dirstamp) - -rm -f src/riscv/$(am__dirstamp) - -rm -f src/s390/$(DEPDIR)/$(am__dirstamp) - -rm -f src/s390/$(am__dirstamp) - -rm -f src/sh/$(DEPDIR)/$(am__dirstamp) - -rm -f src/sh/$(am__dirstamp) - -rm -f src/sh64/$(DEPDIR)/$(am__dirstamp) - -rm -f src/sh64/$(am__dirstamp) - -rm -f src/sparc/$(DEPDIR)/$(am__dirstamp) - -rm -f src/sparc/$(am__dirstamp) - -rm -f src/tile/$(DEPDIR)/$(am__dirstamp) - -rm -f src/tile/$(am__dirstamp) - -rm -f src/vax/$(DEPDIR)/$(am__dirstamp) - -rm -f src/vax/$(am__dirstamp) - -rm -f src/x86/$(DEPDIR)/$(am__dirstamp) - -rm -f src/x86/$(am__dirstamp) - -rm -f src/xtensa/$(DEPDIR)/$(am__dirstamp) - -rm -f src/xtensa/$(am__dirstamp) - -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - clean-toolexeclibLTLIBRARIES mostlyclean-am - -distclean: distclean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -f src/$(DEPDIR)/closures.Plo - -rm -f src/$(DEPDIR)/debug.Plo - -rm -f src/$(DEPDIR)/java_raw_api.Plo - -rm -f src/$(DEPDIR)/prep_cif.Plo - -rm -f src/$(DEPDIR)/raw_api.Plo - -rm -f src/$(DEPDIR)/types.Plo - -rm -f src/aarch64/$(DEPDIR)/ffi.Plo - -rm -f src/aarch64/$(DEPDIR)/sysv.Plo - -rm -f src/aarch64/$(DEPDIR)/win64_armasm.Plo - -rm -f src/alpha/$(DEPDIR)/ffi.Plo - -rm -f src/alpha/$(DEPDIR)/osf.Plo - -rm -f src/arc/$(DEPDIR)/arcompact.Plo - -rm -f src/arc/$(DEPDIR)/ffi.Plo - -rm -f src/arm/$(DEPDIR)/ffi.Plo - -rm -f src/arm/$(DEPDIR)/sysv.Plo - -rm -f src/arm/$(DEPDIR)/sysv_msvc_arm32.Plo - -rm -f src/avr32/$(DEPDIR)/ffi.Plo - -rm -f src/avr32/$(DEPDIR)/sysv.Plo - -rm -f src/bfin/$(DEPDIR)/ffi.Plo - -rm -f src/bfin/$(DEPDIR)/sysv.Plo - -rm -f src/cris/$(DEPDIR)/ffi.Plo - -rm -f src/cris/$(DEPDIR)/sysv.Plo - -rm -f src/frv/$(DEPDIR)/eabi.Plo - -rm -f src/frv/$(DEPDIR)/ffi.Plo - -rm -f src/ia64/$(DEPDIR)/ffi.Plo - -rm -f src/ia64/$(DEPDIR)/unix.Plo - -rm -f src/m32r/$(DEPDIR)/ffi.Plo - -rm -f src/m32r/$(DEPDIR)/sysv.Plo - -rm -f src/m68k/$(DEPDIR)/ffi.Plo - -rm -f src/m68k/$(DEPDIR)/sysv.Plo - -rm -f src/m88k/$(DEPDIR)/ffi.Plo - -rm -f src/m88k/$(DEPDIR)/obsd.Plo - -rm -f src/metag/$(DEPDIR)/ffi.Plo - -rm -f src/metag/$(DEPDIR)/sysv.Plo - -rm -f src/microblaze/$(DEPDIR)/ffi.Plo - -rm -f src/microblaze/$(DEPDIR)/sysv.Plo - -rm -f src/mips/$(DEPDIR)/ffi.Plo - -rm -f src/mips/$(DEPDIR)/n32.Plo - -rm -f src/mips/$(DEPDIR)/o32.Plo - -rm -f src/moxie/$(DEPDIR)/eabi.Plo - -rm -f src/moxie/$(DEPDIR)/ffi.Plo - -rm -f src/nios2/$(DEPDIR)/ffi.Plo - -rm -f src/nios2/$(DEPDIR)/sysv.Plo - -rm -f src/or1k/$(DEPDIR)/ffi.Plo - -rm -f src/or1k/$(DEPDIR)/sysv.Plo - -rm -f src/pa/$(DEPDIR)/ffi.Plo - -rm -f src/pa/$(DEPDIR)/hpux32.Plo - -rm -f src/pa/$(DEPDIR)/linux.Plo - -rm -f src/powerpc/$(DEPDIR)/aix.Plo - -rm -f src/powerpc/$(DEPDIR)/aix_closure.Plo - -rm -f src/powerpc/$(DEPDIR)/darwin.Plo - -rm -f src/powerpc/$(DEPDIR)/darwin_closure.Plo - -rm -f src/powerpc/$(DEPDIR)/ffi.Plo - -rm -f src/powerpc/$(DEPDIR)/ffi_darwin.Plo - -rm -f src/powerpc/$(DEPDIR)/ffi_linux64.Plo - -rm -f src/powerpc/$(DEPDIR)/ffi_sysv.Plo - -rm -f src/powerpc/$(DEPDIR)/linux64.Plo - -rm -f src/powerpc/$(DEPDIR)/linux64_closure.Plo - -rm -f src/powerpc/$(DEPDIR)/ppc_closure.Plo - -rm -f src/powerpc/$(DEPDIR)/sysv.Plo - -rm -f src/riscv/$(DEPDIR)/ffi.Plo - -rm -f src/riscv/$(DEPDIR)/sysv.Plo - -rm -f src/s390/$(DEPDIR)/ffi.Plo - -rm -f src/s390/$(DEPDIR)/sysv.Plo - -rm -f src/sh/$(DEPDIR)/ffi.Plo - -rm -f src/sh/$(DEPDIR)/sysv.Plo - -rm -f src/sh64/$(DEPDIR)/ffi.Plo - -rm -f src/sh64/$(DEPDIR)/sysv.Plo - -rm -f src/sparc/$(DEPDIR)/ffi.Plo - -rm -f src/sparc/$(DEPDIR)/ffi64.Plo - -rm -f src/sparc/$(DEPDIR)/v8.Plo - -rm -f src/sparc/$(DEPDIR)/v9.Plo - -rm -f src/tile/$(DEPDIR)/ffi.Plo - -rm -f src/tile/$(DEPDIR)/tile.Plo - -rm -f src/vax/$(DEPDIR)/elfbsd.Plo - -rm -f src/vax/$(DEPDIR)/ffi.Plo - -rm -f src/x86/$(DEPDIR)/ffi.Plo - -rm -f src/x86/$(DEPDIR)/ffi64.Plo - -rm -f src/x86/$(DEPDIR)/ffiw64.Plo - -rm -f src/x86/$(DEPDIR)/sysv.Plo - -rm -f src/x86/$(DEPDIR)/sysv_intel.Plo - -rm -f src/x86/$(DEPDIR)/unix64.Plo - -rm -f src/x86/$(DEPDIR)/win64.Plo - -rm -f src/x86/$(DEPDIR)/win64_intel.Plo - -rm -f src/xtensa/$(DEPDIR)/ffi.Plo - -rm -f src/xtensa/$(DEPDIR)/sysv.Plo - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-hdr distclean-libtool distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: install-pkgconfigDATA - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: install-toolexeclibLTLIBRARIES - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf $(top_srcdir)/autom4te.cache - -rm -f src/$(DEPDIR)/closures.Plo - -rm -f src/$(DEPDIR)/debug.Plo - -rm -f src/$(DEPDIR)/java_raw_api.Plo - -rm -f src/$(DEPDIR)/prep_cif.Plo - -rm -f src/$(DEPDIR)/raw_api.Plo - -rm -f src/$(DEPDIR)/types.Plo - -rm -f src/aarch64/$(DEPDIR)/ffi.Plo - -rm -f src/aarch64/$(DEPDIR)/sysv.Plo - -rm -f src/aarch64/$(DEPDIR)/win64_armasm.Plo - -rm -f src/alpha/$(DEPDIR)/ffi.Plo - -rm -f src/alpha/$(DEPDIR)/osf.Plo - -rm -f src/arc/$(DEPDIR)/arcompact.Plo - -rm -f src/arc/$(DEPDIR)/ffi.Plo - -rm -f src/arm/$(DEPDIR)/ffi.Plo - -rm -f src/arm/$(DEPDIR)/sysv.Plo - -rm -f src/arm/$(DEPDIR)/sysv_msvc_arm32.Plo - -rm -f src/avr32/$(DEPDIR)/ffi.Plo - -rm -f src/avr32/$(DEPDIR)/sysv.Plo - -rm -f src/bfin/$(DEPDIR)/ffi.Plo - -rm -f src/bfin/$(DEPDIR)/sysv.Plo - -rm -f src/cris/$(DEPDIR)/ffi.Plo - -rm -f src/cris/$(DEPDIR)/sysv.Plo - -rm -f src/frv/$(DEPDIR)/eabi.Plo - -rm -f src/frv/$(DEPDIR)/ffi.Plo - -rm -f src/ia64/$(DEPDIR)/ffi.Plo - -rm -f src/ia64/$(DEPDIR)/unix.Plo - -rm -f src/m32r/$(DEPDIR)/ffi.Plo - -rm -f src/m32r/$(DEPDIR)/sysv.Plo - -rm -f src/m68k/$(DEPDIR)/ffi.Plo - -rm -f src/m68k/$(DEPDIR)/sysv.Plo - -rm -f src/m88k/$(DEPDIR)/ffi.Plo - -rm -f src/m88k/$(DEPDIR)/obsd.Plo - -rm -f src/metag/$(DEPDIR)/ffi.Plo - -rm -f src/metag/$(DEPDIR)/sysv.Plo - -rm -f src/microblaze/$(DEPDIR)/ffi.Plo - -rm -f src/microblaze/$(DEPDIR)/sysv.Plo - -rm -f src/mips/$(DEPDIR)/ffi.Plo - -rm -f src/mips/$(DEPDIR)/n32.Plo - -rm -f src/mips/$(DEPDIR)/o32.Plo - -rm -f src/moxie/$(DEPDIR)/eabi.Plo - -rm -f src/moxie/$(DEPDIR)/ffi.Plo - -rm -f src/nios2/$(DEPDIR)/ffi.Plo - -rm -f src/nios2/$(DEPDIR)/sysv.Plo - -rm -f src/or1k/$(DEPDIR)/ffi.Plo - -rm -f src/or1k/$(DEPDIR)/sysv.Plo - -rm -f src/pa/$(DEPDIR)/ffi.Plo - -rm -f src/pa/$(DEPDIR)/hpux32.Plo - -rm -f src/pa/$(DEPDIR)/linux.Plo - -rm -f src/powerpc/$(DEPDIR)/aix.Plo - -rm -f src/powerpc/$(DEPDIR)/aix_closure.Plo - -rm -f src/powerpc/$(DEPDIR)/darwin.Plo - -rm -f src/powerpc/$(DEPDIR)/darwin_closure.Plo - -rm -f src/powerpc/$(DEPDIR)/ffi.Plo - -rm -f src/powerpc/$(DEPDIR)/ffi_darwin.Plo - -rm -f src/powerpc/$(DEPDIR)/ffi_linux64.Plo - -rm -f src/powerpc/$(DEPDIR)/ffi_sysv.Plo - -rm -f src/powerpc/$(DEPDIR)/linux64.Plo - -rm -f src/powerpc/$(DEPDIR)/linux64_closure.Plo - -rm -f src/powerpc/$(DEPDIR)/ppc_closure.Plo - -rm -f src/powerpc/$(DEPDIR)/sysv.Plo - -rm -f src/riscv/$(DEPDIR)/ffi.Plo - -rm -f src/riscv/$(DEPDIR)/sysv.Plo - -rm -f src/s390/$(DEPDIR)/ffi.Plo - -rm -f src/s390/$(DEPDIR)/sysv.Plo - -rm -f src/sh/$(DEPDIR)/ffi.Plo - -rm -f src/sh/$(DEPDIR)/sysv.Plo - -rm -f src/sh64/$(DEPDIR)/ffi.Plo - -rm -f src/sh64/$(DEPDIR)/sysv.Plo - -rm -f src/sparc/$(DEPDIR)/ffi.Plo - -rm -f src/sparc/$(DEPDIR)/ffi64.Plo - -rm -f src/sparc/$(DEPDIR)/v8.Plo - -rm -f src/sparc/$(DEPDIR)/v9.Plo - -rm -f src/tile/$(DEPDIR)/ffi.Plo - -rm -f src/tile/$(DEPDIR)/tile.Plo - -rm -f src/vax/$(DEPDIR)/elfbsd.Plo - -rm -f src/vax/$(DEPDIR)/ffi.Plo - -rm -f src/x86/$(DEPDIR)/ffi.Plo - -rm -f src/x86/$(DEPDIR)/ffi64.Plo - -rm -f src/x86/$(DEPDIR)/ffiw64.Plo - -rm -f src/x86/$(DEPDIR)/sysv.Plo - -rm -f src/x86/$(DEPDIR)/sysv_intel.Plo - -rm -f src/x86/$(DEPDIR)/unix64.Plo - -rm -f src/x86/$(DEPDIR)/win64.Plo - -rm -f src/x86/$(DEPDIR)/win64_intel.Plo - -rm -f src/xtensa/$(DEPDIR)/ffi.Plo - -rm -f src/xtensa/$(DEPDIR)/sysv.Plo - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: uninstall-pkgconfigDATA uninstall-toolexeclibLTLIBRARIES - -.MAKE: $(am__recursive_targets) all install-am install-strip - -.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ - am--depfiles am--refresh check check-am clean clean-cscope \ - clean-generic clean-libtool clean-noinstLTLIBRARIES \ - clean-toolexeclibLTLIBRARIES cscope cscopelist-am ctags \ - ctags-am dist dist-all dist-bzip2 dist-gzip dist-hook \ - dist-lzip dist-shar dist-tarZ dist-xz 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-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pkgconfigDATA install-ps \ - install-ps-am install-strip install-toolexeclibLTLIBRARIES \ - installcheck installcheck-am installdirs installdirs-am \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ - uninstall-pkgconfigDATA uninstall-toolexeclibLTLIBRARIES - -.PRECIOUS: Makefile - -@LIBFFI_BUILD_VERSIONED_SHLIB_SUN_TRUE@@LIBFFI_BUILD_VERSIONED_SHLIB_TRUE@libffi.map-sun : libffi.map $(top_srcdir)/make_sunver.pl \ -@LIBFFI_BUILD_VERSIONED_SHLIB_SUN_TRUE@@LIBFFI_BUILD_VERSIONED_SHLIB_TRUE@ $(libffi_la_OBJECTS) $(libffi_la_LIBADD) -@LIBFFI_BUILD_VERSIONED_SHLIB_SUN_TRUE@@LIBFFI_BUILD_VERSIONED_SHLIB_TRUE@ perl $(top_srcdir)/make_sunver.pl libffi.map \ -@LIBFFI_BUILD_VERSIONED_SHLIB_SUN_TRUE@@LIBFFI_BUILD_VERSIONED_SHLIB_TRUE@ `echo $(libffi_la_OBJECTS) $(libffi_la_LIBADD) | \ -@LIBFFI_BUILD_VERSIONED_SHLIB_SUN_TRUE@@LIBFFI_BUILD_VERSIONED_SHLIB_TRUE@ sed 's,\([^/ ]*\)\.l\([ao]\),.libs/\1.\2,g'` \ -@LIBFFI_BUILD_VERSIONED_SHLIB_SUN_TRUE@@LIBFFI_BUILD_VERSIONED_SHLIB_TRUE@ > $@ || (rm -f $@ ; exit 1) - -libffi.map: $(top_srcdir)/libffi.map.in - $(COMPILE) -D$(TARGET) -E -x assembler-with-cpp -o $@ $< - -dist-hook: - d=`(cd $(distdir); pwd)`; (cd doc; make pdf; cp *.pdf $$d/doc) - if [ -d $(top_srcdir)/.git ] ; then (cd $(top_srcdir); git log --no-decorate) ; else echo 'See git log for history.' ; fi > $(distdir)/ChangeLog - s=`awk '/was released on/{ print NR; exit}' $(top_srcdir)/README.md`; tail -n +$$(($$s-1)) $(top_srcdir)/README.md > $(distdir)/README.md - -# 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: diff --git a/README.OpenSource b/README.OpenSource index a0e8ca4..6d0e268 100644 --- a/README.OpenSource +++ b/README.OpenSource @@ -3,7 +3,7 @@ "Name": "libffi", "License": "MIT License", "License File": "LICENSE", - "Version Number": "3.3", + "Version Number": "3.4.2", "Upstream URL": "https://sourceware.org/libffi/", "Description": "The libffi library provides a portable, high level programming interface to various calling conventions. This allows a programmer to call any function specified by a call interface description at run-time." } diff --git a/README.md b/README.md index 737fd41..b3cf428 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -libffi-3.3 was released on November 23, 2019. Check the libffi web -page for updates: . +libffi-3.4.1 was released on June 28, 2021. Check the libffi web page +for updates: . What is libffi? @@ -23,7 +23,7 @@ bridge from the interpreter program to compiled code. The libffi library provides a portable, high level programming interface to various calling conventions. This allows a programmer to call any function specified by a call interface description at run -time. +time. FFI stands for Foreign Function Interface. A foreign function interface is the popular name for the interface that allows code @@ -55,7 +55,9 @@ tested: | ARM | Windows | MSVC | | AVR32 | Linux | GCC | | Blackfin | uClinux | GCC | +| CSKY | Linux | GCC | | HPPA | HPUX | GCC | +| KVX | Linux | GCC | | IA-64 | Linux | GCC | | M68K | FreeMiNT | GCC | | M68K | Linux | GCC | @@ -96,7 +98,6 @@ tested: | X86 | Interix | GCC | | X86 | kFreeBSD | GCC | | X86 | Linux | GCC | -| X86 | Mac OSX | GCC | | X86 | OpenBSD | GCC | | X86 | OS/2 | GCC | | X86 | Solaris | GCC | @@ -131,15 +132,15 @@ install autoconf, automake and libtool. You may want to tell configure where to install the libffi library and header files. To do that, use the ``--prefix`` configure switch. Libffi -will install under /usr/local by default. +will install under /usr/local by default. If you want to enable extra run-time debugging checks use the the ``--enable-debug`` configure switch. This is useful when your program dies -mysteriously while using libffi. +mysteriously while using libffi. Another useful configure switch is ``--enable-purify-safety``. Using this will add some extra code which will suppress certain warnings when you -are using Purify with libffi. Only use this switch when using +are using Purify with libffi. Only use this switch when using Purify, as it will slow down the library. If you don't want to build documentation, use the ``--disable-docs`` @@ -158,7 +159,7 @@ For 64-bit Windows builds, use ``CC="path/to/msvcc.sh -m64"`` and It is also possible to build libffi on Windows platforms with the LLVM project's clang-cl compiler, like below: - path/to/configure CC="path/to/msvcc.sh -clang-cl" CXX="path/to/msvcc.sh -clang-cl" LD=link CPP="clang-cl -EP" + path/to/configure CC="path/to/msvcc.sh -clang-cl" CXX="path/to/msvcc.sh -clang-cl" LD=link CPP="clang-cl -EP" When building with MSVC under a MingW environment, you may need to remove the line in configure that sets 'fix_srcfile_path' to a 'cygpath' @@ -192,6 +193,19 @@ History See the git log for details at http://github.com/libffi/libffi. + 3.4.2 Jun-28-21 + Add static trampoline support for Linux on x86_64 and ARM64. + Add support for Alibaba's CSKY architecture. + Add support for Kalray's KVX architecture. + Add support for Intel Control-flow Enforcement Technology (CET). + Add support for ARM Pointer Authentication (PA). + Fix 32-bit PPC regression. + Fix MIPS soft-float problem. + Enable tmpdir override with the $LIBFFI_TMPDIR environment variable. + Enable compatibility with MSVC runtime stack checking. + Reject float and small integer argument in ffi_prep_cif_var(). + Callers must promote these types themselves. + 3.3 Nov-23-19 Add RISC-V support. New API in support of GO closures. @@ -201,12 +215,12 @@ See the git log for details at http://github.com/libffi/libffi. Add Windows on ARM64 (WOA) support. Add Windows 32-bit ARM support. Raw java (gcj) API deprecated. - Add pre-built PDF documentation to source distribution. - Many new tests cases and bug fixes. - + Add pre-built PDF documentation to source distribution. + Many new test cases and bug fixes. + 3.2.1 Nov-12-14 Build fix for non-iOS AArch64 targets. - + 3.2 Nov-11-14 Add C99 Complex Type support (currently only supported on s390). @@ -214,7 +228,7 @@ See the git log for details at http://github.com/libffi/libffi. Windows/Linux. Add OpenRISC and Cygwin-64 support. Bug fixes. - + 3.1 May-19-14 Add AArch64 (ARM64) iOS support. Add Nios II support. @@ -227,7 +241,7 @@ See the git log for details at http://github.com/libffi/libffi. failures, and respect the $CC and $CXX environment variables. Archive off the manually maintained ChangeLog in favor of git log. - + 3.0.13 Mar-17-13 Add Meta support. Add missing Moxie bits. @@ -237,7 +251,7 @@ See the git log for details at http://github.com/libffi/libffi. Fix the install dir location for some platforms when building with GCC (OS X, Solaris). Fix Cygwin regression. - + 3.0.12 Feb-11-13 Add Moxie support. Add AArch64 support. @@ -249,7 +263,7 @@ See the git log for details at http://github.com/libffi/libffi. Add support for native vendor compilers on Solaris and AIX. Work around LLVM/GCC interoperability issue on x86_64. - + 3.0.11 Apr-11-12 Lots of build fixes. Add support for variadic functions (ffi_prep_cif_var). @@ -260,7 +274,7 @@ See the git log for details at http://github.com/libffi/libffi. Integration with iOS' xcode build tools. Fix Octeon and MC68881 support. Fix code pessimizations. - + 3.0.10 Aug-23-11 Add support for Apple's iOS. Add support for ARM VFP ABI. @@ -274,128 +288,128 @@ See the git log for details at http://github.com/libffi/libffi. Solaris compiler. Testsuite fixes for Tru64 Unix. Additional platform support. - + 3.0.9 Dec-31-09 Add AVR32 and win64 ports. Add ARM softfp support. Many fixes for AIX, Solaris, HP-UX, *BSD. Several PowerPC and x86-64 bug fixes. Build DLL for windows. - + 3.0.8 Dec-19-08 Add *BSD, BeOS, and PA-Linux support. - + 3.0.7 Nov-11-08 Fix for ppc FreeBSD. (thanks to Andreas Tobler) - + 3.0.6 Jul-17-08 Fix for closures on sh. Mark the sh/sh64 stack as non-executable. (both thanks to Kaz Kojima) - + 3.0.5 Apr-3-08 Fix libffi.pc file. Fix #define ARM for IcedTea users. Fix x86 closure bug. - + 3.0.4 Feb-24-08 Fix x86 OpenBSD configury. - + 3.0.3 Feb-22-08 Enable x86 OpenBSD thanks to Thomas Heller, and x86-64 FreeBSD thanks to Björn König and Andreas Tobler. Clean up test instruction in README. - + 3.0.2 Feb-21-08 Improved x86 FreeBSD support. Thanks to Björn König. - + 3.0.1 Feb-15-08 Fix instruction cache flushing bug on MIPS. Thanks to David Daney. - + 3.0.0 Feb-15-08 Many changes, mostly thanks to the GCC project. Cygnus Solutions is now Red Hat. - + [10 years go by...] - + 1.20 Oct-5-98 Raffaele Sena produces ARM port. - + 1.19 Oct-5-98 Fixed x86 long double and long long return support. m68k bug fixes from Andreas Schwab. Patch for DU assembler compatibility for the Alpha from Richard Henderson. - + 1.18 Apr-17-98 Bug fixes and MIPS configuration changes. - + 1.17 Feb-24-98 Bug fixes and m68k port from Andreas Schwab. PowerPC port from Geoffrey Keating. Various bug x86, Sparc and MIPS bug fixes. - + 1.16 Feb-11-98 Richard Henderson produces Alpha port. - + 1.15 Dec-4-97 Fixed an n32 ABI bug. New libtool, auto* support. - + 1.14 May-13-97 libtool is now used to generate shared and static libraries. Fixed a minor portability problem reported by Russ McManus . - + 1.13 Dec-2-96 Added --enable-purify-safety to keep Purify from complaining about certain low level code. Sparc fix for calling functions with < 6 args. Linux x86 a.out fix. - + 1.12 Nov-22-96 - Added missing ffi_type_void, needed for supporting void return - types. Fixed test case for non MIPS machines. Cygnus Support - is now Cygnus Solutions. - + Added missing ffi_type_void, needed for supporting void return + types. Fixed test case for non MIPS machines. Cygnus Support + is now Cygnus Solutions. + 1.11 Oct-30-96 Added notes about GNU make. - + 1.10 Oct-29-96 Added configuration fix for non GNU compilers. - + 1.09 Oct-29-96 - Added --enable-debug configure switch. Clean-ups based on LCLint - feedback. ffi_mips.h is always installed. Many configuration + Added --enable-debug configure switch. Clean-ups based on LCLint + feedback. ffi_mips.h is always installed. Many configuration fixes. Fixed ffitest.c for sparc builds. - + 1.08 Oct-15-96 Fixed n32 problem. Many clean-ups. - + 1.07 Oct-14-96 Gordon Irlam rewrites v8.S again. Bug fixes. - + 1.06 Oct-14-96 - Gordon Irlam improved the sparc port. - + Gordon Irlam improved the sparc port. + 1.05 Oct-14-96 Interface changes based on feedback. - + 1.04 Oct-11-96 Sparc port complete (modulo struct passing bug). - + 1.03 Oct-10-96 Passing struct args, and returning struct values works for all architectures/calling conventions. Expanded tests. - + 1.02 Oct-9-96 Added SGI n32 support. Fixed bugs in both o32 and Linux support. Added "make test". - + 1.01 Oct-8-96 Fixed float passing bug in mips version. Restructured some of the code. Builds cleanly with SGI tools. - + 1.00 Oct-7-96 First release. No public announcement. @@ -424,8 +438,10 @@ developers: avr32 Bradley Smith blackfin Alexandre Keunecke I. de Mendonca cris Simon Posnjak, Hans-Peter Nilsson + csky Ma Jun, Zhang Wenmeng frv Anthony Green ia64 Hans Boehm + kvx Yann Sionneau m32r Kazuhiro Inaoka m68k Andreas Schwab m88k Miod Vallat @@ -467,6 +483,11 @@ Alex Oliva solved the executable page problem for SElinux. The list above is almost certainly incomplete and inaccurate. I'm happy to make corrections or additions upon request. -If you have a problem, or have found a bug, please send a note to the -author at green@moxielogic.com, or the project mailing list at -libffi-discuss@sourceware.org. +If you have a problem, or have found a bug, please file an issue on +our issue tracker at https://github.com/libffi/libffi/issues. + +The author can be reached at green@moxielogic.com. + +To subscribe/unsubscribe to our mailing lists, visit: +https://sourceware.org/mailman/listinfo/libffi-announce +https://sourceware.org/mailman/listinfo/libffi-discuss diff --git a/acinclude.m4 b/acinclude.m4 deleted file mode 100644 index 1a70efb..0000000 --- a/acinclude.m4 +++ /dev/null @@ -1,479 +0,0 @@ -# mmap(2) blacklisting. Some platforms provide the mmap library routine -# but don't support all of the features we need from it. -AC_DEFUN([AC_FUNC_MMAP_BLACKLIST], -[ -AC_CHECK_HEADER([sys/mman.h], - [libffi_header_sys_mman_h=yes], [libffi_header_sys_mman_h=no]) -AC_CHECK_FUNC([mmap], [libffi_func_mmap=yes], [libffi_func_mmap=no]) -if test "$libffi_header_sys_mman_h" != yes \ - || test "$libffi_func_mmap" != yes; then - ac_cv_func_mmap_file=no - ac_cv_func_mmap_dev_zero=no - ac_cv_func_mmap_anon=no -else - AC_CACHE_CHECK([whether read-only mmap of a plain file works], - ac_cv_func_mmap_file, - [# Add a system to this blacklist if - # mmap(0, stat_size, PROT_READ, MAP_PRIVATE, fd, 0) doesn't return a - # memory area containing the same data that you'd get if you applied - # read() to the same fd. The only system known to have a problem here - # is VMS, where text files have record structure. - case "$host_os" in - vms* | ultrix*) - ac_cv_func_mmap_file=no ;; - *) - ac_cv_func_mmap_file=yes;; - esac]) - AC_CACHE_CHECK([whether mmap from /dev/zero works], - ac_cv_func_mmap_dev_zero, - [# Add a system to this blacklist if it has mmap() but /dev/zero - # does not exist, or if mmapping /dev/zero does not give anonymous - # zeroed pages with both the following properties: - # 1. If you map N consecutive pages in with one call, and then - # unmap any subset of those pages, the pages that were not - # explicitly unmapped remain accessible. - # 2. If you map two adjacent blocks of memory and then unmap them - # both at once, they must both go away. - # Systems known to be in this category are Windows (all variants), - # VMS, and Darwin. - case "$host_os" in - vms* | cygwin* | pe | mingw* | darwin* | ultrix* | hpux10* | hpux11.00) - ac_cv_func_mmap_dev_zero=no ;; - *) - ac_cv_func_mmap_dev_zero=yes;; - esac]) - - # Unlike /dev/zero, the MAP_ANON(YMOUS) defines can be probed for. - AC_CACHE_CHECK([for MAP_ANON(YMOUS)], ac_cv_decl_map_anon, - [AC_TRY_COMPILE( -[#include -#include -#include - -#ifndef MAP_ANONYMOUS -#define MAP_ANONYMOUS MAP_ANON -#endif -], -[int n = MAP_ANONYMOUS;], - ac_cv_decl_map_anon=yes, - ac_cv_decl_map_anon=no)]) - - if test $ac_cv_decl_map_anon = no; then - ac_cv_func_mmap_anon=no - else - AC_CACHE_CHECK([whether mmap with MAP_ANON(YMOUS) works], - ac_cv_func_mmap_anon, - [# Add a system to this blacklist if it has mmap() and MAP_ANON or - # MAP_ANONYMOUS, but using mmap(..., MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) - # doesn't give anonymous zeroed pages with the same properties listed - # above for use of /dev/zero. - # Systems known to be in this category are Windows, VMS, and SCO Unix. - case "$host_os" in - vms* | cygwin* | pe | mingw* | sco* | udk* ) - ac_cv_func_mmap_anon=no ;; - *) - ac_cv_func_mmap_anon=yes;; - esac]) - fi -fi - -if test $ac_cv_func_mmap_file = yes; then - AC_DEFINE(HAVE_MMAP_FILE, 1, - [Define if read-only mmap of a plain file works.]) -fi -if test $ac_cv_func_mmap_dev_zero = yes; then - AC_DEFINE(HAVE_MMAP_DEV_ZERO, 1, - [Define if mmap of /dev/zero works.]) -fi -if test $ac_cv_func_mmap_anon = yes; then - AC_DEFINE(HAVE_MMAP_ANON, 1, - [Define if mmap with MAP_ANON(YMOUS) works.]) -fi -]) - -dnl ---------------------------------------------------------------------- -dnl This whole bit snagged from libstdc++-v3, via libatomic. - -dnl -dnl LIBFFI_ENABLE -dnl (FEATURE, DEFAULT, HELP-ARG, HELP-STRING) -dnl (FEATURE, DEFAULT, HELP-ARG, HELP-STRING, permit a|b|c) -dnl (FEATURE, DEFAULT, HELP-ARG, HELP-STRING, SHELL-CODE-HANDLER) -dnl -dnl See docs/html/17_intro/configury.html#enable for documentation. -dnl -m4_define([LIBFFI_ENABLE],[dnl -m4_define([_g_switch],[--enable-$1])dnl -m4_define([_g_help],[AC_HELP_STRING(_g_switch$3,[$4 @<:@default=$2@:>@])])dnl - AC_ARG_ENABLE($1,_g_help, - m4_bmatch([$5], - [^permit ], - [[ - case "$enableval" in - m4_bpatsubst([$5],[permit ])) ;; - *) AC_MSG_ERROR(Unknown argument to enable/disable $1) ;; - dnl Idea for future: generate a URL pointing to - dnl "onlinedocs/configopts.html#whatever" - esac - ]], - [^$], - [[ - case "$enableval" in - yes|no) ;; - *) AC_MSG_ERROR(Argument to enable/disable $1 must be yes or no) ;; - esac - ]], - [[$5]]), - [enable_]m4_bpatsubst([$1],-,_)[=][$2]) -m4_undefine([_g_switch])dnl -m4_undefine([_g_help])dnl -]) - -dnl -dnl If GNU ld is in use, check to see if tricky linker opts can be used. If -dnl the native linker is in use, all variables will be defined to something -dnl safe (like an empty string). -dnl -dnl Defines: -dnl SECTION_LDFLAGS='-Wl,--gc-sections' if possible -dnl OPT_LDFLAGS='-Wl,-O1' if possible -dnl LD (as a side effect of testing) -dnl Sets: -dnl with_gnu_ld -dnl libat_ld_is_gold (possibly) -dnl libat_gnu_ld_version (possibly) -dnl -dnl The last will be a single integer, e.g., version 1.23.45.0.67.89 will -dnl set libat_gnu_ld_version to 12345. Zeros cause problems. -dnl -AC_DEFUN([LIBFFI_CHECK_LINKER_FEATURES], [ - # If we're not using GNU ld, then there's no point in even trying these - # tests. Check for that first. We should have already tested for gld - # by now (in libtool), but require it now just to be safe... - test -z "$SECTION_LDFLAGS" && SECTION_LDFLAGS='' - test -z "$OPT_LDFLAGS" && OPT_LDFLAGS='' - AC_REQUIRE([AC_PROG_LD]) - AC_REQUIRE([AC_PROG_AWK]) - - # The name set by libtool depends on the version of libtool. Shame on us - # for depending on an impl detail, but c'est la vie. Older versions used - # ac_cv_prog_gnu_ld, but now it's lt_cv_prog_gnu_ld, and is copied back on - # top of with_gnu_ld (which is also set by --with-gnu-ld, so that actually - # makes sense). We'll test with_gnu_ld everywhere else, so if that isn't - # set (hence we're using an older libtool), then set it. - if test x${with_gnu_ld+set} != xset; then - if test x${ac_cv_prog_gnu_ld+set} != xset; then - # We got through "ac_require(ac_prog_ld)" and still not set? Huh? - with_gnu_ld=no - else - with_gnu_ld=$ac_cv_prog_gnu_ld - fi - fi - - # Start by getting the version number. I think the libtool test already - # does some of this, but throws away the result. - libat_ld_is_gold=no - if $LD --version 2>/dev/null | grep 'GNU gold'> /dev/null 2>&1; then - libat_ld_is_gold=yes - fi - changequote(,) - ldver=`$LD --version 2>/dev/null | - sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'` - changequote([,]) - libat_gnu_ld_version=`echo $ldver | \ - $AWK -F. '{ if (NF<3) [$]3=0; print ([$]1*100+[$]2)*100+[$]3 }'` - - # Set --gc-sections. - if test "$with_gnu_ld" = "notbroken"; then - # GNU ld it is! Joy and bunny rabbits! - - # All these tests are for C++; save the language and the compiler flags. - # Need to do this so that g++ won't try to link in libstdc++ - ac_test_CFLAGS="${CFLAGS+set}" - ac_save_CFLAGS="$CFLAGS" - CFLAGS='-x c++ -Wl,--gc-sections' - - # Check for -Wl,--gc-sections - # XXX This test is broken at the moment, as symbols required for linking - # are now in libsupc++ (not built yet). In addition, this test has - # cored on solaris in the past. In addition, --gc-sections doesn't - # really work at the moment (keeps on discarding used sections, first - # .eh_frame and now some of the glibc sections for iconv). - # Bzzzzt. Thanks for playing, maybe next time. - AC_MSG_CHECKING([for ld that supports -Wl,--gc-sections]) - AC_TRY_RUN([ - int main(void) - { - try { throw 1; } - catch (...) { }; - return 0; - } - ], [ac_sectionLDflags=yes],[ac_sectionLDflags=no], [ac_sectionLDflags=yes]) - if test "$ac_test_CFLAGS" = set; then - CFLAGS="$ac_save_CFLAGS" - else - # this is the suspicious part - CFLAGS='' - fi - if test "$ac_sectionLDflags" = "yes"; then - SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS" - fi - AC_MSG_RESULT($ac_sectionLDflags) - fi - - # Set linker optimization flags. - if test x"$with_gnu_ld" = x"yes"; then - OPT_LDFLAGS="-Wl,-O1 $OPT_LDFLAGS" - fi - - AC_SUBST(SECTION_LDFLAGS) - AC_SUBST(OPT_LDFLAGS) -]) - - -dnl -dnl If GNU ld is in use, check to see if tricky linker opts can be used. If -dnl the native linker is in use, all variables will be defined to something -dnl safe (like an empty string). -dnl -dnl Defines: -dnl SECTION_LDFLAGS='-Wl,--gc-sections' if possible -dnl OPT_LDFLAGS='-Wl,-O1' if possible -dnl LD (as a side effect of testing) -dnl Sets: -dnl with_gnu_ld -dnl libat_ld_is_gold (possibly) -dnl libat_gnu_ld_version (possibly) -dnl -dnl The last will be a single integer, e.g., version 1.23.45.0.67.89 will -dnl set libat_gnu_ld_version to 12345. Zeros cause problems. -dnl -AC_DEFUN([LIBFFI_CHECK_LINKER_FEATURES], [ - # If we're not using GNU ld, then there's no point in even trying these - # tests. Check for that first. We should have already tested for gld - # by now (in libtool), but require it now just to be safe... - test -z "$SECTION_LDFLAGS" && SECTION_LDFLAGS='' - test -z "$OPT_LDFLAGS" && OPT_LDFLAGS='' - AC_REQUIRE([AC_PROG_LD]) - AC_REQUIRE([AC_PROG_AWK]) - - # The name set by libtool depends on the version of libtool. Shame on us - # for depending on an impl detail, but c'est la vie. Older versions used - # ac_cv_prog_gnu_ld, but now it's lt_cv_prog_gnu_ld, and is copied back on - # top of with_gnu_ld (which is also set by --with-gnu-ld, so that actually - # makes sense). We'll test with_gnu_ld everywhere else, so if that isn't - # set (hence we're using an older libtool), then set it. - if test x${with_gnu_ld+set} != xset; then - if test x${ac_cv_prog_gnu_ld+set} != xset; then - # We got through "ac_require(ac_prog_ld)" and still not set? Huh? - with_gnu_ld=no - else - with_gnu_ld=$ac_cv_prog_gnu_ld - fi - fi - - # Start by getting the version number. I think the libtool test already - # does some of this, but throws away the result. - libat_ld_is_gold=no - if $LD --version 2>/dev/null | grep 'GNU gold'> /dev/null 2>&1; then - libat_ld_is_gold=yes - fi - libat_ld_is_lld=no - if $LD --version 2>/dev/null | grep 'LLD '> /dev/null 2>&1; then - libat_ld_is_lld=yes - fi - changequote(,) - ldver=`$LD --version 2>/dev/null | - sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'` - changequote([,]) - libat_gnu_ld_version=`echo $ldver | \ - $AWK -F. '{ if (NF<3) [$]3=0; print ([$]1*100+[$]2)*100+[$]3 }'` - - # Set --gc-sections. - if test "$with_gnu_ld" = "notbroken"; then - # GNU ld it is! Joy and bunny rabbits! - - # All these tests are for C++; save the language and the compiler flags. - # Need to do this so that g++ won't try to link in libstdc++ - ac_test_CFLAGS="${CFLAGS+set}" - ac_save_CFLAGS="$CFLAGS" - CFLAGS='-x c++ -Wl,--gc-sections' - - # Check for -Wl,--gc-sections - # XXX This test is broken at the moment, as symbols required for linking - # are now in libsupc++ (not built yet). In addition, this test has - # cored on solaris in the past. In addition, --gc-sections doesn't - # really work at the moment (keeps on discarding used sections, first - # .eh_frame and now some of the glibc sections for iconv). - # Bzzzzt. Thanks for playing, maybe next time. - AC_MSG_CHECKING([for ld that supports -Wl,--gc-sections]) - AC_TRY_RUN([ - int main(void) - { - try { throw 1; } - catch (...) { }; - return 0; - } - ], [ac_sectionLDflags=yes],[ac_sectionLDflags=no], [ac_sectionLDflags=yes]) - if test "$ac_test_CFLAGS" = set; then - CFLAGS="$ac_save_CFLAGS" - else - # this is the suspicious part - CFLAGS='' - fi - if test "$ac_sectionLDflags" = "yes"; then - SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS" - fi - AC_MSG_RESULT($ac_sectionLDflags) - fi - - # Set linker optimization flags. - if test x"$with_gnu_ld" = x"yes"; then - OPT_LDFLAGS="-Wl,-O1 $OPT_LDFLAGS" - fi - - AC_SUBST(SECTION_LDFLAGS) - AC_SUBST(OPT_LDFLAGS) -]) - - -dnl -dnl Add version tags to symbols in shared library (or not), additionally -dnl marking other symbols as private/local (or not). -dnl -dnl --enable-symvers=style adds a version script to the linker call when -dnl creating the shared library. The choice of version script is -dnl controlled by 'style'. -dnl --disable-symvers does not. -dnl + Usage: LIBFFI_ENABLE_SYMVERS[(DEFAULT)] -dnl Where DEFAULT is either 'yes' or 'no'. Passing `yes' tries to -dnl choose a default style based on linker characteristics. Passing -dnl 'no' disables versioning. -dnl -AC_DEFUN([LIBFFI_ENABLE_SYMVERS], [ - -LIBFFI_ENABLE(symvers,yes,[=STYLE], - [enables symbol versioning of the shared library], - [permit yes|no|gnu*|sun]) - -# If we never went through the LIBFFI_CHECK_LINKER_FEATURES macro, then we -# don't know enough about $LD to do tricks... -AC_REQUIRE([LIBFFI_CHECK_LINKER_FEATURES]) - -# Turn a 'yes' into a suitable default. -if test x$enable_symvers = xyes ; then - # FIXME The following test is too strict, in theory. - if test $enable_shared = no || test "x$LD" = x; then - enable_symvers=no - else - if test $with_gnu_ld = yes ; then - enable_symvers=gnu - else - case ${target_os} in - # Sun symbol versioning exists since Solaris 2.5. - solaris2.[[5-9]]* | solaris2.1[[0-9]]*) - enable_symvers=sun ;; - *) - enable_symvers=no ;; - esac - fi - fi -fi - -# Check if 'sun' was requested on non-Solaris 2 platforms. -if test x$enable_symvers = xsun ; then - case ${target_os} in - solaris2*) - # All fine. - ;; - *) - # Unlikely to work. - AC_MSG_WARN([=== You have requested Sun symbol versioning, but]) - AC_MSG_WARN([=== you are not targetting Solaris 2.]) - AC_MSG_WARN([=== Symbol versioning will be disabled.]) - enable_symvers=no - ;; - esac -fi - -# Check to see if libgcc_s exists, indicating that shared libgcc is possible. -if test $enable_symvers != no; then - AC_MSG_CHECKING([for shared libgcc]) - ac_save_CFLAGS="$CFLAGS" - CFLAGS=' -lgcc_s' - AC_TRY_LINK(, [return 0;], libat_shared_libgcc=yes, libat_shared_libgcc=no) - CFLAGS="$ac_save_CFLAGS" - if test $libat_shared_libgcc = no; then - cat > conftest.c <&1 >/dev/null \ - | sed -n 's/^.* -lgcc_s\([^ ]*\) .*$/\1/p'` -changequote([,])dnl - rm -f conftest.c conftest.so - if test x${libat_libgcc_s_suffix+set} = xset; then - CFLAGS=" -lgcc_s$libat_libgcc_s_suffix" - AC_TRY_LINK(, [return 0;], libat_shared_libgcc=yes) - CFLAGS="$ac_save_CFLAGS" - fi - fi - AC_MSG_RESULT($libat_shared_libgcc) -fi - -# For GNU ld, we need at least this version. The format is described in -# LIBFFI_CHECK_LINKER_FEATURES above. -libat_min_gnu_ld_version=21400 -# XXXXXXXXXXX libat_gnu_ld_version=21390 - -# Check to see if unspecified "yes" value can win, given results above. -# Change "yes" into either "no" or a style name. -if test $enable_symvers != no && test $libat_shared_libgcc = yes; then - if test $with_gnu_ld = yes; then - if test $libat_gnu_ld_version -ge $libat_min_gnu_ld_version ; then - enable_symvers=gnu - elif test $libat_ld_is_gold = yes ; then - enable_symvers=gnu - elif test $libat_ld_is_lld = yes ; then - enable_symvers=gnu - else - # The right tools, the right setup, but too old. Fallbacks? - AC_MSG_WARN(=== Linker version $libat_gnu_ld_version is too old for) - AC_MSG_WARN(=== full symbol versioning support in this release of GCC.) - AC_MSG_WARN(=== You would need to upgrade your binutils to version) - AC_MSG_WARN(=== $libat_min_gnu_ld_version or later and rebuild GCC.) - if test $libat_gnu_ld_version -ge 21200 ; then - # Globbing fix is present, proper block support is not. - dnl AC_MSG_WARN([=== Dude, you are soooo close. Maybe we can fake it.]) - dnl enable_symvers=??? - AC_MSG_WARN([=== Symbol versioning will be disabled.]) - enable_symvers=no - else - # 2.11 or older. - AC_MSG_WARN([=== Symbol versioning will be disabled.]) - enable_symvers=no - fi - fi - elif test $enable_symvers = sun; then - : All interesting versions of Sun ld support sun style symbol versioning. - else - # just fail for now - AC_MSG_WARN([=== You have requested some kind of symbol versioning, but]) - AC_MSG_WARN([=== either you are not using a supported linker, or you are]) - AC_MSG_WARN([=== not building a shared libgcc_s (which is required).]) - AC_MSG_WARN([=== Symbol versioning will be disabled.]) - enable_symvers=no - fi -fi -if test $enable_symvers = gnu; then - AC_DEFINE(LIBFFI_GNU_SYMBOL_VERSIONING, 1, - [Define to 1 if GNU symbol versioning is used for libatomic.]) -fi - -AM_CONDITIONAL(LIBFFI_BUILD_VERSIONED_SHLIB, test $enable_symvers != no) -AM_CONDITIONAL(LIBFFI_BUILD_VERSIONED_SHLIB_GNU, test $enable_symvers = gnu) -AM_CONDITIONAL(LIBFFI_BUILD_VERSIONED_SHLIB_SUN, test $enable_symvers = sun) -AC_MSG_NOTICE(versioning on shared library symbols is $enable_symvers) -]) diff --git a/aclocal.m4 b/aclocal.m4 deleted file mode 100644 index 2cd8f42..0000000 --- a/aclocal.m4 +++ /dev/null @@ -1,2118 +0,0 @@ -# generated automatically by aclocal 1.16.1 -*- Autoconf -*- - -# Copyright (C) 1996-2018 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. - -m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, -[m4_warning([this file was generated for autoconf 2.69. -You have another version of autoconf. It may work, but is not guaranteed to. -If you have problems, you may need to regenerate the build system entirely. -To do so, use the procedure documented by the package, typically 'autoreconf'.])]) - -# ltdl.m4 - Configure ltdl for the target system. -*-Autoconf-*- -# -# Copyright (C) 1999-2008, 2011-2015 Free Software Foundation, Inc. -# Written by Thomas Tanner, 1999 -# -# 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 20 LTDL_INIT - -# LT_CONFIG_LTDL_DIR(DIRECTORY, [LTDL-MODE]) -# ------------------------------------------ -# DIRECTORY contains the libltdl sources. It is okay to call this -# function multiple times, as long as the same DIRECTORY is always given. -AC_DEFUN([LT_CONFIG_LTDL_DIR], -[AC_BEFORE([$0], [LTDL_INIT]) -_$0($*) -])# LT_CONFIG_LTDL_DIR - -# We break this out into a separate macro, so that we can call it safely -# internally without being caught accidentally by the sed scan in libtoolize. -m4_defun([_LT_CONFIG_LTDL_DIR], -[dnl remove trailing slashes -m4_pushdef([_ARG_DIR], m4_bpatsubst([$1], [/*$])) -m4_case(_LTDL_DIR, - [], [dnl only set lt_ltdl_dir if _ARG_DIR is not simply '.' - m4_if(_ARG_DIR, [.], - [], - [m4_define([_LTDL_DIR], _ARG_DIR) - _LT_SHELL_INIT([lt_ltdl_dir=']_ARG_DIR['])])], - [m4_if(_ARG_DIR, _LTDL_DIR, - [], - [m4_fatal([multiple libltdl directories: ']_LTDL_DIR[', ']_ARG_DIR['])])]) -m4_popdef([_ARG_DIR]) -])# _LT_CONFIG_LTDL_DIR - -# Initialise: -m4_define([_LTDL_DIR], []) - - -# _LT_BUILD_PREFIX -# ---------------- -# If Autoconf is new enough, expand to '$(top_build_prefix)', otherwise -# to '$(top_builddir)/'. -m4_define([_LT_BUILD_PREFIX], -[m4_ifdef([AC_AUTOCONF_VERSION], - [m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.62]), - [-1], [m4_ifdef([_AC_HAVE_TOP_BUILD_PREFIX], - [$(top_build_prefix)], - [$(top_builddir)/])], - [$(top_build_prefix)])], - [$(top_builddir)/])[]dnl -]) - - -# LTDL_CONVENIENCE -# ---------------- -# 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 -# AC_CONFIG_SUBDIRS is not called here. LIBLTDL will be prefixed with -# '$(top_build_prefix)' if available, otherwise 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_build_prefix, top_builddir, and top_srcdir appropriately -# in your Makefiles. -AC_DEFUN([LTDL_CONVENIENCE], -[AC_BEFORE([$0], [LTDL_INIT])dnl -dnl Although the argument is deprecated and no longer documented, -dnl LTDL_CONVENIENCE used to take a DIRECTORY orgument, if we have one -dnl here make sure it is the same as any other declaration of libltdl's -dnl location! This also ensures lt_ltdl_dir is set when configure.ac is -dnl not yet using an explicit LT_CONFIG_LTDL_DIR. -m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl -_$0() -])# LTDL_CONVENIENCE - -# AC_LIBLTDL_CONVENIENCE accepted a directory argument in older libtools, -# now we have LT_CONFIG_LTDL_DIR: -AU_DEFUN([AC_LIBLTDL_CONVENIENCE], -[_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) -_LTDL_CONVENIENCE]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBLTDL_CONVENIENCE], []) - - -# _LTDL_CONVENIENCE -# ----------------- -# Code shared by LTDL_CONVENIENCE and LTDL_INIT([convenience]). -m4_defun([_LTDL_CONVENIENCE], -[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='_LT_BUILD_PREFIX'"${lt_ltdl_dir+$lt_ltdl_dir/}libltdlc.la" -LTDLDEPS=$LIBLTDL -LTDLINCL='-I$(top_srcdir)'"${lt_ltdl_dir+/$lt_ltdl_dir}" - -AC_SUBST([LIBLTDL]) -AC_SUBST([LTDLDEPS]) -AC_SUBST([LTDLINCL]) - -# For backwards non-gettext consistent compatibility... -INCLTDL=$LTDLINCL -AC_SUBST([INCLTDL]) -])# _LTDL_CONVENIENCE - - -# LTDL_INSTALLABLE -# ---------------- -# 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 -# AC_CONFIG_SUBDIRS is not called from here. If an installed libltdl -# is not found, LIBLTDL will be prefixed with '$(top_build_prefix)' if -# available, otherwise 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_build_prefix, -# top_builddir, and top_srcdir appropriately in your Makefiles. -# In the future, this macro may have to be called after LT_INIT. -AC_DEFUN([LTDL_INSTALLABLE], -[AC_BEFORE([$0], [LTDL_INIT])dnl -dnl Although the argument is deprecated and no longer documented, -dnl LTDL_INSTALLABLE used to take a DIRECTORY orgument, if we have one -dnl here make sure it is the same as any other declaration of libltdl's -dnl location! This also ensures lt_ltdl_dir is set when configure.ac is -dnl not yet using an explicit LT_CONFIG_LTDL_DIR. -m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl -_$0() -])# LTDL_INSTALLABLE - -# AC_LIBLTDL_INSTALLABLE accepted a directory argument in older libtools, -# now we have LT_CONFIG_LTDL_DIR: -AU_DEFUN([AC_LIBLTDL_INSTALLABLE], -[_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) -_LTDL_INSTALLABLE]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBLTDL_INSTALLABLE], []) - - -# _LTDL_INSTALLABLE -# ----------------- -# Code shared by LTDL_INSTALLABLE and LTDL_INIT([installable]). -m4_defun([_LTDL_INSTALLABLE], -[if test -f "$prefix/lib/libltdl.la"; then - lt_save_LDFLAGS=$LDFLAGS - LDFLAGS="-L$prefix/lib $LDFLAGS" - AC_CHECK_LIB([ltdl], [lt_dlinit], [lt_lib_ltdl=yes]) - LDFLAGS=$lt_save_LDFLAGS - if test yes = "${lt_lib_ltdl-no}"; then - if test yes != "$enable_ltdl_install"; then - # Don't overwrite $prefix/lib/libltdl.la without --enable-ltdl-install - AC_MSG_WARN([not overwriting libltdl at $prefix, force with '--enable-ltdl-install']) - enable_ltdl_install=no - fi - elif test no = "$enable_ltdl_install"; then - AC_MSG_WARN([libltdl not installed, but installation disabled]) - fi -fi - -# If configure.ac declared an installable ltdl, and the user didn't override -# with --disable-ltdl-install, we will install the shipped libltdl. -case $enable_ltdl_install in - no) ac_configure_args="$ac_configure_args --enable-ltdl-install=no" - LIBLTDL=-lltdl - LTDLDEPS= - LTDLINCL= - ;; - *) enable_ltdl_install=yes - ac_configure_args="$ac_configure_args --enable-ltdl-install" - LIBLTDL='_LT_BUILD_PREFIX'"${lt_ltdl_dir+$lt_ltdl_dir/}libltdl.la" - LTDLDEPS=$LIBLTDL - LTDLINCL='-I$(top_srcdir)'"${lt_ltdl_dir+/$lt_ltdl_dir}" - ;; -esac - -AC_SUBST([LIBLTDL]) -AC_SUBST([LTDLDEPS]) -AC_SUBST([LTDLINCL]) - -# For backwards non-gettext consistent compatibility... -INCLTDL=$LTDLINCL -AC_SUBST([INCLTDL]) -])# LTDL_INSTALLABLE - - -# _LTDL_MODE_DISPATCH -# ------------------- -m4_define([_LTDL_MODE_DISPATCH], -[dnl If _LTDL_DIR is '.', then we are configuring libltdl itself: -m4_if(_LTDL_DIR, [], - [], - dnl if _LTDL_MODE was not set already, the default value is 'subproject': - [m4_case(m4_default(_LTDL_MODE, [subproject]), - [subproject], [AC_CONFIG_SUBDIRS(_LTDL_DIR) - _LT_SHELL_INIT([lt_dlopen_dir=$lt_ltdl_dir])], - [nonrecursive], [_LT_SHELL_INIT([lt_dlopen_dir=$lt_ltdl_dir; lt_libobj_prefix=$lt_ltdl_dir/])], - [recursive], [], - [m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])])dnl -dnl Be careful not to expand twice: -m4_define([$0], []) -])# _LTDL_MODE_DISPATCH - - -# _LT_LIBOBJ(MODULE_NAME) -# ----------------------- -# Like AC_LIBOBJ, except that MODULE_NAME goes into _LT_LIBOBJS instead -# of into LIBOBJS. -AC_DEFUN([_LT_LIBOBJ], [ - m4_pattern_allow([^_LT_LIBOBJS$]) - _LT_LIBOBJS="$_LT_LIBOBJS $1.$ac_objext" -])# _LT_LIBOBJS - - -# LTDL_INIT([OPTIONS]) -# -------------------- -# Clients of libltdl can use this macro to allow the installer to -# choose between a shipped copy of the ltdl sources or a preinstalled -# version of the library. If the shipped ltdl sources are not in a -# subdirectory named libltdl, the directory name must be given by -# LT_CONFIG_LTDL_DIR. -AC_DEFUN([LTDL_INIT], -[dnl Parse OPTIONS -_LT_SET_OPTIONS([$0], [$1]) - -dnl We need to keep our own list of libobjs separate from our parent project, -dnl and the easiest way to do that is redefine the AC_LIBOBJs macro while -dnl we look for our own LIBOBJs. -m4_pushdef([AC_LIBOBJ], m4_defn([_LT_LIBOBJ])) -m4_pushdef([AC_LIBSOURCES]) - -dnl If not otherwise defined, default to the 1.5.x compatible subproject mode: -m4_if(_LTDL_MODE, [], - [m4_define([_LTDL_MODE], m4_default([$2], [subproject])) - m4_if([-1], [m4_bregexp(_LTDL_MODE, [\(subproject\|\(non\)?recursive\)])], - [m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])]) - -AC_ARG_WITH([included_ltdl], - [AS_HELP_STRING([--with-included-ltdl], - [use the GNU ltdl sources included here])]) - -if test yes != "$with_included_ltdl"; then - # We are not being forced to use the included libltdl sources, so - # decide whether there is a useful installed version we can use. - AC_CHECK_HEADER([ltdl.h], - [AC_CHECK_DECL([lt_dlinterface_register], - [AC_CHECK_LIB([ltdl], [lt_dladvise_preload], - [with_included_ltdl=no], - [with_included_ltdl=yes])], - [with_included_ltdl=yes], - [AC_INCLUDES_DEFAULT - #include ])], - [with_included_ltdl=yes], - [AC_INCLUDES_DEFAULT] - ) -fi - -dnl If neither LT_CONFIG_LTDL_DIR, LTDL_CONVENIENCE nor LTDL_INSTALLABLE -dnl was called yet, then for old times' sake, we assume libltdl is in an -dnl eponymous directory: -AC_PROVIDE_IFELSE([LT_CONFIG_LTDL_DIR], [], [_LT_CONFIG_LTDL_DIR([libltdl])]) - -AC_ARG_WITH([ltdl_include], - [AS_HELP_STRING([--with-ltdl-include=DIR], - [use the ltdl headers installed in DIR])]) - -if test -n "$with_ltdl_include"; then - if test -f "$with_ltdl_include/ltdl.h"; then : - else - AC_MSG_ERROR([invalid ltdl include directory: '$with_ltdl_include']) - fi -else - with_ltdl_include=no -fi - -AC_ARG_WITH([ltdl_lib], - [AS_HELP_STRING([--with-ltdl-lib=DIR], - [use the libltdl.la installed in DIR])]) - -if test -n "$with_ltdl_lib"; then - if test -f "$with_ltdl_lib/libltdl.la"; then : - else - AC_MSG_ERROR([invalid ltdl library directory: '$with_ltdl_lib']) - fi -else - with_ltdl_lib=no -fi - -case ,$with_included_ltdl,$with_ltdl_include,$with_ltdl_lib, in - ,yes,no,no,) - m4_case(m4_default(_LTDL_TYPE, [convenience]), - [convenience], [_LTDL_CONVENIENCE], - [installable], [_LTDL_INSTALLABLE], - [m4_fatal([unknown libltdl build type: ]_LTDL_TYPE)]) - ;; - ,no,no,no,) - # If the included ltdl is not to be used, then use the - # preinstalled libltdl we found. - AC_DEFINE([HAVE_LTDL], [1], - [Define this if a modern libltdl is already installed]) - LIBLTDL=-lltdl - LTDLDEPS= - LTDLINCL= - ;; - ,no*,no,*) - AC_MSG_ERROR(['--with-ltdl-include' and '--with-ltdl-lib' options must be used together]) - ;; - *) with_included_ltdl=no - LIBLTDL="-L$with_ltdl_lib -lltdl" - LTDLDEPS= - LTDLINCL=-I$with_ltdl_include - ;; -esac -INCLTDL=$LTDLINCL - -# Report our decision... -AC_MSG_CHECKING([where to find libltdl headers]) -AC_MSG_RESULT([$LTDLINCL]) -AC_MSG_CHECKING([where to find libltdl library]) -AC_MSG_RESULT([$LIBLTDL]) - -_LTDL_SETUP - -dnl restore autoconf definition. -m4_popdef([AC_LIBOBJ]) -m4_popdef([AC_LIBSOURCES]) - -AC_CONFIG_COMMANDS_PRE([ - _ltdl_libobjs= - _ltdl_ltlibobjs= - if test -n "$_LT_LIBOBJS"; then - # Remove the extension. - _lt_sed_drop_objext='s/\.o$//;s/\.obj$//' - for i in `for i in $_LT_LIBOBJS; do echo "$i"; done | sed "$_lt_sed_drop_objext" | sort -u`; do - _ltdl_libobjs="$_ltdl_libobjs $lt_libobj_prefix$i.$ac_objext" - _ltdl_ltlibobjs="$_ltdl_ltlibobjs $lt_libobj_prefix$i.lo" - done - fi - AC_SUBST([ltdl_LIBOBJS], [$_ltdl_libobjs]) - AC_SUBST([ltdl_LTLIBOBJS], [$_ltdl_ltlibobjs]) -]) - -# Only expand once: -m4_define([LTDL_INIT]) -])# LTDL_INIT - -# Old names: -AU_DEFUN([AC_LIB_LTDL], [LTDL_INIT($@)]) -AU_DEFUN([AC_WITH_LTDL], [LTDL_INIT($@)]) -AU_DEFUN([LT_WITH_LTDL], [LTDL_INIT($@)]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIB_LTDL], []) -dnl AC_DEFUN([AC_WITH_LTDL], []) -dnl AC_DEFUN([LT_WITH_LTDL], []) - - -# _LTDL_SETUP -# ----------- -# Perform all the checks necessary for compilation of the ltdl objects -# -- including compiler checks and header checks. This is a public -# interface mainly for the benefit of libltdl's own configure.ac, most -# other users should call LTDL_INIT instead. -AC_DEFUN([_LTDL_SETUP], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([LT_SYS_MODULE_EXT])dnl -AC_REQUIRE([LT_SYS_MODULE_PATH])dnl -AC_REQUIRE([LT_SYS_DLSEARCH_PATH])dnl -AC_REQUIRE([LT_LIB_DLLOAD])dnl -AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl -AC_REQUIRE([LT_FUNC_DLSYM_USCORE])dnl -AC_REQUIRE([LT_SYS_DLOPEN_DEPLIBS])dnl -AC_REQUIRE([LT_FUNC_ARGZ])dnl - -m4_require([_LT_CHECK_OBJDIR])dnl -m4_require([_LT_HEADER_DLFCN])dnl -m4_require([_LT_CHECK_DLPREOPEN])dnl -m4_require([_LT_DECL_SED])dnl - -dnl Don't require this, or it will be expanded earlier than the code -dnl that sets the variables it relies on: -_LT_ENABLE_INSTALL - -dnl _LTDL_MODE specific code must be called at least once: -_LTDL_MODE_DISPATCH - -# In order that ltdl.c can compile, find out the first AC_CONFIG_HEADERS -# the user used. This is so that ltdl.h can pick up the parent projects -# config.h file, The first file in AC_CONFIG_HEADERS must contain the -# definitions required by ltdl.c. -# FIXME: Remove use of undocumented AC_LIST_HEADERS (2.59 compatibility). -AC_CONFIG_COMMANDS_PRE([dnl -m4_pattern_allow([^LT_CONFIG_H$])dnl -m4_ifset([AH_HEADER], - [LT_CONFIG_H=AH_HEADER], - [m4_ifset([AC_LIST_HEADERS], - [LT_CONFIG_H=`echo "AC_LIST_HEADERS" | $SED 's|^[[ ]]*||;s|[[ :]].*$||'`], - [])])]) -AC_SUBST([LT_CONFIG_H]) - -AC_CHECK_HEADERS([unistd.h dl.h sys/dl.h dld.h mach-o/dyld.h dirent.h], - [], [], [AC_INCLUDES_DEFAULT]) - -AC_CHECK_FUNCS([closedir opendir readdir], [], [AC_LIBOBJ([lt__dirent])]) -AC_CHECK_FUNCS([strlcat strlcpy], [], [AC_LIBOBJ([lt__strl])]) - -m4_pattern_allow([LT_LIBEXT])dnl -AC_DEFINE_UNQUOTED([LT_LIBEXT],["$libext"],[The archive extension]) - -name= -eval "lt_libprefix=\"$libname_spec\"" -m4_pattern_allow([LT_LIBPREFIX])dnl -AC_DEFINE_UNQUOTED([LT_LIBPREFIX],["$lt_libprefix"],[The archive prefix]) - -name=ltdl -eval "LTDLOPEN=\"$libname_spec\"" -AC_SUBST([LTDLOPEN]) -])# _LTDL_SETUP - - -# _LT_ENABLE_INSTALL -# ------------------ -m4_define([_LT_ENABLE_INSTALL], -[AC_ARG_ENABLE([ltdl-install], - [AS_HELP_STRING([--enable-ltdl-install], [install libltdl])]) - -case ,$enable_ltdl_install,$enable_ltdl_convenience in - *yes*) ;; - *) enable_ltdl_convenience=yes ;; -esac - -m4_ifdef([AM_CONDITIONAL], -[AM_CONDITIONAL(INSTALL_LTDL, test no != "${enable_ltdl_install-no}") - AM_CONDITIONAL(CONVENIENCE_LTDL, test no != "${enable_ltdl_convenience-no}")]) -])# _LT_ENABLE_INSTALL - - -# LT_SYS_DLOPEN_DEPLIBS -# --------------------- -AC_DEFUN([LT_SYS_DLOPEN_DEPLIBS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_CACHE_CHECK([whether deplibs are loaded by dlopen], - [lt_cv_sys_dlopen_deplibs], - [# PORTME does your system automatically load deplibs for dlopen? - # or its logical equivalent (e.g. shl_load for HP-UX < 11) - # For now, we just catch OSes we know something about -- in the - # future, we'll try test this programmatically. - lt_cv_sys_dlopen_deplibs=unknown - case $host_os in - aix3*|aix4.1.*|aix4.2.*) - # Unknown whether this is true for these versions of AIX, but - # we want this 'case' here to explicitly catch those versions. - lt_cv_sys_dlopen_deplibs=unknown - ;; - aix[[4-9]]*) - lt_cv_sys_dlopen_deplibs=yes - ;; - amigaos*) - case $host_cpu in - powerpc) - lt_cv_sys_dlopen_deplibs=no - ;; - esac - ;; - bitrig*) - lt_cv_sys_dlopen_deplibs=yes - ;; - darwin*) - # Assuming the user has installed a libdl from somewhere, this is true - # If you are looking for one http://www.opendarwin.org/projects/dlcompat - lt_cv_sys_dlopen_deplibs=yes - ;; - freebsd* | dragonfly*) - lt_cv_sys_dlopen_deplibs=yes - ;; - gnu* | linux* | k*bsd*-gnu | kopensolaris*-gnu) - # GNU and its variants, using gnu ld.so (Glibc) - lt_cv_sys_dlopen_deplibs=yes - ;; - hpux10*|hpux11*) - lt_cv_sys_dlopen_deplibs=yes - ;; - interix*) - lt_cv_sys_dlopen_deplibs=yes - ;; - irix[[12345]]*|irix6.[[01]]*) - # Catch all versions of IRIX before 6.2, and indicate that we don't - # know how it worked for any of those versions. - lt_cv_sys_dlopen_deplibs=unknown - ;; - irix*) - # The case above catches anything before 6.2, and it's known that - # at 6.2 and later dlopen does load deplibs. - lt_cv_sys_dlopen_deplibs=yes - ;; - netbsd*) - lt_cv_sys_dlopen_deplibs=yes - ;; - openbsd*) - lt_cv_sys_dlopen_deplibs=yes - ;; - osf[[1234]]*) - # dlopen did load deplibs (at least at 4.x), but until the 5.x series, - # it did *not* use an RPATH in a shared library to find objects the - # library depends on, so we explicitly say 'no'. - lt_cv_sys_dlopen_deplibs=no - ;; - osf5.0|osf5.0a|osf5.1) - # dlopen *does* load deplibs and with the right loader patch applied - # it even uses RPATH in a shared library to search for shared objects - # that the library depends on, but there's no easy way to know if that - # patch is installed. Since this is the case, all we can really - # say is unknown -- it depends on the patch being installed. If - # it is, this changes to 'yes'. Without it, it would be 'no'. - lt_cv_sys_dlopen_deplibs=unknown - ;; - osf*) - # the two cases above should catch all versions of osf <= 5.1. Read - # the comments above for what we know about them. - # At > 5.1, deplibs are loaded *and* any RPATH in a shared library - # is used to find them so we can finally say 'yes'. - lt_cv_sys_dlopen_deplibs=yes - ;; - qnx*) - lt_cv_sys_dlopen_deplibs=yes - ;; - solaris*) - lt_cv_sys_dlopen_deplibs=yes - ;; - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - libltdl_cv_sys_dlopen_deplibs=yes - ;; - esac - ]) -if test yes != "$lt_cv_sys_dlopen_deplibs"; then - AC_DEFINE([LTDL_DLOPEN_DEPLIBS], [1], - [Define if the OS needs help to load dependent libraries for dlopen().]) -fi -])# LT_SYS_DLOPEN_DEPLIBS - -# Old name: -AU_ALIAS([AC_LTDL_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], []) - - -# LT_SYS_MODULE_EXT -# ----------------- -AC_DEFUN([LT_SYS_MODULE_EXT], -[m4_require([_LT_SYS_DYNAMIC_LINKER])dnl -AC_CACHE_CHECK([what extension is used for runtime loadable modules], - [libltdl_cv_shlibext], -[ -module=yes -eval libltdl_cv_shlibext=$shrext_cmds -module=no -eval libltdl_cv_shrext=$shrext_cmds - ]) -if test -n "$libltdl_cv_shlibext"; then - m4_pattern_allow([LT_MODULE_EXT])dnl - AC_DEFINE_UNQUOTED([LT_MODULE_EXT], ["$libltdl_cv_shlibext"], - [Define to the extension used for runtime loadable modules, say, ".so".]) -fi -if test "$libltdl_cv_shrext" != "$libltdl_cv_shlibext"; then - m4_pattern_allow([LT_SHARED_EXT])dnl - AC_DEFINE_UNQUOTED([LT_SHARED_EXT], ["$libltdl_cv_shrext"], - [Define to the shared library suffix, say, ".dylib".]) -fi -if test -n "$shared_archive_member_spec"; then - m4_pattern_allow([LT_SHARED_LIB_MEMBER])dnl - AC_DEFINE_UNQUOTED([LT_SHARED_LIB_MEMBER], ["($shared_archive_member_spec.o)"], - [Define to the shared archive member specification, say "(shr.o)".]) -fi -])# LT_SYS_MODULE_EXT - -# Old name: -AU_ALIAS([AC_LTDL_SHLIBEXT], [LT_SYS_MODULE_EXT]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LTDL_SHLIBEXT], []) - - -# LT_SYS_MODULE_PATH -# ------------------ -AC_DEFUN([LT_SYS_MODULE_PATH], -[m4_require([_LT_SYS_DYNAMIC_LINKER])dnl -AC_CACHE_CHECK([what variable specifies run-time module search path], - [lt_cv_module_path_var], [lt_cv_module_path_var=$shlibpath_var]) -if test -n "$lt_cv_module_path_var"; then - m4_pattern_allow([LT_MODULE_PATH_VAR])dnl - AC_DEFINE_UNQUOTED([LT_MODULE_PATH_VAR], ["$lt_cv_module_path_var"], - [Define to the name of the environment variable that determines the run-time module search path.]) -fi -])# LT_SYS_MODULE_PATH - -# Old name: -AU_ALIAS([AC_LTDL_SHLIBPATH], [LT_SYS_MODULE_PATH]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LTDL_SHLIBPATH], []) - - -# LT_SYS_DLSEARCH_PATH -# -------------------- -AC_DEFUN([LT_SYS_DLSEARCH_PATH], -[m4_require([_LT_SYS_DYNAMIC_LINKER])dnl -AC_CACHE_CHECK([for the default library search path], - [lt_cv_sys_dlsearch_path], - [lt_cv_sys_dlsearch_path=$sys_lib_dlsearch_path_spec]) -if test -n "$lt_cv_sys_dlsearch_path"; then - sys_dlsearch_path= - for dir in $lt_cv_sys_dlsearch_path; do - if test -z "$sys_dlsearch_path"; then - sys_dlsearch_path=$dir - else - sys_dlsearch_path=$sys_dlsearch_path$PATH_SEPARATOR$dir - fi - done - m4_pattern_allow([LT_DLSEARCH_PATH])dnl - AC_DEFINE_UNQUOTED([LT_DLSEARCH_PATH], ["$sys_dlsearch_path"], - [Define to the system default library search path.]) -fi -])# LT_SYS_DLSEARCH_PATH - -# Old name: -AU_ALIAS([AC_LTDL_SYSSEARCHPATH], [LT_SYS_DLSEARCH_PATH]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LTDL_SYSSEARCHPATH], []) - - -# _LT_CHECK_DLPREOPEN -# ------------------- -m4_defun([_LT_CHECK_DLPREOPEN], -[m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -AC_CACHE_CHECK([whether libtool supports -dlopen/-dlpreopen], - [libltdl_cv_preloaded_symbols], - [if test -n "$lt_cv_sys_global_symbol_pipe"; then - libltdl_cv_preloaded_symbols=yes - else - libltdl_cv_preloaded_symbols=no - fi - ]) -if test yes = "$libltdl_cv_preloaded_symbols"; then - AC_DEFINE([HAVE_PRELOADED_SYMBOLS], [1], - [Define if libtool can extract symbol lists from object files.]) -fi -])# _LT_CHECK_DLPREOPEN - - -# LT_LIB_DLLOAD -# ------------- -AC_DEFUN([LT_LIB_DLLOAD], -[m4_pattern_allow([^LT_DLLOADERS$]) -LT_DLLOADERS= -AC_SUBST([LT_DLLOADERS]) - -AC_LANG_PUSH([C]) -lt_dlload_save_LIBS=$LIBS - -LIBADD_DLOPEN= -AC_SEARCH_LIBS([dlopen], [dl], - [AC_DEFINE([HAVE_LIBDL], [1], - [Define if you have the libdl library or equivalent.]) - if test "$ac_cv_search_dlopen" != "none required"; then - LIBADD_DLOPEN=-ldl - fi - libltdl_cv_lib_dl_dlopen=yes - LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"], - [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#if HAVE_DLFCN_H -# include -#endif - ]], [[dlopen(0, 0);]])], - [AC_DEFINE([HAVE_LIBDL], [1], - [Define if you have the libdl library or equivalent.]) - libltdl_cv_func_dlopen=yes - LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"], - [AC_CHECK_LIB([svld], [dlopen], - [AC_DEFINE([HAVE_LIBDL], [1], - [Define if you have the libdl library or equivalent.]) - LIBADD_DLOPEN=-lsvld libltdl_cv_func_dlopen=yes - LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"])])]) -if test yes = "$libltdl_cv_func_dlopen" || test yes = "$libltdl_cv_lib_dl_dlopen" -then - lt_save_LIBS=$LIBS - LIBS="$LIBS $LIBADD_DLOPEN" - AC_CHECK_FUNCS([dlerror]) - LIBS=$lt_save_LIBS -fi -AC_SUBST([LIBADD_DLOPEN]) - -LIBADD_SHL_LOAD= -AC_CHECK_FUNC([shl_load], - [AC_DEFINE([HAVE_SHL_LOAD], [1], - [Define if you have the shl_load function.]) - LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"], - [AC_CHECK_LIB([dld], [shl_load], - [AC_DEFINE([HAVE_SHL_LOAD], [1], - [Define if you have the shl_load function.]) - LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la" - LIBADD_SHL_LOAD=-ldld])]) -AC_SUBST([LIBADD_SHL_LOAD]) - -case $host_os in -darwin[[1567]].*) -# We only want this for pre-Mac OS X 10.4. - AC_CHECK_FUNC([_dyld_func_lookup], - [AC_DEFINE([HAVE_DYLD], [1], - [Define if you have the _dyld_func_lookup function.]) - LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dyld.la"]) - ;; -beos*) - LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}load_add_on.la" - ;; -cygwin* | mingw* | pw32*) - AC_CHECK_DECLS([cygwin_conv_path], [], [], [[#include ]]) - LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}loadlibrary.la" - ;; -esac - -AC_CHECK_LIB([dld], [dld_link], - [AC_DEFINE([HAVE_DLD], [1], - [Define if you have the GNU dld library.]) - LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dld_link.la"]) -AC_SUBST([LIBADD_DLD_LINK]) - -m4_pattern_allow([^LT_DLPREOPEN$]) -LT_DLPREOPEN= -if test -n "$LT_DLLOADERS" -then - for lt_loader in $LT_DLLOADERS; do - LT_DLPREOPEN="$LT_DLPREOPEN-dlpreopen $lt_loader " - done - AC_DEFINE([HAVE_LIBDLLOADER], [1], - [Define if libdlloader will be built on this platform]) -fi -AC_SUBST([LT_DLPREOPEN]) - -dnl This isn't used anymore, but set it for backwards compatibility -LIBADD_DL="$LIBADD_DLOPEN $LIBADD_SHL_LOAD" -AC_SUBST([LIBADD_DL]) - -LIBS=$lt_dlload_save_LIBS -AC_LANG_POP -])# LT_LIB_DLLOAD - -# Old name: -AU_ALIAS([AC_LTDL_DLLIB], [LT_LIB_DLLOAD]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LTDL_DLLIB], []) - - -# LT_SYS_SYMBOL_USCORE -# -------------------- -# does the compiler prefix global symbols with an underscore? -AC_DEFUN([LT_SYS_SYMBOL_USCORE], -[m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -AC_CACHE_CHECK([for _ prefix in compiled symbols], - [lt_cv_sys_symbol_underscore], - [lt_cv_sys_symbol_underscore=no - cat > conftest.$ac_ext <<_LT_EOF -void nm_test_func(){} -int main(){nm_test_func;return 0;} -_LT_EOF - if AC_TRY_EVAL(ac_compile); then - # Now try to grab the symbols. - ac_nlist=conftest.nm - if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist) && test -s "$ac_nlist"; then - # See whether the symbols have a leading underscore. - if grep '^. _nm_test_func' "$ac_nlist" >/dev/null; then - lt_cv_sys_symbol_underscore=yes - else - if grep '^. nm_test_func ' "$ac_nlist" >/dev/null; then - : - else - echo "configure: cannot find nm_test_func in $ac_nlist" >&AS_MESSAGE_LOG_FD - fi - fi - else - echo "configure: cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD - fi - else - echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD - cat conftest.c >&AS_MESSAGE_LOG_FD - fi - rm -rf conftest* - ]) - sys_symbol_underscore=$lt_cv_sys_symbol_underscore - AC_SUBST([sys_symbol_underscore]) -])# LT_SYS_SYMBOL_USCORE - -# Old name: -AU_ALIAS([AC_LTDL_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LTDL_SYMBOL_USCORE], []) - - -# LT_FUNC_DLSYM_USCORE -# -------------------- -AC_DEFUN([LT_FUNC_DLSYM_USCORE], -[AC_REQUIRE([_LT_COMPILER_PIC])dnl for lt_prog_compiler_wl -AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl for lt_cv_sys_symbol_underscore -AC_REQUIRE([LT_SYS_MODULE_EXT])dnl for libltdl_cv_shlibext -if test yes = "$lt_cv_sys_symbol_underscore"; then - if test yes = "$libltdl_cv_func_dlopen" || test yes = "$libltdl_cv_lib_dl_dlopen"; then - AC_CACHE_CHECK([whether we have to add an underscore for dlsym], - [libltdl_cv_need_uscore], - [libltdl_cv_need_uscore=unknown - dlsym_uscore_save_LIBS=$LIBS - LIBS="$LIBS $LIBADD_DLOPEN" - libname=conftmod # stay within 8.3 filename limits! - cat >$libname.$ac_ext <<_LT_EOF -[#line $LINENO "configure" -#include "confdefs.h" -/* When -fvisibility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif -int fnord () { return 42; }] -_LT_EOF - - # ltfn_module_cmds module_cmds - # Execute tilde-delimited MODULE_CMDS with environment primed for - # $module_cmds or $archive_cmds type content. - ltfn_module_cmds () - {( # subshell avoids polluting parent global environment - module_cmds_save_ifs=$IFS; IFS='~' - for cmd in @S|@1; do - IFS=$module_cmds_save_ifs - libobjs=$libname.$ac_objext; lib=$libname$libltdl_cv_shlibext - rpath=/not-exists; soname=$libname$libltdl_cv_shlibext; output_objdir=. - major=; versuffix=; verstring=; deplibs= - ECHO=echo; wl=$lt_prog_compiler_wl; allow_undefined_flag= - eval $cmd - done - IFS=$module_cmds_save_ifs - )} - - # Compile a loadable module using libtool macro expansion results. - $CC $pic_flag -c $libname.$ac_ext - ltfn_module_cmds "${module_cmds:-$archive_cmds}" - - # Try to fetch fnord with dlsym(). - libltdl_dlunknown=0; libltdl_dlnouscore=1; libltdl_dluscore=2 - cat >conftest.$ac_ext <<_LT_EOF -[#line $LINENO "configure" -#include "confdefs.h" -#if HAVE_DLFCN_H -#include -#endif -#include -#ifndef RTLD_GLOBAL -# ifdef DL_GLOBAL -# define RTLD_GLOBAL DL_GLOBAL -# else -# define RTLD_GLOBAL 0 -# endif -#endif -#ifndef RTLD_NOW -# ifdef DL_NOW -# define RTLD_NOW DL_NOW -# else -# define RTLD_NOW 0 -# endif -#endif -int main () { - void *handle = dlopen ("`pwd`/$libname$libltdl_cv_shlibext", RTLD_GLOBAL|RTLD_NOW); - int status = $libltdl_dlunknown; - if (handle) { - if (dlsym (handle, "fnord")) - status = $libltdl_dlnouscore; - else { - if (dlsym (handle, "_fnord")) - status = $libltdl_dluscore; - else - puts (dlerror ()); - } - dlclose (handle); - } else - puts (dlerror ()); - return status; -}] -_LT_EOF - if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then - (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null - libltdl_status=$? - case x$libltdl_status in - x$libltdl_dlnouscore) libltdl_cv_need_uscore=no ;; - x$libltdl_dluscore) libltdl_cv_need_uscore=yes ;; - x*) libltdl_cv_need_uscore=unknown ;; - esac - fi - rm -rf conftest* $libname* - LIBS=$dlsym_uscore_save_LIBS - ]) - fi -fi - -if test yes = "$libltdl_cv_need_uscore"; then - AC_DEFINE([NEED_USCORE], [1], - [Define if dlsym() requires a leading underscore in symbol names.]) -fi -])# LT_FUNC_DLSYM_USCORE - -# Old name: -AU_ALIAS([AC_LTDL_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LTDL_DLSYM_USCORE], []) - -# Copyright (C) 2002-2018 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. -# (This private macro should not be called outside this file.) -AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.16' -dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to -dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.16.1], [], - [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl -]) - -# _AM_AUTOCONF_VERSION(VERSION) -# ----------------------------- -# aclocal traces this macro to find the Autoconf version. -# This is a private macro too. Using m4_define simplifies -# the logic in aclocal, which can simply ignore this definition. -m4_define([_AM_AUTOCONF_VERSION], []) - -# AM_SET_CURRENT_AUTOMAKE_VERSION -# ------------------------------- -# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. -# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. -AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.16.1])dnl -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) - -# Figure out how to run the assembler. -*- Autoconf -*- - -# Copyright (C) 2001-2018 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_AS -# ---------- -AC_DEFUN([AM_PROG_AS], -[# By default we simply use the C compiler to build assembly code. -AC_REQUIRE([AC_PROG_CC]) -test "${CCAS+set}" = set || CCAS=$CC -test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS -AC_ARG_VAR([CCAS], [assembler compiler command (defaults to CC)]) -AC_ARG_VAR([CCASFLAGS], [assembler compiler flags (defaults to CFLAGS)]) -_AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl -]) - -# AM_AUX_DIR_EXPAND -*- Autoconf -*- - -# Copyright (C) 2001-2018 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], -[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -# Expand $ac_aux_dir to an absolute path. -am_aux_dir=`cd "$ac_aux_dir" && pwd` -]) - -# AM_CONDITIONAL -*- Autoconf -*- - -# Copyright (C) 1997-2018 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_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ([2.52])dnl - m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE])dnl -AC_SUBST([$1_FALSE])dnl -_AM_SUBST_NOTMAKE([$1_TRUE])dnl -_AM_SUBST_NOTMAKE([$1_FALSE])dnl -m4_define([_AM_COND_VALUE_$1], [$2])dnl -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-2018 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. - - -# 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", "OBJC", "OBJCXX", "UPC", or "GJC". -# 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 - -m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], - [$1], [CXX], [depcc="$CXX" am_compiler_list=], - [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], - [$1], [UPC], [depcc="$UPC" am_compiler_list=], - [$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". - rm -rf conftest.dir - 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 - am__universal=false - m4_case([$1], [CC], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac], - [CXX], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac]) - - 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 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # 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. Also, some Intel - # versions had trouble with output in subdirs. - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - 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 - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj 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], [dnl -AS_HELP_STRING( - [--enable-dependency-tracking], - [do not reject slow dependency extractors]) -AS_HELP_STRING( - [--disable-dependency-tracking], - [speeds up one-time build])]) -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' - am__nodep='_no' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH])dnl -_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl -AC_SUBST([am__nodep])dnl -_AM_SUBST_NOTMAKE([am__nodep])dnl -]) - -# Generate code to set up dependency tracking. -*- Autoconf -*- - -# Copyright (C) 1999-2018 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_OUTPUT_DEPENDENCY_COMMANDS -# ------------------------------ -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[{ - # Older Autoconf quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - # TODO: see whether this extra hack can be removed once we start - # requiring Autoconf 2.70 or later. - AS_CASE([$CONFIG_FILES], - [*\'*], [eval set x "$CONFIG_FILES"], - [*], [set x $CONFIG_FILES]) - shift - # Used to flag and report bootstrapping failures. - am_rc=0 - for am_mf - do - # Strip MF so we end up with the name of the file. - am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile which includes - # dependency-tracking related rules and includes. - # Grep'ing the whole file directly is not great: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ - || continue - am_dirpart=`AS_DIRNAME(["$am_mf"])` - am_filepart=`AS_BASENAME(["$am_mf"])` - AM_RUN_LOG([cd "$am_dirpart" \ - && sed -e '/# am--include-marker/d' "$am_filepart" \ - | $MAKE -f - am--depfiles]) || am_rc=$? - done - if test $am_rc -ne 0; then - AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments - for automatic dependency tracking. Try re-running configure with the - '--disable-dependency-tracking' option to at least be able to build - the package (albeit without support for automatic dependency tracking).]) - fi - AS_UNSET([am_dirpart]) - AS_UNSET([am_filepart]) - AS_UNSET([am_mf]) - AS_UNSET([am_rc]) - rm -f conftest-deps.mk -} -])# _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. -# This creates each '.Po' and '.Plo' makefile fragment that we'll 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" MAKE="${MAKE-make}"])]) - -# Do all the work for Automake. -*- Autoconf -*- - -# Copyright (C) 1996-2018 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 macro actually does too much. Some checks are only needed if -# your package does certain things. But this isn't really a big deal. - -dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. -m4_define([AC_PROG_CC], -m4_defn([AC_PROG_CC]) -[_AM_PROG_CC_C_O -]) - -# 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.65])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 -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) - fi -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], -[AC_DIAGNOSE([obsolete], - [$0: two- and three-arguments forms are deprecated.]) -m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl - AC_SUBST([PACKAGE], [$1])dnl - AC_SUBST([VERSION], [$2])], -[_AM_SET_OPTIONS([$1])dnl -dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. -m4_if( - m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), - [ok:ok],, - [m4_fatal([AC_INIT should be called with package and version arguments])])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]) -AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl -AC_REQUIRE([AC_PROG_MKDIR_P])dnl -# For better backward compatibility. To be removed once Automake 1.9.x -# dies out for good. For more background, see: -# -# -AC_SUBST([mkdir_p], ['$(MKDIR_P)']) -# We need awk for the "check" target (and possibly the TAP driver). 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])], - [m4_define([AC_PROG_CC], - m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl -AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES([CXX])], - [m4_define([AC_PROG_CXX], - m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl -AC_PROVIDE_IFELSE([AC_PROG_OBJC], - [_AM_DEPENDENCIES([OBJC])], - [m4_define([AC_PROG_OBJC], - m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl -AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], - [_AM_DEPENDENCIES([OBJCXX])], - [m4_define([AC_PROG_OBJCXX], - m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl -]) -AC_REQUIRE([AM_SILENT_RULES])dnl -dnl The testsuite driver may need to know about EXEEXT, so add the -dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This -dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. -AC_CONFIG_COMMANDS_PRE(dnl -[m4_provide_if([_AM_COMPILER_EXEEXT], - [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl - -# POSIX will say in a future version that running "rm -f" with no argument -# is OK; and we want to be able to make that assumption in our Makefile -# recipes. So use an aggressive probe to check that the usage we want is -# actually supported "in the wild" to an acceptable degree. -# See automake bug#10828. -# To make any issue more visible, cause the running configure to be aborted -# by default if the 'rm' program in use doesn't match our expectations; the -# user can still override this though. -if rm -f && rm -fr && rm -rf; then : OK; else - cat >&2 <<'END' -Oops! - -Your 'rm' program seems unable to run without file operands specified -on the command line, even when the '-f' option is present. This is contrary -to the behaviour of most rm programs out there, and not conforming with -the upcoming POSIX standard: - -Please tell bug-automake@gnu.org about your system, including the value -of your $PATH and any error possibly output before this message. This -can help us improve future automake versions. - -END - if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then - echo 'Configuration will proceed anyway, since you have set the' >&2 - echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 - echo >&2 - else - cat >&2 <<'END' -Aborting the configuration process, to ensure you take notice of the issue. - -You can download and install GNU coreutils to get an 'rm' implementation -that behaves properly: . - -If you want to complete the configuration process using your problematic -'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM -to "yes", and re-run configure. - -END - AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) - fi -fi -dnl The trailing newline in this macro's definition is deliberate, for -dnl backward compatibility and to allow trailing 'dnl'-style comments -dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. -]) - -dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not -dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further -dnl mangled by Autoconf and run in a shell conditional statement. -m4_define([_AC_COMPILER_EXEEXT], -m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) - -# 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_arg=$1 -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) - -# Copyright (C) 2001-2018 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 -if test x"${install_sh+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi -AC_SUBST([install_sh])]) - -# Copyright (C) 2003-2018 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. - -# 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])]) - -# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- -# From Jim Meyering - -# Copyright (C) 1996-2018 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_MAINTAINER_MODE([DEFAULT-MODE]) -# ---------------------------------- -# Control maintainer-specific portions of Makefiles. -# Default is to disable them, unless 'enable' is passed literally. -# For symmetry, 'disable' may be passed as well. Anyway, the user -# can override the default with the --enable/--disable switch. -AC_DEFUN([AM_MAINTAINER_MODE], -[m4_case(m4_default([$1], [disable]), - [enable], [m4_define([am_maintainer_other], [disable])], - [disable], [m4_define([am_maintainer_other], [enable])], - [m4_define([am_maintainer_other], [enable]) - m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) -AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) - dnl maintainer-mode's default is 'disable' unless 'enable' is passed - AC_ARG_ENABLE([maintainer-mode], - [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], - am_maintainer_other[ make rules and dependencies not useful - (and sometimes confusing) to the casual installer])], - [USE_MAINTAINER_MODE=$enableval], - [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) - AC_MSG_RESULT([$USE_MAINTAINER_MODE]) - AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) - MAINT=$MAINTAINER_MODE_TRUE - AC_SUBST([MAINT])dnl -] -) - -# Check to see how 'make' treats includes. -*- Autoconf -*- - -# Copyright (C) 2001-2018 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_MAKE_INCLUDE() -# ----------------- -# Check whether make has an 'include' directive that can support all -# the idioms we need for our automatic dependency tracking code. -AC_DEFUN([AM_MAKE_INCLUDE], -[AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive]) -cat > confinc.mk << 'END' -am__doit: - @echo this is the am__doit target >confinc.out -.PHONY: am__doit -END -am__include="#" -am__quote= -# BSD make does it like this. -echo '.include "confinc.mk" # ignored' > confmf.BSD -# Other make implementations (GNU, Solaris 10, AIX) do it like this. -echo 'include confinc.mk # ignored' > confmf.GNU -_am_result=no -for s in GNU BSD; do - AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out]) - AS_CASE([$?:`cat confinc.out 2>/dev/null`], - ['0:this is the am__doit target'], - [AS_CASE([$s], - [BSD], [am__include='.include' am__quote='"'], - [am__include='include' am__quote=''])]) - if test "$am__include" != "#"; then - _am_result="yes ($s style)" - break - fi -done -rm -f confinc.* confmf.* -AC_MSG_RESULT([${_am_result}]) -AC_SUBST([am__include])]) -AC_SUBST([am__quote])]) - -# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- - -# Copyright (C) 1997-2018 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_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 is modern enough. -# If it is, set am_missing_run to use it, otherwise, to nothing. -AC_DEFUN([AM_MISSING_HAS_RUN], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([missing])dnl -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --is-lightweight"; then - am_missing_run="$MISSING " -else - am_missing_run= - AC_MSG_WARN(['missing' script is too old or missing]) -fi -]) - -# Helper functions for option handling. -*- Autoconf -*- - -# Copyright (C) 2001-2018 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_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], -[m4_foreach_w([_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])]) - -# Copyright (C) 1999-2018 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_CC_C_O -# --------------- -# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC -# to automatically call this. -AC_DEFUN([_AM_PROG_CC_C_O], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([compile])dnl -AC_LANG_PUSH([C])dnl -AC_CACHE_CHECK( - [whether $CC understands -c and -o together], - [am_cv_prog_cc_c_o], - [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) - # Make sure it works both with $CC and with simple cc. - # Following AC_PROG_CC_C_O, we do the test twice because some - # compilers refuse to overwrite an existing .o file with -o, - # though they will create one. - am_cv_prog_cc_c_o=yes - for am_i in 1 2; do - if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ - && test -f conftest2.$ac_objext; then - : OK - else - am_cv_prog_cc_c_o=no - break - fi - done - rm -f core conftest* - unset am_i]) -if test "$am_cv_prog_cc_c_o" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -fi -AC_LANG_POP([C])]) - -# For backward compatibility. -AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) - -# Copyright (C) 2001-2018 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_RUN_LOG(COMMAND) -# ------------------- -# Run COMMAND, save the exit status in ac_status, and log it. -# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) -AC_DEFUN([AM_RUN_LOG], -[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD - ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - (exit $ac_status); }]) - -# Check to make sure that the build environment is sane. -*- Autoconf -*- - -# Copyright (C) 1996-2018 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_SANITY_CHECK -# --------------- -AC_DEFUN([AM_SANITY_CHECK], -[AC_MSG_CHECKING([whether build environment is sane]) -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[[\\\"\#\$\&\'\`$am_lf]]*) - AC_MSG_ERROR([unsafe absolute working directory name]);; -esac -case $srcdir in - *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) - AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; -esac - -# 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 ( - am_has_slept=no - for am_try in 1 2; do - echo "timestamp, slept: $am_has_slept" > conftest.file - 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 - 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 - if test "$[2]" = conftest.file || test $am_try -eq 2; then - break - fi - # Just in case. - sleep 1 - am_has_slept=yes - done - 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]) -# If we didn't sleep, we still need to ensure time stamps of config.status and -# generated files are strictly newer. -am_sleep_pid= -if grep 'slept: no' conftest.file >/dev/null 2>&1; then - ( sleep 1 ) & - am_sleep_pid=$! -fi -AC_CONFIG_COMMANDS_PRE( - [AC_MSG_CHECKING([that generated files are newer than configure]) - if test -n "$am_sleep_pid"; then - # Hide warnings about reused PIDs. - wait $am_sleep_pid 2>/dev/null - fi - AC_MSG_RESULT([done])]) -rm -f conftest.file -]) - -# Copyright (C) 2009-2018 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_SILENT_RULES([DEFAULT]) -# -------------------------- -# Enable less verbose build rules; with the default set to DEFAULT -# ("yes" being less verbose, "no" or empty being verbose). -AC_DEFUN([AM_SILENT_RULES], -[AC_ARG_ENABLE([silent-rules], [dnl -AS_HELP_STRING( - [--enable-silent-rules], - [less verbose build output (undo: "make V=1")]) -AS_HELP_STRING( - [--disable-silent-rules], - [verbose build output (undo: "make V=0")])dnl -]) -case $enable_silent_rules in @%:@ ((( - yes) AM_DEFAULT_VERBOSITY=0;; - no) AM_DEFAULT_VERBOSITY=1;; - *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; -esac -dnl -dnl A few 'make' implementations (e.g., NonStop OS and NextStep) -dnl do not support nested variable expansions. -dnl See automake bug#9928 and bug#10237. -am_make=${MAKE-make} -AC_CACHE_CHECK([whether $am_make supports nested variables], - [am_cv_make_support_nested_variables], - [if AS_ECHO([['TRUE=$(BAR$(V)) -BAR0=false -BAR1=true -V=1 -am__doit: - @$(TRUE) -.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then - am_cv_make_support_nested_variables=yes -else - am_cv_make_support_nested_variables=no -fi]) -if test $am_cv_make_support_nested_variables = yes; then - dnl Using '$V' instead of '$(V)' breaks IRIX make. - AM_V='$(V)' - AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' -else - AM_V=$AM_DEFAULT_VERBOSITY - AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY -fi -AC_SUBST([AM_V])dnl -AM_SUBST_NOTMAKE([AM_V])dnl -AC_SUBST([AM_DEFAULT_V])dnl -AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl -AC_SUBST([AM_DEFAULT_VERBOSITY])dnl -AM_BACKSLASH='\' -AC_SUBST([AM_BACKSLASH])dnl -_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl -]) - -# Copyright (C) 2001-2018 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="\$(install_sh) -c -s" -AC_SUBST([INSTALL_STRIP_PROGRAM])]) - -# Copyright (C) 2006-2018 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_SUBST_NOTMAKE(VARIABLE) -# --------------------------- -# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. -# This macro is traced by Automake. -AC_DEFUN([_AM_SUBST_NOTMAKE]) - -# AM_SUBST_NOTMAKE(VARIABLE) -# -------------------------- -# Public sister of _AM_SUBST_NOTMAKE. -AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) - -# Check how to create a tarball. -*- Autoconf -*- - -# Copyright (C) 2004-2018 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_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. Yes, it's still used -# in the wild :-( We should find a proper way to deprecate it ... -AC_SUBST([AMTAR], ['$${TAR-tar}']) - -# We'll loop over all known methods to create a tar archive until one works. -_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' - -m4_if([$1], [v7], - [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], - - [m4_case([$1], - [ustar], - [# The POSIX 1988 'ustar' format is defined with fixed-size fields. - # There is notably a 21 bits limit for the UID and the GID. In fact, - # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 - # and bug#13588). - am_max_uid=2097151 # 2^21 - 1 - am_max_gid=$am_max_uid - # The $UID and $GID variables are not portable, so we need to resort - # to the POSIX-mandated id(1) utility. Errors in the 'id' calls - # below are definitely unexpected, so allow the users to see them - # (that is, avoid stderr redirection). - am_uid=`id -u || echo unknown` - am_gid=`id -g || echo unknown` - AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) - if test $am_uid -le $am_max_uid; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - _am_tools=none - fi - AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) - if test $am_gid -le $am_max_gid; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - _am_tools=none - fi], - - [pax], - [], - - [m4_fatal([Unknown tar format])]) - - AC_MSG_CHECKING([how to create a $1 tar archive]) - - # Go ahead even if we have the value already cached. We do so because we - # need to set the values for the 'am__tar' and 'am__untar' variables. - _am_tools=${am_cv_prog_tar_$1-$_am_tools} - - 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 - -m4_include([m4/asmcfi.m4]) -m4_include([m4/ax_append_flag.m4]) -m4_include([m4/ax_cc_maxopt.m4]) -m4_include([m4/ax_cflags_warn_all.m4]) -m4_include([m4/ax_check_compile_flag.m4]) -m4_include([m4/ax_compiler_vendor.m4]) -m4_include([m4/ax_configure_args.m4]) -m4_include([m4/ax_enable_builddir.m4]) -m4_include([m4/ax_gcc_archflag.m4]) -m4_include([m4/ax_gcc_x86_cpuid.m4]) -m4_include([m4/ax_require_defined.m4]) -m4_include([m4/libtool.m4]) -m4_include([m4/ltoptions.m4]) -m4_include([m4/ltsugar.m4]) -m4_include([m4/ltversion.m4]) -m4_include([m4/lt~obsolete.m4]) -m4_include([acinclude.m4]) diff --git a/bundle.json b/bundle.json index b4214a7..53a0202 100644 --- a/bundle.json +++ b/bundle.json @@ -1,7 +1,7 @@ { "name": "@ohos/libffi", "description": "The libffi library provides a portable, high level programming interface to various calling conventions. This allows a programmer to call any function specified by a call interface description at run-time.", - "version": "3.1", + "version": "3.4.2", "license": "MIT", "publishAs": "code-segment", "segment": { @@ -23,7 +23,11 @@ }, "build": { "sub_component": [], - "inner_kits": [], + "inner_kits": [ + { + "name": "//third_party/libffi:ffi" + } + ], "test": [] } } diff --git a/compile b/compile deleted file mode 100755 index 99e5052..0000000 --- a/compile +++ /dev/null @@ -1,348 +0,0 @@ -#! /bin/sh -# Wrapper for compilers which do not understand '-c -o'. - -scriptversion=2018-03-07.03; # UTC - -# Copyright (C) 1999-2018 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, see . - -# 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 -# . - -nl=' -' - -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent tools from complaining about whitespace usage. -IFS=" "" $nl" - -file_conv= - -# func_file_conv build_file lazy -# Convert a $build file to $host form and store it in $file -# Currently only supports Windows hosts. If the determined conversion -# type is listed in (the comma separated) LAZY, no conversion will -# take place. -func_file_conv () -{ - file=$1 - case $file in - / | /[!/]*) # absolute file, and not a UNC file - if test -z "$file_conv"; then - # lazily determine how to convert abs files - case `uname -s` in - MINGW*) - file_conv=mingw - ;; - CYGWIN*) - file_conv=cygwin - ;; - *) - file_conv=wine - ;; - esac - fi - case $file_conv/,$2, in - *,$file_conv,*) - ;; - mingw/*) - file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` - ;; - cygwin/*) - file=`cygpath -m "$file" || echo "$file"` - ;; - wine/*) - file=`winepath -w "$file" || echo "$file"` - ;; - esac - ;; - esac -} - -# func_cl_dashL linkdir -# Make cl look for libraries in LINKDIR -func_cl_dashL () -{ - func_file_conv "$1" - if test -z "$lib_path"; then - lib_path=$file - else - lib_path="$lib_path;$file" - fi - linker_opts="$linker_opts -LIBPATH:$file" -} - -# func_cl_dashl library -# Do a library search-path lookup for cl -func_cl_dashl () -{ - lib=$1 - found=no - save_IFS=$IFS - IFS=';' - for dir in $lib_path $LIB - do - IFS=$save_IFS - if $shared && test -f "$dir/$lib.dll.lib"; then - found=yes - lib=$dir/$lib.dll.lib - break - fi - if test -f "$dir/$lib.lib"; then - found=yes - lib=$dir/$lib.lib - break - fi - if test -f "$dir/lib$lib.a"; then - found=yes - lib=$dir/lib$lib.a - break - fi - done - IFS=$save_IFS - - if test "$found" != yes; then - lib=$lib.lib - fi -} - -# func_cl_wrapper cl arg... -# Adjust compile command to suit cl -func_cl_wrapper () -{ - # Assume a capable shell - lib_path= - shared=: - linker_opts= - 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'. - eat=1 - case $2 in - *.o | *.[oO][bB][jJ]) - func_file_conv "$2" - set x "$@" -Fo"$file" - shift - ;; - *) - func_file_conv "$2" - set x "$@" -Fe"$file" - shift - ;; - esac - ;; - -I) - eat=1 - func_file_conv "$2" mingw - set x "$@" -I"$file" - shift - ;; - -I*) - func_file_conv "${1#-I}" mingw - set x "$@" -I"$file" - shift - ;; - -l) - eat=1 - func_cl_dashl "$2" - set x "$@" "$lib" - shift - ;; - -l*) - func_cl_dashl "${1#-l}" - set x "$@" "$lib" - shift - ;; - -L) - eat=1 - func_cl_dashL "$2" - ;; - -L*) - func_cl_dashL "${1#-L}" - ;; - -static) - shared=false - ;; - -Wl,*) - arg=${1#-Wl,} - save_ifs="$IFS"; IFS=',' - for flag in $arg; do - IFS="$save_ifs" - linker_opts="$linker_opts $flag" - done - IFS="$save_ifs" - ;; - -Xlinker) - eat=1 - linker_opts="$linker_opts $2" - ;; - -*) - set x "$@" "$1" - shift - ;; - *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) - func_file_conv "$1" - set x "$@" -Tp"$file" - shift - ;; - *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) - func_file_conv "$1" mingw - set x "$@" "$file" - shift - ;; - *) - set x "$@" "$1" - shift - ;; - esac - fi - shift - done - if test -n "$linker_opts"; then - linker_opts="-link$linker_opts" - fi - exec "$@" $linker_opts - exit 1 -} - -eat= - -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 $? - ;; - cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ - icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) - func_cl_wrapper "$@" # Doesn't return... - ;; -esac - -ofile= -cfile= - -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 's|^.*[\\/]||; s|^[a-zA-Z]:||; 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 - test "$cofile" = "$ofile" || mv "$cofile" "$ofile" -elif test -f "${cofile}bj"; then - test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" -fi - -rmdir "$lockdir" -exit $ret - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'before-save-hook 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC0" -# time-stamp-end: "; # UTC" -# End: diff --git a/config.guess b/config.guess deleted file mode 100644 index faa63aa..0000000 --- a/config.guess +++ /dev/null @@ -1,1466 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright 1992-2017 Free Software Foundation, Inc. - -timestamp='2017-05-11' - -# 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 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 . -# -# 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 Exception is an additional permission under section 7 -# of the GNU General Public License, version 3 ("GPLv3"). -# -# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. -# -# You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess -# -# Please send patches to . - - -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 1992-2017 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 "$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 ; set_cc_for_build= ;' - -# 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 - -case "${UNAME_SYSTEM}" in -Linux|GNU|GNU/*) - # If the system lacks a compiler, then just pick glibc. - # We could probably try harder. - LIBC=gnu - - eval $set_cc_for_build - cat <<-EOF > $dummy.c - #include - #if defined(__UCLIBC__) - LIBC=uclibc - #elif defined(__dietlibc__) - LIBC=dietlibc - #else - LIBC=gnu - #endif - EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` - ;; -esac - -# 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 tuples: *-*-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=`(uname -p 2>/dev/null || \ - /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 ;; - sh5el) machine=sh5le-unknown ;; - earmv*) - arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` - endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` - machine=${arch}${endian}-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) and ABI. - case "${UNAME_MACHINE_ARCH}" in - earm*) - os=netbsdelf - ;; - arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build - if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ELF__ - 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 - # Determine ABI tags. - case "${UNAME_MACHINE_ARCH}" in - earm*) - expr='s/^earmv[0-9]/-eabi/;s/eb$//' - abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` - ;; - 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/[-_].*//' | cut -d. -f1,2` - ;; - 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}${abi}" - exit ;; - *:Bitrig:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} - exit ;; - *:OpenBSD:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} - exit ;; - *:LibertyBSD:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE} - exit ;; - *:ekkoBSD:*:*) - echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} - exit ;; - *:SolidBSD:*:*) - echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} - exit ;; - macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd${UNAME_RELEASE} - exit ;; - *:MirBSD:*:*) - echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} - exit ;; - *:Sortix:*:*) - echo ${UNAME_MACHINE}-unknown-sortix - 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` - # Reset EXIT trap before exiting to avoid spurious non-zero exit code. - exitcode=$? - trap '' 0 - exit $exitcode ;; - 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 ;; - s390x:SunOS:*:*) - echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - 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:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux${UNAME_RELEASE} - exit ;; - i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - eval $set_cc_for_build - SUN_ARCH=i386 - # If there is a compiler, see if it is configured for 64-bit objects. - # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. - # This test works for both compilers. - if [ "$CC_FOR_BUILD" != no_compiler_found ]; then - if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - SUN_ARCH=x86_64 - fi - fi - echo ${SUN_ARCH}-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:*:[4567]) - 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/lslpp ] ; then - IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | - awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` - 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 - 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 -q __LP64__ - 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:*:*) - UNAME_PROCESSOR=`/usr/bin/uname -p` - case ${UNAME_PROCESSOR} in - amd64) - UNAME_PROCESSOR=x86_64 ;; - i386) - UNAME_PROCESSOR=i586 ;; - esac - echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit ;; - *:MINGW64*:*) - echo ${UNAME_MACHINE}-pc-mingw64 - exit ;; - *:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit ;; - *:MSYS*:*) - echo ${UNAME_MACHINE}-pc-msys - exit ;; - i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 - exit ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 - exit ;; - *:Interix*:*) - case ${UNAME_MACHINE} in - x86) - echo i586-pc-interix${UNAME_RELEASE} - exit ;; - authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix${UNAME_RELEASE} - exit ;; - IA64) - echo ia64-unknown-interix${UNAME_RELEASE} - exit ;; - esac ;; - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks - exit ;; - 8664:Windows_NT:*) - echo x86_64-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*:*:* | x86_64: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-${LIBC}`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 "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} - exit ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix - exit ;; - aarch64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - aarch64_be:Linux:*:*) - UNAME_MACHINE=aarch64_be - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - 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 -q ld.so.1 - if test "$?" = 0 ; then LIBC=gnulibc1 ; fi - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - arc:Linux:*:* | arceb:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - arm*:Linux:*:*) - eval $set_cc_for_build - if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_EABI__ - then - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - else - if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_PCS_VFP - then - echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi - else - echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf - fi - fi - exit ;; - avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - cris:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-${LIBC} - exit ;; - crisv32:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-${LIBC} - exit ;; - e2k:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - frv:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - hexagon:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - i*86:Linux:*:*) - echo ${UNAME_MACHINE}-pc-linux-${LIBC} - exit ;; - ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - k1om:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - mips:Linux:*:* | mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef ${UNAME_MACHINE} - #undef ${UNAME_MACHINE}el - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=${UNAME_MACHINE}el - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=${UNAME_MACHINE} - #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-${LIBC}"; exit; } - ;; - mips64el:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - openrisc*:Linux:*:*) - echo or1k-unknown-linux-${LIBC} - exit ;; - or32:Linux:*:* | or1k*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - padre:Linux:*:*) - echo sparc-unknown-linux-${LIBC} - exit ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-${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-${LIBC} ;; - PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; - *) echo hppa-unknown-linux-${LIBC} ;; - esac - exit ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-${LIBC} - exit ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-${LIBC} - exit ;; - ppc64le:Linux:*:*) - echo powerpc64le-unknown-linux-${LIBC} - exit ;; - ppcle:Linux:*:*) - echo powerpcle-unknown-linux-${LIBC} - exit ;; - riscv32:Linux:*:* | riscv64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux-${LIBC} - exit ;; - sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - tile*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-${LIBC} - exit ;; - x86_64:Linux:*:*) - echo ${UNAME_MACHINE}-pc-linux-${LIBC} - exit ;; - xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - 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.[02]*:*) - 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 i586. - # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configure will decide that - # this is a cross-build. - echo i586-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; } ;; - NCR*:*:4.2:* | MPRAS*:*:4.2:*) - OS_REL='.3' - 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; } - /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; 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.[02]*:*) - 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 ;; - BePC:Haiku:*:*) # Haiku running on Intel PC compatible. - echo i586-pc-haiku - exit ;; - x86_64:Haiku:*:*) - echo x86_64-unknown-haiku - 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 ;; - SX-7:SUPER-UX:*:*) - echo sx7-nec-superux${UNAME_RELEASE} - exit ;; - SX-8:SUPER-UX:*:*) - echo sx8-nec-superux${UNAME_RELEASE} - exit ;; - SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux${UNAME_RELEASE} - exit ;; - SX-ACE:SUPER-UX:*:*) - echo sxace-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 - eval $set_cc_for_build - if test "$UNAME_PROCESSOR" = unknown ; then - UNAME_PROCESSOR=powerpc - fi - if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then - if [ "$CC_FOR_BUILD" != no_compiler_found ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - case $UNAME_PROCESSOR in - i386) UNAME_PROCESSOR=x86_64 ;; - powerpc) UNAME_PROCESSOR=powerpc64 ;; - esac - fi - fi - elif test "$UNAME_PROCESSOR" = i386 ; then - # Avoid executing cc on OS X 10.9, as it ships with a stub - # that puts up a graphical alert prompting to install - # developer tools. Any system running Mac OS X 10.7 or - # later (Darwin 11 and later) is required to have a 64-bit - # processor. This is not true of the ARM version of Darwin - # that Apple uses in portable devices. - UNAME_PROCESSOR=x86_64 - fi - 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 ;; - NEO-*:NONSTOP_KERNEL:*:*) - echo neo-tandem-nsk${UNAME_RELEASE} - exit ;; - NSE-*:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk${UNAME_RELEASE} - exit ;; - NSR-*:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} - exit ;; - NSX-*:NONSTOP_KERNEL:*:*) - echo nsx-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 ;; - i*86:rdos:*:*) - echo ${UNAME_MACHINE}-pc-rdos - exit ;; - i*86:AROS:*:*) - echo ${UNAME_MACHINE}-pc-aros - exit ;; - x86_64:VMkernel:*:*) - echo ${UNAME_MACHINE}-unknown-esx - exit ;; - amd64:Isilon\ OneFS:*:*) - echo x86_64-unknown-onefs - exit ;; -esac - -cat >&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: diff --git a/config.sub b/config.sub deleted file mode 100644 index 40ea5df..0000000 --- a/config.sub +++ /dev/null @@ -1,1836 +0,0 @@ -#! /bin/sh -# Configuration validation subroutine script. -# Copyright 1992-2017 Free Software Foundation, Inc. - -timestamp='2017-04-02' - -# 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 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 . -# -# 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 Exception is an additional permission under section 7 -# of the GNU General Public License, version 3 ("GPLv3"). - - -# Please send patches to . -# -# 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. - -# You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub - -# 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 or 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 1992-2017 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-android* | linux-dietlibc | linux-newlib* | \ - linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ - knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ - kopensolaris*-gnu* | cloudabi*-eabi* | \ - storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - android-linux) - os=-linux-android - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown - ;; - *) - 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 | -microblaze*) - os= - basic_machine=$1 - ;; - -bluegene*) - os=-cnk - ;; - -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 - ;; - -sco6) - os=-sco5v6 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -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/'` - ;; - -sco5v6*) - # 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*178) - os=-lynxos178 - ;; - -lynx*5) - os=-lynxos5 - ;; - -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 \ - | aarch64 | aarch64_be \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | am33_2.0 \ - | arc | arceb \ - | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ - | avr | avr32 \ - | ba \ - | be32 | be64 \ - | bfin \ - | c4x | c8051 | clipper \ - | d10v | d30v | dlx | dsp16xx \ - | e2k | epiphany \ - | fido | fr30 | frv | ft32 \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | hexagon \ - | i370 | i860 | i960 | ia16 | ia64 \ - | ip2k | iq2000 \ - | k1om \ - | le32 | le64 \ - | lm32 \ - | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64octeon | mips64octeonel \ - | mips64orion | mips64orionel \ - | mips64r5900 | mips64r5900el \ - | mips64vr | mips64vrel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mips64vr5900 | mips64vr5900el \ - | mipsisa32 | mipsisa32el \ - | mipsisa32r2 | mipsisa32r2el \ - | mipsisa32r6 | mipsisa32r6el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64r6 | mipsisa64r6el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipsr5900 | mipsr5900el \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | moxie \ - | mt \ - | msp430 \ - | nds32 | nds32le | nds32be \ - | nios | nios2 | nios2eb | nios2el \ - | ns16k | ns32k \ - | open8 | or1k | or1knd | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle \ - | pru \ - | pyramid \ - | riscv32 | riscv64 \ - | rl78 | rx \ - | score \ - | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ - | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ - | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ - | spu \ - | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ - | ubicom32 \ - | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ - | visium \ - | wasm32 \ - | we32k \ - | x86 | xc16x | xstormy16 | xtensa \ - | z8k | z80) - basic_machine=$basic_machine-unknown - ;; - c54x) - basic_machine=tic54x-unknown - ;; - c55x) - basic_machine=tic55x-unknown - ;; - c6x) - basic_machine=tic6x-unknown - ;; - leon|leon[3-9]) - basic_machine=sparc-$basic_machine - ;; - m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) - basic_machine=$basic_machine-unknown - os=-none - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; - ms1) - basic_machine=mt-unknown - ;; - - strongarm | thumb | xscale) - basic_machine=arm-unknown - ;; - xgate) - basic_machine=$basic_machine-unknown - os=-none - ;; - xscaleeb) - basic_machine=armeb-unknown - ;; - - xscaleel) - basic_machine=armel-unknown - ;; - - # 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-* \ - | aarch64-* | aarch64_be-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* | avr32-* \ - | ba-* \ - | be32-* | be64-* \ - | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* \ - | c8051-* | clipper-* | craynv-* | cydra-* \ - | d10v-* | d30v-* | dlx-* \ - | e2k-* | elxsi-* \ - | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | hexagon-* \ - | i*86-* | i860-* | i960-* | ia16-* | ia64-* \ - | ip2k-* | iq2000-* \ - | k1om-* \ - | le32-* | le64-* \ - | lm32-* \ - | m32c-* | m32r-* | m32rle-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ - | microblaze-* | microblazeel-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64octeon-* | mips64octeonel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64r5900-* | mips64r5900el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* \ - | mips64vr5000-* | mips64vr5000el-* \ - | mips64vr5900-* | mips64vr5900el-* \ - | mipsisa32-* | mipsisa32el-* \ - | mipsisa32r2-* | mipsisa32r2el-* \ - | mipsisa32r6-* | mipsisa32r6el-* \ - | mipsisa64-* | mipsisa64el-* \ - | mipsisa64r2-* | mipsisa64r2el-* \ - | mipsisa64r6-* | mipsisa64r6el-* \ - | mipsisa64sb1-* | mipsisa64sb1el-* \ - | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipsr5900-* | mipsr5900el-* \ - | mipstx39-* | mipstx39el-* \ - | mmix-* \ - | mt-* \ - | msp430-* \ - | nds32-* | nds32le-* | nds32be-* \ - | nios-* | nios2-* | nios2eb-* | nios2el-* \ - | none-* | np1-* | ns16k-* | ns32k-* \ - | open8-* \ - | or1k*-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ - | pru-* \ - | pyramid-* \ - | riscv32-* | riscv64-* \ - | rl78-* | romp-* | rs6000-* | rx-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ - | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ - | tahoe-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ - | tile*-* \ - | tron-* \ - | ubicom32-* \ - | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ - | vax-* \ - | visium-* \ - | wasm32-* \ - | we32k-* \ - | x86-* | x86_64-* | xc16x-* | xps100-* \ - | xstormy16-* | xtensa*-* \ - | ymp-* \ - | z8k-* | z80-*) - ;; - # Recognize the basic CPU types without company name, with glob match. - xtensa*) - basic_machine=$basic_machine-unknown - ;; - # 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 - ;; - aros) - basic_machine=i386-pc - os=-aros - ;; - asmjs) - basic_machine=asmjs-unknown - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - blackfin) - basic_machine=bfin-unknown - os=-linux - ;; - blackfin-*) - basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - bluegene*) - basic_machine=powerpc-ibm - os=-cnk - ;; - c54x-*) - basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c55x-*) - basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c6x-*) - basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; - cegcc) - basic_machine=arm-unknown - os=-cegcc - ;; - 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 - ;; - cr16 | cr16-*) - basic_machine=cr16-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 - ;; - dicos) - basic_machine=i686-pc - os=-dicos - ;; - djgpp) - basic_machine=i586-pc - os=-msdosdjgpp - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - e500v[12]) - basic_machine=powerpc-unknown - os=$os"spe" - ;; - e500v[12]-*) - basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - os=$os"spe" - ;; - 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*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 - ;; - leon-*|leon[3-9]-*) - basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` - ;; - m68knommu) - basic_machine=m68k-unknown - os=-linux - ;; - m68knommu-*) - basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - microblaze*) - basic_machine=microblaze-xilinx - ;; - mingw64) - basic_machine=x86_64-pc - os=-mingw64 - ;; - mingw32) - basic_machine=i686-pc - os=-mingw32 - ;; - mingw32ce) - basic_machine=arm-unknown - os=-mingw32ce - ;; - 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 - ;; - moxiebox) - basic_machine=moxie-unknown - os=-moxiebox - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - ms1-*) - basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` - ;; - msys) - basic_machine=i686-pc - os=-msys - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - nacl) - basic_machine=le32-unknown - os=-nacl - ;; - 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 - ;; - neo-tandem) - basic_machine=neo-tandem - ;; - nse-tandem) - basic_machine=nse-tandem - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - nsx-tandem) - basic_machine=nsx-tandem - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - openrisc | openrisc-*) - basic_machine=or32-unknown - ;; - 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 - ;; - parisc) - basic_machine=hppa-unknown - os=-linux - ;; - parisc-*) - basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pc98) - basic_machine=i386-pc - ;; - pc98-*) - basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - 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 | ppcbe) basic_machine=powerpc-unknown - ;; - ppc-* | ppcbe-*) - basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle) - 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) - 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 - ;; - rdos | rdos64) - basic_machine=x86_64-pc - os=-rdos - ;; - rdos32) - basic_machine=i386-pc - os=-rdos - ;; - 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 - ;; - sde) - basic_machine=mipsisa32-sde - os=-elf - ;; - sei) - basic_machine=mips-sei - os=-seiux - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sh5el) - basic_machine=sh5le-unknown - ;; - 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 - ;; - strongarm-* | thumb-*) - basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - 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 - ;; - tile*) - basic_machine=$basic_machine-unknown - os=-linux-gnu - ;; - 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 - ;; - wasm32) - basic_machine=wasm32-unknown - ;; - 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 - ;; - xscale-* | xscalee[bl]-*) - basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` - ;; - ymp) - basic_machine=ymp-cray - os=-unicos - ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; - z80-*-coff) - basic_machine=z80-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 - ;; - sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) - basic_machine=sh-unknown - ;; - sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) - 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. - -auroraux) - os=-auroraux - ;; - -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* | -cnk* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ - | -sym* | -kopensolaris* | -plan9* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* | -cloudabi* | -sortix* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ - | -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* | -cegcc* | -glidix* \ - | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ - | -linux-newlib* | -linux-musl* | -linux-uclibc* \ - | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ - | -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* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ - | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox*) - # 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* | -haiku* \ - | -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 - ;; - -zvmoe) - os=-zvmoe - ;; - -dicos*) - os=-dicos - ;; - -nacl*) - ;; - -ios) - ;; - -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 - score-*) - os=-elf - ;; - spu-*) - os=-elf - ;; - *-acorn) - os=-riscix1.2 - ;; - arm*-rebel) - os=-linux - ;; - arm*-semi) - os=-aout - ;; - c4x-* | tic4x-*) - os=-coff - ;; - c8051-*) - os=-elf - ;; - hexagon-*) - os=-elf - ;; - tic54x-*) - os=-coff - ;; - tic55x-*) - os=-coff - ;; - tic6x-*) - 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 - ;; - m68*-cisco) - os=-aout - ;; - mep-*) - os=-elf - ;; - 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 - ;; - pru-*) - os=-elf - ;; - *-be) - os=-beos - ;; - *-haiku) - os=-haiku - ;; - *-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 - ;; - -cnk*|-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: diff --git a/configure b/configure deleted file mode 100755 index 823f5bc..0000000 --- a/configure +++ /dev/null @@ -1,21915 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for libffi 3.3. -# -# Report bugs to . -# -# -# Copyright (C) 1992-1996, 1998-2012 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 more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -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 -IFS=$as_save_IFS - - ;; -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 - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -# Use a proper internal environment variable to ensure we don't fall - # into an infinite loop, continuously re-executing ourselves. - if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then - _as_can_reexec=no; export _as_can_reexec; - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 - fi - # We don't want this to propagate to other subprocesses. - { _as_can_reexec=; unset _as_can_reexec;} -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : - -else - exitcode=1; echo positional parameters were not saved. -fi -test x\$exitcode = x0 || exit 1 -test -x / || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 - - test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ - || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null; then : - as_have_required=yes -else - as_have_required=no -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : - -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - as_found=: - case $as_dir in #( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : - CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : - break 2 -fi -fi - done;; - esac - as_found=false -done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } -IFS=$as_save_IFS - - - if test "x$CONFIG_SHELL" != x; then : - export CONFIG_SHELL - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -exit 255 -fi - - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." - else - $as_echo "$0: Please tell bug-autoconf@gnu.org and -$0: http://github.com/libffi/libffi/issues about your -$0: system, including any error possibly output before this -$0: message. Then install a modern shell, or manually run -$0: the script under such a shell if you do have one." - fi - exit 1 -fi -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; 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 - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# 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 - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # If we had to re-execute with $CONFIG_SHELL, we're ensured to have - # already done that, so ensure we don't try to do so again and fall - # in an infinite loop. This has already happened in practice. - _as_can_reexec=no; export _as_can_reexec - # 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 sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# 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'" - -SHELL=${CONFIG_SHELL-/bin/sh} - - -test -n "$DJDIR" || exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= - -# Identity of this package. -PACKAGE_NAME='libffi' -PACKAGE_TARNAME='libffi' -PACKAGE_VERSION='3.3' -PACKAGE_STRING='libffi 3.3' -PACKAGE_BUGREPORT='http://github.com/libffi/libffi/issues' -PACKAGE_URL='' - -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef STDC_HEADERS -# include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif -# include -#endif -#ifdef HAVE_STRINGS_H -# include -#endif -#ifdef HAVE_INTTYPES_H -# include -#endif -#ifdef HAVE_STDINT_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif" - -ac_subst_vars='am__EXEEXT_FALSE -am__EXEEXT_TRUE -LTLIBOBJS -LIBOBJS -LIBFFI_BUILD_VERSIONED_SHLIB_SUN_FALSE -LIBFFI_BUILD_VERSIONED_SHLIB_SUN_TRUE -LIBFFI_BUILD_VERSIONED_SHLIB_GNU_FALSE -LIBFFI_BUILD_VERSIONED_SHLIB_GNU_TRUE -LIBFFI_BUILD_VERSIONED_SHLIB_FALSE -LIBFFI_BUILD_VERSIONED_SHLIB_TRUE -OPT_LDFLAGS -SECTION_LDFLAGS -toolexeclibdir -toolexecdir -FFI_DEBUG_FALSE -FFI_DEBUG_TRUE -TARGET_OBJ -TARGETDIR -TARGET -BUILD_DOCS_FALSE -BUILD_DOCS_TRUE -FFI_EXEC_TRAMPOLINE_TABLE -FFI_EXEC_TRAMPOLINE_TABLE_FALSE -FFI_EXEC_TRAMPOLINE_TABLE_TRUE -sys_symbol_underscore -HAVE_LONG_DOUBLE_VARIANT -HAVE_LONG_DOUBLE -ALLOCA -AM_LTLDFLAGS -AM_RUNTESTFLAGS -TESTSUBDIR_FALSE -TESTSUBDIR_TRUE -MAINT -MAINTAINER_MODE_FALSE -MAINTAINER_MODE_TRUE -PRTDIAG -CXXCPP -CPP -LT_SYS_LIBRARY_PATH -OTOOL64 -OTOOL -LIPO -NMEDIT -DSYMUTIL -MANIFEST_TOOL -RANLIB -ac_ct_AR -AR -DLLTOOL -OBJDUMP -LN_S -NM -ac_ct_DUMPBIN -DUMPBIN -LD -FGREP -EGREP -GREP -SED -LIBTOOL -am__fastdepCCAS_FALSE -am__fastdepCCAS_TRUE -CCASDEPMODE -CCASFLAGS -CCAS -am__fastdepCXX_FALSE -am__fastdepCXX_TRUE -CXXDEPMODE -ac_ct_CXX -CXXFLAGS -CXX -am__fastdepCC_FALSE -am__fastdepCC_TRUE -CCDEPMODE -am__nodep -AMDEPBACKSLASH -AMDEP_FALSE -AMDEP_TRUE -am__include -DEPDIR -OBJEXT -EXEEXT -ac_ct_CC -CPPFLAGS -LDFLAGS -CFLAGS -CC -AM_BACKSLASH -AM_DEFAULT_VERBOSITY -AM_DEFAULT_V -AM_V -am__untar -am__tar -AMTAR -am__leading_dot -SET_MAKE -AWK -mkdir_p -MKDIR_P -INSTALL_STRIP_PROGRAM -STRIP -install_sh -MAKEINFO -AUTOHEADER -AUTOMAKE -AUTOCONF -ACLOCAL -VERSION -PACKAGE -CYGPATH_W -am__isrc -INSTALL_DATA -INSTALL_SCRIPT -INSTALL_PROGRAM -ax_enable_builddir_sed -target_os -target_vendor -target_cpu -target -host_os -host_vendor -host_cpu -host -build_os -build_vendor -build_cpu -build -target_alias -host_alias -build_alias -LIBS -ECHO_T -ECHO_N -ECHO_C -DEFS -mandir -localedir -libdir -psdir -pdfdir -dvidir -htmldir -infodir -docdir -oldincludedir -includedir -localstatedir -sharedstatedir -sysconfdir -datadir -datarootdir -libexecdir -sbindir -bindir -program_transform_name -prefix -exec_prefix -PACKAGE_URL -PACKAGE_BUGREPORT -PACKAGE_STRING -PACKAGE_VERSION -PACKAGE_TARNAME -PACKAGE_NAME -PATH_SEPARATOR -SHELL -am__quote' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -enable_builddir -enable_silent_rules -enable_dependency_tracking -enable_shared -enable_static -with_pic -enable_fast_install -with_aix_soname -with_gnu_ld -with_sysroot -enable_libtool_lock -enable_portable_binary -with_gcc_arch -enable_maintainer_mode -enable_pax_emutramp -enable_docs -enable_debug -enable_structs -enable_raw_api -enable_purify_safety -enable_multi_os_directory -enable_symvers -' - ac_precious_vars='build_alias -host_alias -target_alias -CCAS -CCASFLAGS -LT_SYS_LIBRARY_PATH -CPP -CPPFLAGS -CXXCPP' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# 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. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -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 - - case $ac_option in - *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *=) ac_optarg= ;; - *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -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) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$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 ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$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 ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - 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 ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$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_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=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 ;; - - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_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'` - as_fn_error $? "missing argument to $ac_option" -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir -do - eval ac_val=\$$ac_var - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" -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 - 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 - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error $? "working directory cannot be determined" -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error $? "pwd does not report name of working directory" - - -# 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 the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | - 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 - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# 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 libffi 3.3 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 \`..'] - -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] - --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] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/libffi] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_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] - --target=TARGET configure for building compilers for TARGET [HOST] -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of libffi 3.3:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --disable-builddir disable automatic build in subdir of sources - - --enable-silent-rules less verbose build output (undo: "make V=1") - --disable-silent-rules verbose build output (undo: "make V=0") - --enable-dependency-tracking - do not reject slow dependency extractors - --disable-dependency-tracking - speeds up one-time build - --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) - --enable-portable-binary - disable compiler optimizations that would produce - unportable binaries - --enable-maintainer-mode - enable make rules and dependencies not useful (and - sometimes confusing) to the casual installer - --enable-pax_emutramp enable pax emulated trampolines, for we can't use PROT_EXEC - --disable-docs Disable building of docs (default: no) - --enable-debug debugging mode - --disable-structs omit code for struct support - --disable-raw-api make the raw api unavailable - --enable-purify-safety purify-safe mode - --disable-multi-os-directory - disable use of gcc --print-multi-os-directory to change the library installation directory - --enable-symvers=STYLE enables symbol versioning of the shared library - [default=yes] - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use - both] - --with-aix-soname=aix|svr4|both - shared library versioning (aka "SONAME") variant to - provide on AIX, [default=aix]. - --with-gnu-ld assume the C compiler uses GNU ld [default=no] - --with-sysroot[=DIR] Search for dependent libraries within DIR (or the - compiler's sysroot if not specified). - --with-gcc-arch= use architecture for gcc -march/-mtune, - instead of guessing - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - CXX C++ compiler command - CXXFLAGS C++ compiler flags - CCAS assembler compiler command (defaults to CC) - CCASFLAGS assembler compiler flags (defaults to CFLAGS) - LT_SYS_LIBRARY_PATH - User-defined run-time library search path. - CPP C preprocessor - CXXCPP C++ preprocessor - -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 -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested 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 - else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -libffi configure 3.3 -generated by GNU Autoconf 2.69 - -Copyright (C) 2012 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 -fi - -## ------------------------ ## -## Autoconf initialization. ## -## ------------------------ ## - -# ac_fn_c_try_compile LINENO -# -------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_compile - -# ac_fn_cxx_try_compile LINENO -# ---------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_compile - -# ac_fn_c_try_link LINENO -# ----------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - test -x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_link - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_compile - -# ac_fn_c_try_cpp LINENO -# ---------------------- -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_cpp - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_run - -# ac_fn_c_check_func LINENO FUNC VAR -# ---------------------------------- -# Tests whether FUNC exists, setting the cache variable VAR accordingly -ac_fn_c_check_func () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case declares $2. - For example, HP-UX 11i declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $2 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $2 (); -/* 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_$2 || defined __stub___$2 -choke me -#endif - -int -main () -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_func - -# ac_fn_cxx_try_cpp LINENO -# ------------------------ -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_cpp - -# ac_fn_cxx_try_link LINENO -# ------------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - test -x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_link - -# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES -# -------------------------------------------- -# Tries to find the compile-time value of EXPR in a program that includes -# INCLUDES, setting VAR accordingly. Returns whether the value could be -# computed -ac_fn_c_compute_int () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) >= 0)]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_lo=0 ac_mid=0 - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) <= $ac_mid)]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_hi=$ac_mid; break -else - as_fn_arith $ac_mid + 1 && ac_lo=$as_val - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) < 0)]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_hi=-1 ac_mid=-1 - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) >= $ac_mid)]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_lo=$ac_mid; break -else - as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - ac_lo= ac_hi= -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do - as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) <= $ac_mid)]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_hi=$ac_mid -else - as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -done -case $ac_lo in #(( -?*) eval "$3=\$ac_lo"; ac_retval=0 ;; -'') ac_retval=1 ;; -esac - else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -static long int longval () { return $2; } -static unsigned long int ulongval () { return $2; } -#include -#include -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - return 1; - if (($2) < 0) - { - long int i = longval (); - if (i != ($2)) - return 1; - fprintf (f, "%ld", i); - } - else - { - unsigned long int i = ulongval (); - if (i != ($2)) - return 1; - fprintf (f, "%lu", i); - } - /* Do not output a trailing newline, as this causes \r\n confusion - on some platforms. */ - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - echo >>conftest.val; read $3 &5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} -( $as_echo "## ----------------------------------------------------- ## -## Report this to http://github.com/libffi/libffi/issues ## -## ----------------------------------------------------- ##" - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_mongrel - -# ac_fn_c_check_type LINENO TYPE VAR INCLUDES -# ------------------------------------------- -# Tests whether TYPE exists after having included INCLUDES, setting cache -# variable VAR accordingly. -ac_fn_c_check_type () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=no" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -if (sizeof ($2)) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -if (sizeof (($2))) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - eval "$3=yes" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_type -cat >config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by libffi $as_me 3.3, which was -generated by GNU Autoconf 2.69. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -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` -/usr/bin/hostinfo = `(/usr/bin/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=. - $as_echo "PATH: $as_dir" - done -IFS=$as_save_IFS - -} >&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_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=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; - 2) - as_fn_append 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 - as_fn_append ac_configure_args " '$ac_arg'" - ;; - esac - done -done -{ ac_configure_args0=; unset ac_configure_args0;} -{ ac_configure_args1=; unset 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: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - $as_echo "## ---------------- ## -## Cache variables. ## -## ---------------- ##" - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - $as_echo "## ----------------- ## -## Output variables. ## -## ----------------- ##" - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## -## File substitutions. ## -## ------------------- ##" - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - $as_echo "## ----------- ## -## confdefs.h. ## -## ----------- ##" - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -$as_echo "/* confdefs.h */" > 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 - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE -if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac -elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site -else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site -fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" -do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "failed to load site script $ac_site_file -See \`config.log' for more details" "$LINENO" 5; } - 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. DJGPP emulates it as a regular file. - if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_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 $ac_precious_vars; 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,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_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 - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_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. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -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 - - -ac_config_headers="$ac_config_headers fficonfig.h" - - -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 - as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && - as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 -$as_echo_n "checking target system type... " >&6; } -if ${ac_cv_target+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$target_alias" = x; then - ac_cv_target=$ac_cv_host -else - ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 -$as_echo "$ac_cv_target" >&6; } -case $ac_cv_target in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; -esac -target=$ac_cv_target -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_target -shift -target_cpu=$1 -target_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -target_os=$* -IFS=$ac_save_IFS -case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac - - -# The aliases save the names the user supplied, while $host etc. -# will get canonicalized. -test -n "$target_alias" && - test "$program_prefix$program_suffix$program_transform_name" = \ - NONENONEs,x,x, && - program_prefix=${target_alias}- - -target_alias=${target_alias-$host_alias} - -case "${host}" in - frv*-elf) - LDFLAGS=`echo $LDFLAGS | sed "s/\-B^ *libgloss\/frv\///"`\ -B`pwd`/../libgloss/frv/ - ;; -esac - - - # [$]@ is unusable in 2.60+ but earlier autoconf had no ac_configure_args - if test "${ac_configure_args+set}" != "set" ; then - ac_configure_args= - for ac_arg in ${1+"$@"}; do - ac_configure_args="$ac_configure_args '$ac_arg'" - done - fi - -# Expand $ac_aux_dir to an absolute path. -am_aux_dir=`cd "$ac_aux_dir" && pwd` - - -ax_enable_builddir="." -# Check whether --enable-builddir was given. -if test "${enable_builddir+set}" = set; then : - enableval=$enable_builddir; ax_enable_builddir="$enableval" -else - ax_enable_builddir="auto" -fi - -if test ".$ac_srcdir_defaulted" != ".no" ; then -if test ".$srcdir" = ".." ; then - if test -f config.status ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: toplevel srcdir already configured... skipping subdir build" >&5 -$as_echo "$as_me: toplevel srcdir already configured... skipping subdir build" >&6;} - else - test ".$ax_enable_builddir" = "." && ax_enable_builddir="." - test ".$ax_enable_builddir" = ".no" && ax_enable_builddir="." - test ".$TARGET" = "." && TARGET="$target" - test ".$ax_enable_builddir" = ".auto" && ax_enable_builddir="$TARGET" - if test ".$ax_enable_builddir" != ".." ; then # we know where to go and - as_dir=$ax_enable_builddir; as_fn_mkdir_p - echo __.$ax_enable_builddir.__ > $ax_enable_builddir/conftest.tmp - cd $ax_enable_builddir - if grep __.$ax_enable_builddir.__ conftest.tmp >/dev/null 2>/dev/null ; then - rm conftest.tmp - { $as_echo "$as_me:${as_lineno-$LINENO}: result: continue configure in default builddir \"./$ax_enable_builddir\"" >&5 -$as_echo "continue configure in default builddir \"./$ax_enable_builddir\"" >&6; } - else - as_fn_error $? "could not change to default builddir \"./$ax_enable_builddir\"" "$LINENO" 5 - fi - srcdir=`echo "$ax_enable_builddir" | - sed -e 's,^\./,,;s,[^/]$,&/,;s,[^/]*/,../,g;s,[/]$,,;'` - # going to restart from subdirectory location - test -f $srcdir/config.log && mv $srcdir/config.log . - test -f $srcdir/confdefs.h && mv $srcdir/confdefs.h . - test -f $srcdir/conftest.log && mv $srcdir/conftest.log . - test -f $srcdir/$cache_file && mv $srcdir/$cache_file . - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ....exec $SHELL $srcdir/$0 \"--srcdir=$srcdir\" \"--enable-builddir=$ax_enable_builddir\" ${1+\"$@\"}" >&5 -$as_echo "....exec $SHELL $srcdir/$0 \"--srcdir=$srcdir\" \"--enable-builddir=$ax_enable_builddir\" ${1+\"$@\"}" >&6; } - case "$0" in # restart - [\\/]* | ?:[\\/]*) # Absolute name - eval $SHELL "'$0'" "'--srcdir=$srcdir'" "'--enable-builddir=$ax_enable_builddir'" $ac_configure_args ;; - *) eval $SHELL "'$srcdir/$0'" "'--srcdir=$srcdir'" "'--enable-builddir=$ax_enable_builddir'" $ac_configure_args ;; - esac ; exit $? - fi - fi -fi fi -test ".$ax_enable_builddir" = ".auto" && ax_enable_builddir="." -# Extract the first word of "gsed sed", so it can be a program name with args. -set dummy gsed sed; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_ax_enable_builddir_sed+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $ax_enable_builddir_sed in - [\\/]* | ?:[\\/]*) - ac_cv_path_ax_enable_builddir_sed="$ax_enable_builddir_sed" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_ax_enable_builddir_sed="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_ax_enable_builddir_sed" && ac_cv_path_ax_enable_builddir_sed="sed" - ;; -esac -fi -ax_enable_builddir_sed=$ac_cv_path_ax_enable_builddir_sed -if test -n "$ax_enable_builddir_sed"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_enable_builddir_sed" >&5 -$as_echo "$ax_enable_builddir_sed" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -ax_enable_builddir_auxdir="$am_aux_dir" -ac_config_commands="$ac_config_commands buildir" - - -am__api_version='1.16' - -# 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. -# Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&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_fn_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 - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - - done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - -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. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$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' - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 -$as_echo_n "checking whether build environment is sane... " >&6; } -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[\\\"\#\$\&\'\`$am_lf]*) - as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; -esac -case $srcdir in - *[\\\"\#\$\&\'\`$am_lf\ \ ]*) - as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; -esac - -# 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 ( - am_has_slept=no - for am_try in 1 2; do - echo "timestamp, slept: $am_has_slept" > conftest.file - 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 - 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". - as_fn_error $? "ls -t appears to fail. Make sure there is not a broken - alias in your environment" "$LINENO" 5 - fi - if test "$2" = conftest.file || test $am_try -eq 2; then - break - fi - # Just in case. - sleep 1 - am_has_slept=yes - done - test "$2" = conftest.file - ) -then - # Ok. - : -else - as_fn_error $? "newly created file is older than distributed files! -Check your system clock" "$LINENO" 5 -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -# If we didn't sleep, we still need to ensure time stamps of config.status and -# generated files are strictly newer. -am_sleep_pid= -if grep 'slept: no' conftest.file >/dev/null 2>&1; then - ( sleep 1 ) & - am_sleep_pid=$! -fi - -rm -f conftest.file - -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 $. -# By default was `s,x,x', remove it if useless. -ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` - -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --is-lightweight"; then - am_missing_run="$MISSING " -else - am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 -$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} -fi - -if test x"${install_sh+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi - -# 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 -$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } -if test -z "$MKDIR_P"; then - if ${ac_cv_path_mkdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in mkdir gmkdir; do - for ac_exec_ext in '' $ac_executable_extensions; do - as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue - case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( - 'mkdir (GNU coreutils) '* | \ - 'mkdir (coreutils) '* | \ - 'mkdir (fileutils) '4.1*) - ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext - break 3;; - esac - done - done - done -IFS=$as_save_IFS - -fi - - test -d ./--version && rmdir ./--version - if test "${ac_cv_path_mkdir+set}" = set; then - MKDIR_P="$ac_cv_path_mkdir -p" - else - # As a last resort, use the slow shell script. Don't cache a - # value for MKDIR_P within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - MKDIR_P="$ac_install_sh -d" - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 -$as_echo "$MKDIR_P" >&6; } - -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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AWK+:} false; then : - $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AWK="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AWK" && break -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } -set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat >conftest.make <<\_ACEOF -SHELL = /bin/sh -all: - @echo '@@@%%%=$(MAKE)=@@@%%%' -_ACEOF -# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. -case `${MAKE-make} -f conftest.make 2>/dev/null` in - *@@@%%%=?*=@@@%%%*) - eval ac_cv_prog_make_${ac_make}_set=yes;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; -esac -rm -f conftest.make -fi -if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - SET_MAKE= -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 - -# Check whether --enable-silent-rules was given. -if test "${enable_silent_rules+set}" = set; then : - enableval=$enable_silent_rules; -fi - -case $enable_silent_rules in # ((( - yes) AM_DEFAULT_VERBOSITY=0;; - no) AM_DEFAULT_VERBOSITY=1;; - *) AM_DEFAULT_VERBOSITY=1;; -esac -am_make=${MAKE-make} -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 -$as_echo_n "checking whether $am_make supports nested variables... " >&6; } -if ${am_cv_make_support_nested_variables+:} false; then : - $as_echo_n "(cached) " >&6 -else - if $as_echo 'TRUE=$(BAR$(V)) -BAR0=false -BAR1=true -V=1 -am__doit: - @$(TRUE) -.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then - am_cv_make_support_nested_variables=yes -else - am_cv_make_support_nested_variables=no -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 -$as_echo "$am_cv_make_support_nested_variables" >&6; } -if test $am_cv_make_support_nested_variables = yes; then - AM_V='$(V)' - AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' -else - AM_V=$AM_DEFAULT_VERBOSITY - AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY -fi -AM_BACKSLASH='\' - -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - am__isrc=' -I$(srcdir)' - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 - fi -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='libffi' - VERSION='3.3' - - -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"} - -# For better backward compatibility. To be removed once Automake 1.9.x -# dies out for good. For more background, see: -# -# -mkdir_p='$(MKDIR_P)' - -# We need awk for the "check" target (and possibly the TAP driver). The -# system "awk" is bad on some platforms. -# Always define AMTAR for backward compatibility. Yes, it's still used -# in the wild :-( We should find a proper way to deprecate it ... -AMTAR='$${TAR-tar}' - - -# We'll loop over all known methods to create a tar archive until one works. -_am_tools='gnutar pax cpio none' - -am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' - - - - - - -# POSIX will say in a future version that running "rm -f" with no argument -# is OK; and we want to be able to make that assumption in our Makefile -# recipes. So use an aggressive probe to check that the usage we want is -# actually supported "in the wild" to an acceptable degree. -# See automake bug#10828. -# To make any issue more visible, cause the running configure to be aborted -# by default if the 'rm' program in use doesn't match our expectations; the -# user can still override this though. -if rm -f && rm -fr && rm -rf; then : OK; else - cat >&2 <<'END' -Oops! - -Your 'rm' program seems unable to run without file operands specified -on the command line, even when the '-f' option is present. This is contrary -to the behaviour of most rm programs out there, and not conforming with -the upcoming POSIX standard: - -Please tell bug-automake@gnu.org about your system, including the value -of your $PATH and any error possibly output before this message. This -can help us improve future automake versions. - -END - if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then - echo 'Configuration will proceed anyway, since you have set the' >&2 - echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 - echo >&2 - else - cat >&2 <<'END' -Aborting the configuration process, to ensure you take notice of the issue. - -You can download and install GNU coreutils to get an 'rm' implementation -that behaves properly: . - -If you want to complete the configuration process using your problematic -'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM -to "yes", and re-run configure. - -END - as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 - fi -fi - - -# The same as in boehm-gc and libstdc++. Have to borrow it from there. -# We must force CC to /not/ be precious variables; otherwise -# the wrong, non-multilib-adjusted value will be used in multilibs. -# As a side effect, we have to subst CFLAGS ourselves. -# Also save and restore CFLAGS, since AC_PROG_CC will come up with -# defaults of its own if none are provided. - - - -save_CFLAGS=$CFLAGS -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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&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_fn_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" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM 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. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { { ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else - ac_file='' -fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "C compiler cannot create executables -See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } -ac_exeext=$ac_cv_exeext - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; 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 | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -FILE *f = fopen ("conftest.out", "w"); - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -ac_clean_files="$ac_clean_files conftest.out" -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -if test "$cross_compiling" != yes; then - { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details" "$LINENO" 5; } - fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - -rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of object files: cannot compile -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -struct stat; -/* 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 -std 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 -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 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 -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -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 - -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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 -$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } -if ${am_cv_prog_cc_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF - # Make sure it works both with $CC and with simple cc. - # Following AC_PROG_CC_C_O, we do the test twice because some - # compilers refuse to overwrite an existing .o file with -o, - # though they will create one. - am_cv_prog_cc_c_o=yes - for am_i in 1 2; do - if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 - ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } \ - && test -f conftest2.$ac_objext; then - : OK - else - am_cv_prog_cc_c_o=no - break - fi - done - rm -f core conftest* - unset am_i -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 -$as_echo "$am_cv_prog_cc_c_o" >&6; } -if test "$am_cv_prog_cc_c_o" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -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 - -DEPDIR="${am__leading_dot}deps" - -ac_config_commands="$ac_config_commands depfiles" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 -$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; } -cat > confinc.mk << 'END' -am__doit: - @echo this is the am__doit target >confinc.out -.PHONY: am__doit -END -am__include="#" -am__quote= -# BSD make does it like this. -echo '.include "confinc.mk" # ignored' > confmf.BSD -# Other make implementations (GNU, Solaris 10, AIX) do it like this. -echo 'include confinc.mk # ignored' > confmf.GNU -_am_result=no -for s in GNU BSD; do - { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 - (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - case $?:`cat confinc.out 2>/dev/null` in #( - '0:this is the am__doit target') : - case $s in #( - BSD) : - am__include='.include' am__quote='"' ;; #( - *) : - am__include='include' am__quote='' ;; -esac ;; #( - *) : - ;; -esac - if test "$am__include" != "#"; then - _am_result="yes ($s style)" - break - fi -done -rm -f confinc.* confmf.* -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 -$as_echo "${_am_result}" >&6; } - -# Check whether --enable-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='\' - am__nodep='_no' -fi - if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' -else - AMDEP_TRUE='#' - AMDEP_FALSE= -fi - - - -depcc="$CC" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&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". - rm -rf conftest.dir - 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 - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - 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 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # 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. Also, some Intel - # versions had trouble with output in subdirs. - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - 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 - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$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=cpp -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 -z "$CXX"; then - if test -n "$CCC"; then - CXX=$CCC - else - if test -n "$ac_tool_prefix"; then - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CXX+:} false; then : - $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CXX=$ac_cv_prog_CXX -if test -n "$CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 -$as_echo "$CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CXX" && break - done -fi -if test -z "$CXX"; then - ac_ct_CXX=$CXX - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CXX+:} false; then : - $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CXX="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CXX=$ac_cv_prog_ac_ct_CXX -if test -n "$ac_ct_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 -$as_echo "$ac_ct_CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CXX" && break -done - - if test "x$ac_ct_CXX" = x; then - CXX="g++" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CXX=$ac_ct_CXX - fi -fi - - fi -fi -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 -$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } -if ${ac_cv_cxx_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_cxx_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 -$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GXX=yes -else - GXX= -fi -ac_test_CXXFLAGS=${CXXFLAGS+set} -ac_save_CXXFLAGS=$CXXFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 -$as_echo_n "checking whether $CXX accepts -g... " >&6; } -if ${ac_cv_prog_cxx_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_cxx_werror_flag=$ac_cxx_werror_flag - ac_cxx_werror_flag=yes - ac_cv_prog_cxx_g=no - CXXFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_cv_prog_cxx_g=yes -else - CXXFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - -else - ac_cxx_werror_flag=$ac_save_cxx_werror_flag - CXXFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_cv_prog_cxx_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cxx_werror_flag=$ac_save_cxx_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 -$as_echo "$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 -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="$CXX" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CXX_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&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". - rm -rf conftest.dir - 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 - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - 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 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # 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. Also, some Intel - # versions had trouble with output in subdirs. - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - 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 - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 -$as_echo "$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 - - -CFLAGS=$save_CFLAGS - - - - - -# By default we simply use the C compiler to build assembly code. - -test "${CCAS+set}" = set || CCAS=$CC -test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS - - - -depcc="$CCAS" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CCAS_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&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". - rm -rf conftest.dir - 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_CCAS_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - am__universal=false - - - 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 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # 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. Also, some Intel - # versions had trouble with output in subdirs. - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - 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 - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj 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_CCAS_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CCAS_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CCAS_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CCAS_dependencies_compiler_type" >&6; } -CCASDEPMODE=depmode=$am_cv_CCAS_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CCAS_dependencies_compiler_type" = gcc3; then - am__fastdepCCAS_TRUE= - am__fastdepCCAS_FALSE='#' -else - am__fastdepCCAS_TRUE='#' - am__fastdepCCAS_FALSE= -fi - - - -case `pwd` in - *\ * | *\ *) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 -$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; -esac - - - -macro_version='2.4.6' -macro_revision='2.4.6' - - - - - - - - - - - - - -ltmain=$ac_aux_dir/ltmain.sh - -# Backslashify metacharacters that are still active within -# double-quoted strings. -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 delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - -ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 -$as_echo_n "checking how to print strings... " >&6; } -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "" -} - -case $ECHO in - printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 -$as_echo "printf" >&6; } ;; - print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 -$as_echo "print -r" >&6; } ;; - *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 -$as_echo "cat" >&6; } ;; -esac - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for ac_i in 1 2 3 4 5 6 7; do - ac_script="$ac_script$as_nl$ac_script" - done - echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed - { ac_script=; unset ac_script;} - if test -z "$SED"; then - ac_path_SED_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - 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_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_SED" || continue -# Check for GNU ac_path_SED and select it if it is found. - # Check for GNU $ac_path_SED -case `"$ac_path_SED" --version 2>&1` in -*GNU*) - ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" - "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_SED_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_SED="$ac_path_SED" - ac_path_SED_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_SED_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_SED"; then - as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 - fi -else - ac_cv_path_SED=$SED -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed - -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_GREP" || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP" || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 -$as_echo_n "checking for fgrep... " >&6; } -if ${ac_cv_path_FGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 - then ac_cv_path_FGREP="$GREP -F" - else - if test -z "$FGREP"; then - ac_path_FGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in fgrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_FGREP" || continue -# Check for GNU ac_path_FGREP and select it if it is found. - # Check for GNU $ac_path_FGREP -case `"$ac_path_FGREP" --version 2>&1` in -*GNU*) - ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'FGREP' >> "conftest.nl" - "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_FGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_FGREP="$ac_path_FGREP" - ac_path_FGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_FGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_FGREP"; then - as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_FGREP=$FGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 -$as_echo "$ac_cv_path_FGREP" >&6; } - FGREP="$ac_cv_path_FGREP" - - -test -z "$GREP" && GREP=grep - - - - - - - - - - - - - - - - - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test yes = "$GCC"; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&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 yes = "$with_gnu_ld"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&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 variants of GNU ld 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 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 -$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } -if ${lt_cv_path_NM+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM=$NM -else - lt_nm_to_check=${ac_tool_prefix}nm - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - tmp_nm=$ac_dir/$lt_tmp_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 - # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty - case $build_os in - mingw*) lt_bad_file=conftest.nm/nofile ;; - *) lt_bad_file=/dev/null ;; - esac - case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in - *$lt_bad_file* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break 2 - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break 2 - ;; - *) - 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 - done - : ${lt_cv_path_NM=no} -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 -$as_echo "$lt_cv_path_NM" >&6; } -if test no != "$lt_cv_path_NM"; then - NM=$lt_cv_path_NM -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - if test -n "$ac_tool_prefix"; then - for ac_prog in dumpbin "link -dump" - 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DUMPBIN"; then - ac_cv_prog_DUMPBIN="$DUMPBIN" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DUMPBIN=$ac_cv_prog_DUMPBIN -if test -n "$DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 -$as_echo "$DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$DUMPBIN" && break - done -fi -if test -z "$DUMPBIN"; then - ac_ct_DUMPBIN=$DUMPBIN - for ac_prog in dumpbin "link -dump" -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DUMPBIN"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN -if test -n "$ac_ct_DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 -$as_echo "$ac_ct_DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_DUMPBIN" && break -done - - if test "x$ac_ct_DUMPBIN" = x; then - DUMPBIN=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DUMPBIN=$ac_ct_DUMPBIN - fi -fi - - case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols -headers" - ;; - *) - DUMPBIN=: - ;; - esac - fi - - if test : != "$DUMPBIN"; then - NM=$DUMPBIN - fi -fi -test -z "$NM" && NM=nm - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 -$as_echo_n "checking the name lister ($NM) interface... " >&6; } -if ${lt_cv_nm_interface+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: output\"" >&5) - cat conftest.out >&5 - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 -$as_echo "$lt_cv_nm_interface" >&6; } - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -$as_echo_n "checking whether ln -s works... " >&6; } -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -$as_echo "no, using $LN_S" >&6; } -fi - -# find the maximum length of command line arguments -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 -$as_echo_n "checking the maximum length of command line arguments... " >&6; } -if ${lt_cv_sys_max_cmd_len+:} false; then : - $as_echo_n "(cached) " >&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* | cegcc*) - # 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; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - 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; - ;; - - bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) - # 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 all BSDs - 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` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - os2*) - # The test takes a long time on OS/2. - lt_cv_sys_max_cmd_len=8192 - ;; - - 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 - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len" && \ - test undefined != "$lt_cv_sys_max_cmd_len"; then - 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` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # 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. - while { test X`env echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test 17 != "$i" # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - 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` - fi - ;; - esac - -fi - -if test -n "$lt_cv_sys_max_cmd_len"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 -$as_echo "$lt_cv_sys_max_cmd_len" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -$as_echo "none" >&6; } -fi -max_cmd_len=$lt_cv_sys_max_cmd_len - - - - - - -: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi - - - - - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 -$as_echo_n "checking how to convert $build file names to $host format... " >&6; } -if ${lt_cv_to_host_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac - -fi - -to_host_file_cmd=$lt_cv_to_host_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 -$as_echo "$lt_cv_to_host_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 -$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } -if ${lt_cv_to_tool_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - #assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac - -fi - -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 -$as_echo "$lt_cv_to_tool_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 -$as_echo_n "checking for $LD option to reload object files... " >&6; } -if ${lt_cv_ld_reload_flag+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_reload_flag='-r' -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 -$as_echo "$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 - cygwin* | mingw* | pw32* | cegcc*) - if test yes != "$GCC"; then - reload_cmds=false - fi - ;; - darwin*) - if test yes = "$GCC"; then - reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' - else - reload_cmds='$LD$reload_flag -o $output$reload_objs' - fi - ;; -esac - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. -set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OBJDUMP"; then - ac_cv_prog_OBJDUMP="$OBJDUMP" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OBJDUMP=$ac_cv_prog_OBJDUMP -if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OBJDUMP"; then - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. -set dummy objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OBJDUMP"; then - ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP -if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OBJDUMP" = x; then - OBJDUMP="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OBJDUMP=$ac_ct_OBJDUMP - fi -else - OBJDUMP="$ac_cv_prog_OBJDUMP" -fi - -test -z "$OBJDUMP" && OBJDUMP=objdump - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 -$as_echo_n "checking how to recognize dependent libraries... " >&6; } -if ${lt_cv_deplibs_check_method+:} false; then : - $as_echo_n "(cached) " >&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 -# that 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 -aix[4-9]*) - 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', - # unless we find 'file', for example because we are cross-compiling. - if ( file / ) >/dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | 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 - ;; - -haiku*) - 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])(-bit)?( [LM]SB)? 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 - ;; - -interix[3-9]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' - ;; - -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 glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - 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=pass_all - ;; - -openbsd* | bitrig*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; 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 - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - 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 - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -os2*) - lt_cv_deplibs_check_method=pass_all - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 -$as_echo "$lt_cv_deplibs_check_method" >&6; } - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` - fi - ;; - esac -fi - -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 test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. -set dummy ${ac_tool_prefix}dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DLLTOOL"; then - ac_cv_prog_DLLTOOL="$DLLTOOL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DLLTOOL=$ac_cv_prog_DLLTOOL -if test -n "$DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 -$as_echo "$DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DLLTOOL"; then - ac_ct_DLLTOOL=$DLLTOOL - # Extract the first word of "dlltool", so it can be a program name with args. -set dummy dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DLLTOOL"; then - ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DLLTOOL="dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL -if test -n "$ac_ct_DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 -$as_echo "$ac_ct_DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DLLTOOL" = x; then - DLLTOOL="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DLLTOOL=$ac_ct_DLLTOOL - fi -else - DLLTOOL="$ac_cv_prog_DLLTOOL" -fi - -test -z "$DLLTOOL" && DLLTOOL=dlltool - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 -$as_echo_n "checking how to associate runtime and link libraries... " >&6; } -if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh; - # decide which one to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd=$ECHO - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 -$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - - - - - - - - -if test -n "$ac_tool_prefix"; then - for ac_prog in ar - 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AR="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AR" && break - done -fi -if test -z "$AR"; then - ac_ct_AR=$AR - for ac_prog in ar -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_AR="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_AR" && break -done - - if test "x$ac_ct_AR" = x; then - AR="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AR=$ac_ct_AR - fi -fi - -: ${AR=ar} -: ${AR_FLAGS=cru} - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 -$as_echo_n "checking for archiver @FILE support... " >&6; } -if ${lt_cv_ar_at_file+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ar_at_file=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test 0 -eq "$ac_status"; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test 0 -ne "$ac_status"; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 -$as_echo "$lt_cv_ar_at_file" >&6; } - -if test no = "$lt_cv_ar_at_file"; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -test -z "$STRIP" && STRIP=: - - - - - - -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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - -test -z "$RANLIB" && RANLIB=: - - - - - - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - bitrig* | openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - -# Check for command to grab the raw symbol name followed by C symbol from nm. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 -$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } -if ${lt_cv_sys_global_symbol_pipe+:} false; then : - $as_echo_n "(cached) " >&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]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[BCDT]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[ABCDGISTW]' - ;; -hpux*) - if test ia64 = "$host_cpu"; then - symcode='[ABCDEGRST]' - fi - ;; -irix* | nonstopux*) - symcode='[BCDEGRST]' - ;; -osf*) - symcode='[BCDEGQRST]' - ;; -solaris*) - symcode='[BDRT]' - ;; -sco3.2v5*) - symcode='[DT]' - ;; -sysv4.2uw2*) - symcode='[DT]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[ABDT]' - ;; -sysv4) - symcode='[DFNSTU]' - ;; -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 - -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Gets list of data symbols to import. - lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" - # Adjust the below global symbol transforms to fixup imported variables. - lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" - lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" - lt_c_name_lib_hook="\ - -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ - -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" -else - # Disable hooks by default. - lt_cv_sys_global_symbol_to_import= - lt_cdecl_hook= - lt_c_name_hook= - lt_c_name_lib_hook= -fi - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n"\ -$lt_cdecl_hook\ -" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ -$lt_c_name_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" - -# Transform an extracted symbol line into symbol name with lib prefix and -# symbol address. -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ -$lt_c_name_lib_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" - -# 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 - -# Try without a prefix underscore, 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. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function, - # D for any global variable and I for any imported variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK '"\ -" {last_section=section; section=\$ 3};"\ -" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ -" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ -" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ -" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ -" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Now try to grab the symbols. - nlist=conftest.nm - if { { eval echo "\"\$as_me\":${as_lineno-$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=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && 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 <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE -/* DATA imports from DLLs on WIN32 can't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT_DLSYM_CONST -#elif defined __osf__ -/* This system does not cope well with relocations in const data. */ -# define LT_DLSYM_CONST -#else -# define LT_DLSYM_CONST const -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS=conftstm.$ac_objext - CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest$ac_exeext; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_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 -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test yes = "$pipe_works"; 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -$as_echo "failed" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -$as_echo "ok" >&6; } -fi - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 -$as_echo_n "checking for sysroot... " >&6; } - -# Check whether --with-sysroot was given. -if test "${with_sysroot+set}" = set; then : - withval=$with_sysroot; -else - with_sysroot=no -fi - - -lt_sysroot= -case $with_sysroot in #( - yes) - if test yes = "$GCC"; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - fi - ;; #( - /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - no|'') - ;; #( - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 -$as_echo "$with_sysroot" >&6; } - as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 - ;; -esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 -$as_echo "${lt_sysroot:-no}" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 -$as_echo_n "checking for a working dd... " >&6; } -if ${ac_cv_path_lt_DD+:} false; then : - $as_echo_n "(cached) " >&6 -else - printf 0123456789abcdef0123456789abcdef >conftest.i -cat conftest.i conftest.i >conftest2.i -: ${lt_DD:=$DD} -if test -z "$lt_DD"; then - ac_path_lt_DD_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - 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_prog in dd; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_lt_DD" || continue -if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then - cmp -s conftest.i conftest.out \ - && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: -fi - $ac_path_lt_DD_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_lt_DD"; then - : - fi -else - ac_cv_path_lt_DD=$lt_DD -fi - -rm -f conftest.i conftest2.i conftest.out -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 -$as_echo "$ac_cv_path_lt_DD" >&6; } - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 -$as_echo_n "checking how to truncate binary pipes... " >&6; } -if ${lt_cv_truncate_bin+:} false; then : - $as_echo_n "(cached) " >&6 -else - printf 0123456789abcdef0123456789abcdef >conftest.i -cat conftest.i conftest.i >conftest2.i -lt_cv_truncate_bin= -if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then - cmp -s conftest.i conftest.out \ - && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" -fi -rm -f conftest.i conftest2.i conftest.out -test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 -$as_echo "$lt_cv_truncate_bin" >&6; } - - - - - - - -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -func_cc_basename () -{ - for cc_temp in $*""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac - done - func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -} - -# Check whether --enable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then : - enableval=$enable_libtool_lock; -fi - -test no = "$enable_libtool_lock" || 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 what ABI is being produced by ac_compile, and set mode - # options accordingly. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; 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 what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo '#line '$LINENO' "configure"' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if test yes = "$lt_cv_prog_gnu_ld"; 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* - ;; - -mips64*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo '#line '$LINENO' "configure"' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - emul=elf - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - emul="${emul}32" - ;; - *64-bit*) - emul="${emul}64" - ;; - esac - case `/usr/bin/file conftest.$ac_objext` in - *MSB*) - emul="${emul}btsmip" - ;; - *LSB*) - emul="${emul}ltsmip" - ;; - esac - case `/usr/bin/file conftest.$ac_objext` in - *N32*) - emul="${emul}n32" - ;; - esac - LD="${LD-ld} -m $emul" - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. Note that the listed cases only cover the - # situations where additional linker options are needed (such as when - # doing 32-bit compilation for a host where ld defaults to 64-bit, or - # vice versa); the common cases where no linker options are needed do - # not appear in the list. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - case `/usr/bin/file conftest.o` in - *x86-64*) - LD="${LD-ld} -m elf32_x86_64" - ;; - *) - LD="${LD-ld} -m elf_i386" - ;; - esac - ;; - powerpc64le-*linux*) - LD="${LD-ld} -m elf32lppclinux" - ;; - 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-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - powerpcle-*linux*) - LD="${LD-ld} -m elf64lppc" - ;; - powerpc-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - 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" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 -$as_echo_n "checking whether the C compiler needs -belf... " >&6; } -if ${lt_cv_cc_needs_belf+:} false; then : - $as_echo_n "(cached) " >&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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_cc_needs_belf=yes -else - lt_cv_cc_needs_belf=no -fi -rm -f core 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 -$as_echo "$lt_cv_cc_needs_belf" >&6; } - if test yes != "$lt_cv_cc_needs_belf"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS=$SAVE_CFLAGS - fi - ;; -*-*solaris*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) - case $host in - i?86-*-solaris*|x86_64-*-solaris*) - LD="${LD-ld} -m elf_x86_64" - ;; - sparc*-*-solaris*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - # GNU ld 2.21 introduced _sol2 emulations. Use them if available. - if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then - LD=${LD-ld}_sol2 - fi - ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks=$enable_libtool_lock - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. -set dummy ${ac_tool_prefix}mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$MANIFEST_TOOL"; then - ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL -if test -n "$MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 -$as_echo "$MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_MANIFEST_TOOL"; then - ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL - # Extract the first word of "mt", so it can be a program name with args. -set dummy mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_MANIFEST_TOOL"; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL -if test -n "$ac_ct_MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 -$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_MANIFEST_TOOL" = x; then - MANIFEST_TOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL - fi -else - MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" -fi - -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 -$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } -if ${lt_cv_path_mainfest_tool+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&5 - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 -$as_echo "$lt_cv_path_mainfest_tool" >&6; } -if test yes != "$lt_cv_path_mainfest_tool"; then - MANIFEST_TOOL=: -fi - - - - - - - case $host_os in - rhapsody* | darwin*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. -set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DSYMUTIL"; then - ac_cv_prog_DSYMUTIL="$DSYMUTIL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DSYMUTIL=$ac_cv_prog_DSYMUTIL -if test -n "$DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 -$as_echo "$DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DSYMUTIL"; then - ac_ct_DSYMUTIL=$DSYMUTIL - # Extract the first word of "dsymutil", so it can be a program name with args. -set dummy dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DSYMUTIL"; then - ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL -if test -n "$ac_ct_DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 -$as_echo "$ac_ct_DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DSYMUTIL" = x; then - DSYMUTIL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DSYMUTIL=$ac_ct_DSYMUTIL - fi -else - DSYMUTIL="$ac_cv_prog_DSYMUTIL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. -set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NMEDIT"; then - ac_cv_prog_NMEDIT="$NMEDIT" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -NMEDIT=$ac_cv_prog_NMEDIT -if test -n "$NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 -$as_echo "$NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_NMEDIT"; then - ac_ct_NMEDIT=$NMEDIT - # Extract the first word of "nmedit", so it can be a program name with args. -set dummy nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_NMEDIT"; then - ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_NMEDIT="nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT -if test -n "$ac_ct_NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 -$as_echo "$ac_ct_NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_NMEDIT" = x; then - NMEDIT=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - NMEDIT=$ac_ct_NMEDIT - fi -else - NMEDIT="$ac_cv_prog_NMEDIT" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. -set dummy ${ac_tool_prefix}lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$LIPO"; then - ac_cv_prog_LIPO="$LIPO" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_LIPO="${ac_tool_prefix}lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -LIPO=$ac_cv_prog_LIPO -if test -n "$LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 -$as_echo "$LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_LIPO"; then - ac_ct_LIPO=$LIPO - # Extract the first word of "lipo", so it can be a program name with args. -set dummy lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_LIPO"; then - ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_LIPO="lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO -if test -n "$ac_ct_LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 -$as_echo "$ac_ct_LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_LIPO" = x; then - LIPO=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - LIPO=$ac_ct_LIPO - fi -else - LIPO="$ac_cv_prog_LIPO" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL"; then - ac_cv_prog_OTOOL="$OTOOL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OTOOL="${ac_tool_prefix}otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL=$ac_cv_prog_OTOOL -if test -n "$OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 -$as_echo "$OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL"; then - ac_ct_OTOOL=$OTOOL - # Extract the first word of "otool", so it can be a program name with args. -set dummy otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL"; then - ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OTOOL="otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL -if test -n "$ac_ct_OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 -$as_echo "$ac_ct_OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL" = x; then - OTOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL=$ac_ct_OTOOL - fi -else - OTOOL="$ac_cv_prog_OTOOL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL64"; then - ac_cv_prog_OTOOL64="$OTOOL64" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL64=$ac_cv_prog_OTOOL64 -if test -n "$OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 -$as_echo "$OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL64"; then - ac_ct_OTOOL64=$OTOOL64 - # Extract the first word of "otool64", so it can be a program name with args. -set dummy otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL64"; then - ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OTOOL64="otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 -if test -n "$ac_ct_OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 -$as_echo "$ac_ct_OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL64" = x; then - OTOOL64=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL64=$ac_ct_OTOOL64 - fi -else - OTOOL64="$ac_cv_prog_OTOOL64" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 -$as_echo_n "checking for -single_module linker flag... " >&6; } -if ${lt_cv_apple_cc_single_mod+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_apple_cc_single_mod=no - if test -z "$LT_MULTI_MODULE"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - # If there is a non-empty error log, and "single_module" - # appears in it, assume the flag caused a linker warning - if test -s conftest.err && $GREP single_module conftest.err; then - cat conftest.err >&5 - # Otherwise, if the output was created with a 0 exit code from - # the compiler, it worked. - elif test -f libconftest.dylib && test 0 = "$_lt_result"; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&5 - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 -$as_echo "$lt_cv_apple_cc_single_mod" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 -$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } -if ${lt_cv_ld_exported_symbols_list+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_ld_exported_symbols_list=yes -else - lt_cv_ld_exported_symbols_list=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 -$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 -$as_echo_n "checking for -force_load linker flag... " >&6; } -if ${lt_cv_ld_force_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 - echo "$AR cru libconftest.a conftest.o" >&5 - $AR cru libconftest.a conftest.o 2>&5 - echo "$RANLIB libconftest.a" >&5 - $RANLIB libconftest.a 2>&5 - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -s conftest.err && $GREP force_load conftest.err; then - cat conftest.err >&5 - elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&5 - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 -$as_echo "$lt_cv_ld_force_load" >&6; } - case $host_os in - rhapsody* | darwin1.[012]) - _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[91]*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; - 10.[012][,.]*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test yes = "$lt_cv_apple_cc_single_mod"; then - _lt_dar_single_mod='$single_module' - fi - if test yes = "$lt_cv_ld_exported_symbols_list"; then - _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' - fi - if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac - -# func_munge_path_list VARIABLE PATH -# ----------------------------------- -# VARIABLE is name of variable containing _space_ separated list of -# directories to be munged by the contents of PATH, which is string -# having a format: -# "DIR[:DIR]:" -# string "DIR[ DIR]" will be prepended to VARIABLE -# ":DIR[:DIR]" -# string "DIR[ DIR]" will be appended to VARIABLE -# "DIRP[:DIRP]::[DIRA:]DIRA" -# string "DIRP[ DIRP]" will be prepended to VARIABLE and string -# "DIRA[ DIRA]" will be appended to VARIABLE -# "DIR[:DIR]" -# VARIABLE will be replaced by "DIR[ DIR]" -func_munge_path_list () -{ - case x$2 in - x) - ;; - *:) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" - ;; - x:*) - eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" - ;; - *::*) - eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" - eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" - ;; - *) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" - ;; - esac -} - -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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -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 - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core 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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* 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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* 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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#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)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -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=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -for ac_header in dlfcn.h -do : - ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default -" -if test "x$ac_cv_header_dlfcn_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_DLFCN_H 1 -_ACEOF - -fi - -done - - - - -func_stripname_cnf () -{ - case $2 in - .*) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%\\\\$2\$%%"`;; - *) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%$2\$%%"`;; - esac -} # func_stripname_cnf - - - - - -# Set options - - - - enable_dlopen=no - - - enable_win32_dll=no - - - # Check whether --enable-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 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 --with-pic was given. -if test "${with_pic+set}" = set; then : - withval=$with_pic; lt_p=${PACKAGE-default} - case $withval in - yes|no) pic_mode=$withval ;; - *) - pic_mode=default - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for lt_pkg in $withval; do - IFS=$lt_save_ifs - if test "X$lt_pkg" = "X$lt_p"; then - pic_mode=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else - pic_mode=default -fi - - - - - - - - - # Check whether --enable-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 - - - - - - - - - shared_archive_member_spec= -case $host,$enable_shared in -power*-*-aix[5-9]*,yes) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 -$as_echo_n "checking which variant of shared library versioning to provide... " >&6; } - -# Check whether --with-aix-soname was given. -if test "${with_aix_soname+set}" = set; then : - withval=$with_aix_soname; case $withval in - aix|svr4|both) - ;; - *) - as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 - ;; - esac - lt_cv_with_aix_soname=$with_aix_soname -else - if ${lt_cv_with_aix_soname+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_with_aix_soname=aix -fi - - with_aix_soname=$lt_cv_with_aix_soname -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 -$as_echo "$with_aix_soname" >&6; } - if test aix != "$with_aix_soname"; then - # For the AIX way of multilib, we name the shared archive member - # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', - # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. - # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, - # the AIX toolchain works better with OBJECT_MODE set (default 32). - if test 64 = "${OBJECT_MODE-32}"; then - shared_archive_member_spec=shr_64 - else - shared_archive_member_spec=shr - fi - fi - ;; -*) - with_aix_soname=aix - ;; -esac - - - - - - - - - - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS=$ltmain - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -test -z "$LN_S" && LN_S="ln -s" - - - - - - - - - - - - - - -if test -n "${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 -$as_echo_n "checking for objdir... " >&6; } -if ${lt_cv_objdir+:} false; then : - $as_echo_n "(cached) " >&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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 -$as_echo "$lt_cv_objdir" >&6; } -objdir=$lt_cv_objdir - - - - - -cat >>confdefs.h <<_ACEOF -#define LT_OBJDIR "$lt_cv_objdir/" -_ACEOF - - - - -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 set != "${COLLECT_NAMES+set}"; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a '.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld=$lt_cv_prog_gnu_ld - -old_CC=$CC -old_CFLAGS=$CFLAGS - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -func_cc_basename $compiler -cc_basename=$func_cc_basename_result - - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 -$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&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 <<_LT_EOF 1>&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 - -_LT_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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - - -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 -$as_echo_n "checking for file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&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 <<_LT_EOF 1>&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 - -_LT_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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - else - MAGIC_CMD=: - fi -fi - - fi - ;; -esac - -# Use C for the default configuration in the libtool script - -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;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -if test -n "$compiler"; then - -lt_prog_compiler_no_builtin_flag= - -if test yes = "$GCC"; then - case $cc_basename in - nvcc*) - lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; - *) - lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } -if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_rtti_exceptions=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment - # 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}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_rtti_exceptions=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } - -if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; 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= - - - if test yes = "$GCC"; then - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_static='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - fi - lt_prog_compiler_pic='-fPIC' - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic='-fPIC' - ;; - m68k) - # 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' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # 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). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic='-DDLL_EXPORT' - case $host_os in - os2*) - lt_prog_compiler_static='$wl-static' - ;; - esac - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - ;; - - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - 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 - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic=-Kconform_pic - fi - ;; - - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - lt_prog_compiler_wl='-Xlinker ' - if test -n "$lt_prog_compiler_pic"; then - lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" - fi - ;; - 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 ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - else - lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - case $cc_basename in - nagfor*) - # NAG Fortran compiler - lt_prog_compiler_wl='-Wl,-Wl,,' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - esac - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # 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' - case $host_os in - os2*) - lt_prog_compiler_static='$wl-static' - ;; - esac - ;; - - 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' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - # old Intel for x86_64, which still supported -KPIC. - ecc*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='--shared' - lt_prog_compiler_static='--static' - ;; - nagfor*) - # NAG Fortran compiler - lt_prog_compiler_wl='-Wl,-Wl,,' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - tcc*) - # Fabrice Bellard et al's Tiny C Compiler - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # 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='-Bstatic' - ;; - ccc*) - lt_prog_compiler_wl='-Wl,' - # All Alpha code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-qpic' - lt_prog_compiler_static='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='' - ;; - *Sun\ F* | *Sun*Fortran*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Qoption ld ' - ;; - *Sun\ C*) - # Sun C 5.9 - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Wl,' - ;; - *Intel*\ [CF]*Compiler*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - *Portland\ Group*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - esac - ;; - esac - ;; - - newsos6) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - lt_prog_compiler_wl='-Wl,' - # All OSF/1 code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - - rdos*) - lt_prog_compiler_static='-non_shared' - ;; - - solaris*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - 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*) - 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 - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - 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 - -case $host_os in - # For platforms that do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic= - ;; - *) - lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" - ;; -esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -if ${lt_cv_prog_compiler_pic+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic=$lt_prog_compiler_pic -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 -$as_echo "$lt_cv_prog_compiler_pic" >&6; } -lt_prog_compiler_pic=$lt_cv_prog_compiler_pic - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } -if ${lt_cv_prog_compiler_pic_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment - # 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}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } - -if test yes = "$lt_cv_prog_compiler_pic_works"; 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 - - - - - - - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works=no - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker 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 "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works=yes - fi - else - lt_cv_prog_compiler_static_works=yes - fi - fi - $RM -r conftest* - LDFLAGS=$save_LDFLAGS - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 -$as_echo "$lt_cv_prog_compiler_static_works" >&6; } - -if test yes = "$lt_cv_prog_compiler_static_works"; then - : -else - lt_prog_compiler_static= -fi - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$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}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $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 .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$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}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $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 .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - -hard_links=nottested -if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test no = "$hard_links"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 -$as_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 - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - runpath_var= - allow_undefined_flag= - always_export_symbols=no - archive_cmds= - archive_expsym_cmds= - compiler_needs_object=no - enable_shared_with_static_runtimes=no - export_dynamic_flag_spec= - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - hardcode_automatic=no - hardcode_direct=no - hardcode_direct_absolute=no - hardcode_libdir_flag_spec= - hardcode_libdir_separator= - hardcode_minus_L=no - hardcode_shlibpath_var=unsupported - inherit_rpath=no - link_all_deplibs=unknown - module_cmds= - module_expsym_cmds= - old_archive_from_new_cmds= - old_archive_from_expsyms_cmds= - thread_safe_flag_spec= - whole_archive_flag_spec= - # 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_|_GLOBAL__F[ID]_.*' - # 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. - # Exclude shared library initialization/finalization symbols. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # 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 yes != "$GCC"; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd* | bitrig*) - with_gnu_ld=no - ;; - esac - - ld_shlibs=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test yes = "$with_gnu_ld"; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; - *\ \(GNU\ Binutils\)\ [3-9]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test yes = "$lt_use_gnu_ld_interface"; 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 | $SED -e 's/(^)\+)\s\+//' 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [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 - aix[3-9]*) - # On AIX/PPC, the GNU linker is very broken - if test ia64 != "$host_cpu"; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, 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 install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - 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 - ;; - esac - ;; - - 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* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - export_dynamic_flag_spec='$wl--export-all-symbols' - 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/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file, use it as - # is; otherwise, prepend EXPORTS... - archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; 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--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs=no - fi - ;; - - haiku*) - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - link_all_deplibs=yes - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - shrext_cmds=.dll - archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - enable_shared_with_static_runtimes=yes - ;; - - interix[3-9]*) - hardcode_direct=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='$wl-rpath,$libdir' - export_dynamic_flag_spec='$wl-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test linux-dietlibc = "$host_os"; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test no = "$tmp_diet" - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - 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; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # 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; func_echo_all \"$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' ;; - lf95*) # Lahey Fortran 8.1 - whole_archive_flag_spec= - tmp_sharedflag='--shared' ;; - nagfor*) # NAGFOR 5.3 - tmp_sharedflag='-Wl,-shared' ;; - xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - compiler_needs_object=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - compiler_needs_object=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - - if test yes = "$supports_anon_versioning"; 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 '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - tcc*) - export_dynamic_flag_spec='-rdynamic' - ;; - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test yes = "$supports_anon_versioning"; 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~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - 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 $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - cat <<_LT_EOF 1>&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. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - 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 - ;; - - 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 $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $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 no = "$ld_shlibs"; 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 yes = "$GCC" && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - - aix[4-9]*) - if test ia64 = "$host_cpu"; 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 GNU nm, but means don't demangle to AIX nm. - # Without the "-l" option, or with the "-B" option, AIX nm treats - # weak defined symbols like other global defined symbols, whereas - # GNU nm marks them as "W". - # While the 'weak' keyword is ignored in the Export File, we need - # it in the Import File for the 'aix-soname' feature, so we have - # to replace the "-B" option with "-P" for AIX 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") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | 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 - # have runtime linking enabled, and use it for executables. - # For shared libraries, we enable/disable runtime linking - # depending on the kind of the shared library created - - # when "with_aix_soname,aix_use_runtimelinking" is: - # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables - # "aix,yes" lib.so shared, rtl:yes, for executables - # lib.a static archive - # "both,no" lib.so.V(shr.o) shared, rtl:yes - # lib.a(lib.so.V) shared, rtl:no, for executables - # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a(lib.so.V) shared, rtl:no - # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a static archive - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then - aix_use_runtimelinking=yes - break - fi - done - if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then - # With aix-soname=svr4, we create the lib.so.V shared archives only, - # so we don't have lib.a shared libs to link our executables. - # We have to force runtime linking in this case. - aix_use_runtimelinking=yes - LDFLAGS="$LDFLAGS -Wl,-brtl" - fi - ;; - 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_direct_absolute=yes - hardcode_libdir_separator=':' - link_all_deplibs=yes - file_list_spec='$wl-f,' - case $with_aix_soname,$aix_use_runtimelinking in - aix,*) ;; # traditional, no import file - svr4,* | *,yes) # use import file - # The Import File defines what to hardcode. - hardcode_direct=no - hardcode_direct_absolute=no - ;; - esac - - if test yes = "$GCC"; 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 - : - 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 yes = "$aix_use_runtimelinking"; then - shared_flag="$shared_flag "'$wl-G' - fi - # Need to ensure runtime linking is disabled for the traditional - # shared library, or the linker may eventually find shared libraries - # /with/ Import File - we do not want to mix them. - shared_flag_aix='-shared' - shared_flag_svr4='-shared $wl-G' - else - # not using gcc - if test ia64 = "$host_cpu"; 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 yes = "$aix_use_runtimelinking"; then - shared_flag='$wl-G' - else - shared_flag='$wl-bM:SRE' - fi - shared_flag_aix='$wl-bM:SRE' - shared_flag_svr4='$wl-G' - fi - fi - - export_dynamic_flag_spec='$wl-bexpall' - # 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,yes = "$with_aix_soname,$aix_use_runtimelinking"; 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. - if test set = "${lt_cv_aix_libpath+set}"; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=/usr/lib:/lib - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag - else - if test ia64 = "$host_cpu"; 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 '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - if test set = "${lt_cv_aix_libpath+set}"; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=/usr/lib:/lib - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -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' - if test yes = "$with_gnu_ld"; then - # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec='$convenience' - fi - archive_cmds_need_lc=yes - archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' - # -brtl affects multiple linker settings, -berok does not and is overridden later - compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' - if test svr4 != "$with_aix_soname"; then - # This is similar to how AIX traditionally builds its shared libraries. - archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' - fi - if test aix != "$with_aix_soname"; then - archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' - else - # used by -dlpreopen to get the symbols - archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' - fi - archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - 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 - ;; - esac - ;; - - bsdi[45]*) - export_dynamic_flag_spec=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # 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. - case $cc_basename in - cl*) - # Native MSVC - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - always_export_symbols=yes - file_list_spec='@' - # 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 $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' - archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then - cp "$export_symbols" "$output_objdir/$soname.def"; - echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; - else - $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, )='true' - enable_shared_with_static_runtimes=yes - exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' - # Don't use ranlib - old_postinstall_cmds='chmod 644 $oldlib' - postlink_cmds='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile=$lt_outputfile.exe - lt_tool_outputfile=$lt_tool_outputfile.exe - ;; - esac~ - if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # Assume MSVC wrapper - 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 `func_echo_all "$deplibs" | $SED '\''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' - enable_shared_with_static_runtimes=yes - ;; - esac - ;; - - darwin* | rhapsody*) - - - archive_cmds_need_lc=no - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - if test yes = "$lt_cv_ld_force_load"; then - whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - - else - whole_archive_flag_spec='' - fi - link_all_deplibs=yes - allow_undefined_flag=$_lt_dar_allow_undefined - case $cc_basename in - ifort*|nagfor*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test yes = "$_lt_dar_can_shared"; then - output_verbose_link_cmd=func_echo_all - archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" - module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" - archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" - module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" - - else - ld_shlibs=no - fi - - ;; - - dgux*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=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* | dragonfly*) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - hpux9*) - if test yes = "$GCC"; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$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 "x$output_objdir/$soname" = "x$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*) - if test yes,no = "$GCC,$with_gnu_ld"; then - archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test no = "$with_gnu_ld"; then - hardcode_libdir_flag_spec='$wl+b $wl$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - hardcode_direct_absolute=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 - fi - ;; - - hpux11*) - if test yes,no = "$GCC,$with_gnu_ld"; then - case $host_cpu in - hppa*64*) - archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 -$as_echo_n "checking if $CC understands -b... " >&6; } -if ${lt_cv_prog_compiler__b+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler__b=no - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -b" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker 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 "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler__b=yes - fi - else - lt_cv_prog_compiler__b=yes - fi - fi - $RM -r conftest* - LDFLAGS=$save_LDFLAGS - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 -$as_echo "$lt_cv_prog_compiler__b" >&6; } - -if test yes = "$lt_cv_prog_compiler__b"; then - archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -fi - - ;; - esac - fi - if test no = "$with_gnu_ld"; then - hardcode_libdir_flag_spec='$wl+b $wl$libdir' - hardcode_libdir_separator=: - - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct=no - hardcode_shlibpath_var=no - ;; - *) - hardcode_direct=yes - hardcode_direct_absolute=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 yes = "$GCC"; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 -$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } -if ${lt_cv_irix_exported_symbol+:} false; then : - $as_echo_n "(cached) " >&6 -else - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int foo (void) { return 0; } -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_irix_exported_symbol=yes -else - lt_cv_irix_exported_symbol=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 -$as_echo "$lt_cv_irix_exported_symbol" >&6; } - if test yes = "$lt_cv_irix_exported_symbol"; then - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' - fi - else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - hardcode_libdir_separator=: - inherit_rpath=yes - link_all_deplibs=yes - ;; - - linux*) - case $cc_basename in - tcc*) - # Fabrice Bellard et al's Tiny C Compiler - ld_shlibs=yes - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - 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 - ;; - - *nto* | *qnx*) - ;; - - openbsd* | bitrig*) - if test -f /usr/libexec/ld.so; then - hardcode_direct=yes - hardcode_shlibpath_var=no - hardcode_direct_absolute=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; 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 - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='$wl-rpath,$libdir' - fi - else - ld_shlibs=no - fi - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - shrext_cmds=.dll - archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - enable_shared_with_static_runtimes=yes - ;; - - osf3*) - if test yes = "$GCC"; 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" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - hardcode_libdir_separator=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test yes = "$GCC"; then - allow_undefined_flag=' $wl-expect_unresolved $wl\*' - archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$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='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-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; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_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 - archive_cmds_need_lc='no' - hardcode_libdir_separator=: - ;; - - solaris*) - no_undefined_flag=' -z defs' - if test yes = "$GCC"; then - wlarc='$wl' - archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $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 $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - 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' - ;; - *) - wlarc='$wl' - archive_cmds='$CC -G$allow_undefined_flag -h $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 -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - 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 and reorder linker options, - # but understands '-z linker_flag'. GCC discards it without '$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test yes = "$GCC"; then - whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' - else - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' - fi - ;; - esac - link_all_deplibs=yes - ;; - - sunos4*) - if test sequent = "$host_vendor"; 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*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag='$wl-z,text' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - runpath_var='LD_RUN_PATH' - - if test yes = "$GCC"; then - archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We CANNOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag='$wl-z,text' - allow_undefined_flag='$wl-z,nodefs' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='$wl-R,$libdir' - hardcode_libdir_separator=':' - link_all_deplibs=yes - export_dynamic_flag_spec='$wl-Bexport' - runpath_var='LD_RUN_PATH' - - if test yes = "$GCC"; then - archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - 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 - - if test sni = "$host_vendor"; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - export_dynamic_flag_spec='$wl-Blargedynsym' - ;; - esac - fi - fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 -$as_echo "$ld_shlibs" >&6; } -test no = "$ld_shlibs" && can_build_shared=no - -with_gnu_ld=$with_gnu_ld - - - - - - - - - - - - - - - -# -# 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 yes,yes = "$GCC,$enable_shared"; 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. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc+:} false; then : - $as_echo_n "(cached) " >&6 -else - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl - pic_flag=$lt_prog_compiler_pic - 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\":${as_lineno-$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=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - lt_cv_archive_cmds_need_lc=no - else - lt_cv_archive_cmds_need_lc=yes - fi - allow_undefined_flag=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } - archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -if test yes = "$GCC"; then - case $host_os in - darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; - *) lt_awk_arg='/^libraries:/' ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; - *) lt_sed_strip_eq='s|=/|/|g' ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # 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. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary... - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - # ...but if some path component already ends with the multilib dir we assume - # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). - case "$lt_multi_os_dir; $lt_search_path_spec " in - "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) - lt_multi_os_dir= - ;; - esac - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" - elif test -n "$lt_multi_os_dir"; then - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS = " "; FS = "/|\n";} { - lt_foo = ""; - lt_count = 0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo = "/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[lt_foo]++; } - if (lt_freq[lt_foo] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's|/\([A-Za-z]:\)|\1|g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -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" -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 # correct to gnu/linux during the next big refactor - 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' - ;; - -aix[4-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test ia64 = "$host_cpu"; 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 - # Using Import Files as archive members, it is possible to support - # filename-based versioning of shared library archives on AIX. While - # this would work for both with and without runtime linking, it will - # prevent static linking of such archives. So we do filename-based - # shared library versioning with .so extension only, which is used - # when both runtime linking and shared linking is enabled. - # Unfortunately, runtime linking may impact performance, so we do - # not want this to be the default eventually. Also, we use the - # versioned .so libs for executables only if there is the -brtl - # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. - # To allow for filename-based versioning support, we need to create - # libNAME.so.V as an archive file, containing: - # *) an Import File, referring to the versioned filename of the - # archive as well as the shared archive member, telling the - # bitwidth (32 or 64) of that shared object, and providing the - # list of exported symbols of that shared object, eventually - # decorated with the 'weak' keyword - # *) the shared object with the F_LOADONLY flag set, to really avoid - # it being seen by the linker. - # At run time we better use the real file rather than another symlink, - # but for link time we create the symlink libNAME.so -> libNAME.so.V - - case $with_aix_soname,$aix_use_runtimelinking in - # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - aix,yes) # traditional libtool - dynamic_linker='AIX unversionable lib.so' - # 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' - ;; - aix,no) # traditional AIX only - dynamic_linker='AIX lib.a(lib.so.V)' - # 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' - ;; - svr4,*) # full svr4 only - dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,yes) # both, prefer svr4 - dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # unpreferred sharedlib libNAME.a needs extra handling - postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' - postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,no) # both, prefer aix - dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling - postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' - postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' - ;; - esac - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - m68k) - 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=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $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' - ;; - esac - ;; - -beos*) - library_names_spec='$libname$shared_ext' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux # correct to gnu/linux during the next big refactor - 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* | cegcc*) - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - 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~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - 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="$sys_lib_search_path_spec /usr/lib/w32api" - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - ;; - 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 - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - library_names_spec='$libname.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec=$LIB - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH. - 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 - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # 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 - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # 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$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`' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux # correct to gnu/linux during the next big refactor - 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 - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[23].*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - 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 - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - 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=LIBRARY_PATH - shlibpath_overrides_runpath=no - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - 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 32 = "$HPUX_IA64_MODE"; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - sys_lib_dlsearch_path_spec=/usr/lib/hpux32 - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - sys_lib_dlsearch_path_spec=/usr/lib/hpux64 - fi - ;; - 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' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - 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' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test yes = "$lt_cv_prog_gnu_ld"; then - version_type=linux # correct to gnu/linux during the next big refactor - 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 - ;; - -linux*android*) - version_type=none # Android doesn't support versioned libraries. - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext' - soname_spec='$libname$release$shared_ext' - finish_cmds= - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - - # 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 - - dynamic_linker='Android linker' - # Don't embed -rpath directories since the linker doesn't support them. - hardcode_libdir_flag_spec='-L$libdir' - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - 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 - - # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # 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 - - # Add ABI-specific directories to the system library path. - sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" - - # Ideally, we could use ldconfig to report *all* directores which are - # searched for libraries, however this is still not possible. Aside from not - # being certain /sbin/ldconfig is available, command - # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, - # even though it is searched at run-time. Try to do the best guess by - # appending ld.so.conf contents (and includes) to the search path. - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $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' - ;; - -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 # correct to gnu/linux during the next big refactor - 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=qnx - 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='ldqnx.so' - ;; - -openbsd* | bitrig*) - version_type=sunos - sys_lib_dlsearch_path_spec=/usr/lib - need_lib_prefix=no - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - need_version=no - else - need_version=yes - fi - 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 - shlibpath_overrides_runpath=yes - ;; - -os2*) - libname_spec='$name' - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - # OS/2 can only load a DLL with a base name of 8 characters or less. - soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; - v=$($ECHO $release$versuffix | tr -d .-); - n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); - $ECHO $n$v`$shared_ext' - library_names_spec='${libname}_dll.$libext' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=BEGINLIBPATH - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - 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~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - ;; - -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 - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux # correct to gnu/linux during the next big refactor - 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 yes = "$with_gnu_ld"; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux # correct to gnu/linux during the next big refactor - 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 - 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 # correct to gnu/linux during the next big refactor - 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 - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=sco - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test yes = "$with_gnu_ld"; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux # correct to gnu/linux during the next big refactor - 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test no = "$dynamic_linker" && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test yes = "$GCC"; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then - sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec -fi - -if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then - sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec -fi - -# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... -configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec - -# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code -func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" - -# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool -configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } -hardcode_action= -if test -n "$hardcode_libdir_flag_spec" || - test -n "$runpath_var" || - test yes = "$hardcode_automatic"; then - - # We can hardcode non-existent directories. - if test no != "$hardcode_direct" && - # 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 no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && - test no != "$hardcode_minus_L"; 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 -$as_echo "$hardcode_action" >&6; } - -if test relink = "$hardcode_action" || - test yes = "$inherit_rpath"; then - # Fast installation is not supported - enable_fast_install=no -elif test yes = "$shlibpath_overrides_runpath" || - test no = "$enable_shared"; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - if test yes != "$enable_dlopen"; 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* | cegcc*) - 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; 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 - - ;; - - tpf*) - # Don't try to run any link tests for TPF. We know it's impossible - # because TPF is a cross-compiler, and we know how we open DSOs. - lt_cv_dlopen=dlopen - lt_cv_dlopen_libs= - lt_cv_dlopen_self=no - ;; - - *) - ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" -if test "x$ac_cv_func_shl_load" = xyes; then : - lt_cv_dlopen=shl_load -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 -$as_echo_n "checking for shl_load in -ldld... " >&6; } -if ${ac_cv_lib_dld_shl_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load (); -int -main () -{ -return shl_load (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_shl_load=yes -else - ac_cv_lib_dld_shl_load=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 -$as_echo "$ac_cv_lib_dld_shl_load" >&6; } -if test "x$ac_cv_lib_dld_shl_load" = xyes; then : - lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld -else - ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" -if test "x$ac_cv_func_dlopen" = xyes; then : - lt_cv_dlopen=dlopen -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 -$as_echo_n "checking for dlopen in -lsvld... " >&6; } -if ${ac_cv_lib_svld_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsvld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_svld_dlopen=yes -else - ac_cv_lib_svld_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 -$as_echo "$ac_cv_lib_svld_dlopen" >&6; } -if test "x$ac_cv_lib_svld_dlopen" = xyes; then : - lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 -$as_echo_n "checking for dld_link in -ldld... " >&6; } -if ${ac_cv_lib_dld_dld_link+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dld_link (); -int -main () -{ -return dld_link (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_dld_link=yes -else - ac_cv_lib_dld_dld_link=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 -$as_echo "$ac_cv_lib_dld_dld_link" >&6; } -if test "x$ac_cv_lib_dld_dld_link" = xyes; then : - lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld -fi - - -fi - - -fi - - -fi - - -fi - - -fi - - ;; - esac - - if test no = "$lt_cv_dlopen"; then - enable_dlopen=no - else - enable_dlopen=yes - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS=$CPPFLAGS - test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS=$LDFLAGS - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS=$LIBS - LIBS="$lt_cv_dlopen_libs $LIBS" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 -$as_echo_n "checking whether a program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test yes = "$cross_compiling"; 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 <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#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 - -/* When -fvisibility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 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; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then - (./conftest; exit; ) >&5 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_dlunknown|x*) lt_cv_dlopen_self=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 -$as_echo "$lt_cv_dlopen_self" >&6; } - - if test yes = "$lt_cv_dlopen_self"; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 -$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self_static+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test yes = "$cross_compiling"; 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 <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#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 - -/* When -fvisibility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 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; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then - (./conftest; exit; ) >&5 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_dlunknown|x*) lt_cv_dlopen_self_static=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self_static=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 -$as_echo "$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 - - - - - - - - - - - - - - - - - -striplib= -old_striplib= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 -$as_echo_n "checking whether stripping libraries is possible... " >&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" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "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" - old_striplib="$STRIP -S" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ;; - esac -fi - - - - - - - - - - - - - # Report what library types will actually be built - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 -$as_echo_n "checking if libtool supports shared libraries... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 -$as_echo "$can_build_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 -$as_echo_n "checking whether to build shared libraries... " >&6; } - test no = "$can_build_shared" && 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 yes = "$enable_shared" && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[4-9]*) - if test ia64 != "$host_cpu"; then - case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in - yes,aix,yes) ;; # shared object as lib.so file only - yes,svr4,*) ;; # shared object as lib.so archive member only - yes,*) enable_static=no ;; # shared object in lib.a archive as well - esac - fi - ;; - esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 -$as_echo "$enable_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 -$as_echo_n "checking whether to build static libraries... " >&6; } - # Make sure either enable_shared or enable_static is yes. - test yes = "$enable_shared" || enable_static=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 -$as_echo "$enable_static" >&6; } - - - - -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 - - if test -n "$CXX" && ( test no != "$CXX" && - ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || - (test g++ != "$CXX"))); then - ac_ext=cpp -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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 -$as_echo_n "checking how to run the C++ preprocessor... " >&6; } -if test -z "$CXXCPP"; then - if ${ac_cv_prog_CXXCPP+:} false; then : - $as_echo_n "(cached) " >&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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 -$as_echo "$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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -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 - -else - _lt_caught_CXX_error=yes -fi - -ac_ext=cpp -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= -compiler_needs_object_CXX=no -export_dynamic_flag_spec_CXX= -hardcode_direct_CXX=no -hardcode_direct_absolute_CXX=no -hardcode_libdir_flag_spec_CXX= -hardcode_libdir_separator_CXX= -hardcode_minus_L_CXX=no -hardcode_shlibpath_var_CXX=unsupported -hardcode_automatic_CXX=no -inherit_rpath_CXX=no -module_cmds_CXX= -module_expsym_cmds_CXX= -link_all_deplibs_CXX=unknown -old_archive_cmds_CXX=$old_archive_cmds -reload_flag_CXX=$reload_flag -reload_cmds_CXX=$reload_cmds -no_undefined_flag_CXX= -whole_archive_flag_spec_CXX= -enable_shared_with_static_runtimes_CXX=no - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -objext_CXX=$objext - -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test yes != "$_lt_caught_CXX_error"; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="int some_variable = 0;" - - # Code to be used in simple link tests - lt_simple_link_test_code='int main(int, char *[]) { return(0); }' - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - - # save warnings/boilerplate of simple test code - ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - - ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_CFLAGS=$CFLAGS - 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 - $as_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 - $as_unset lt_cv_path_LD - fi - test -z "${LDCXX+set}" || LD=$LDCXX - CC=${CXX-"c++"} - CFLAGS=$CXXFLAGS - compiler=$CC - compiler_CXX=$CC - func_cc_basename $compiler -cc_basename=$func_cc_basename_result - - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test yes = "$GXX"; then - lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' - else - lt_prog_compiler_no_builtin_flag_CXX= - fi - - if test yes = "$GXX"; then - # Set up default GNU C++ configuration - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test yes = "$GCC"; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&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 yes = "$with_gnu_ld"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&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 variants of GNU ld 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 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$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 yes = "$with_gnu_ld"; then - archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC $pic_flag -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 -v "^Configured with:" | $GREP "\-L"' - - else - GXX=no - with_gnu_ld=no - wlarc= - fi - - # PORTME: fill in a description of your system's C++ link characteristics - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - ld_shlibs_CXX=yes - case $host_os in - aix3*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aix[4-9]*) - if test ia64 = "$host_cpu"; 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 - # have runtime linking enabled, and use it for executables. - # For shared libraries, we enable/disable runtime linking - # depending on the kind of the shared library created - - # when "with_aix_soname,aix_use_runtimelinking" is: - # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables - # "aix,yes" lib.so shared, rtl:yes, for executables - # lib.a static archive - # "both,no" lib.so.V(shr.o) shared, rtl:yes - # lib.a(lib.so.V) shared, rtl:no, for executables - # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a(lib.so.V) shared, rtl:no - # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a static archive - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then - # With aix-soname=svr4, we create the lib.so.V shared archives only, - # so we don't have lib.a shared libs to link our executables. - # We have to force runtime linking in this case. - aix_use_runtimelinking=yes - LDFLAGS="$LDFLAGS -Wl,-brtl" - fi - ;; - 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_direct_absolute_CXX=yes - hardcode_libdir_separator_CXX=':' - link_all_deplibs_CXX=yes - file_list_spec_CXX='$wl-f,' - case $with_aix_soname,$aix_use_runtimelinking in - aix,*) ;; # no import file - svr4,* | *,yes) # use import file - # The Import File defines what to hardcode. - hardcode_direct_CXX=no - hardcode_direct_absolute_CXX=no - ;; - esac - - if test yes = "$GXX"; 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 - : - 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 yes = "$aix_use_runtimelinking"; then - shared_flag=$shared_flag' $wl-G' - fi - # Need to ensure runtime linking is disabled for the traditional - # shared library, or the linker may eventually find shared libraries - # /with/ Import File - we do not want to mix them. - shared_flag_aix='-shared' - shared_flag_svr4='-shared $wl-G' - else - # not using gcc - if test ia64 = "$host_cpu"; 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 yes = "$aix_use_runtimelinking"; then - shared_flag='$wl-G' - else - shared_flag='$wl-bM:SRE' - fi - shared_flag_aix='$wl-bM:SRE' - shared_flag_svr4='$wl-G' - fi - fi - - export_dynamic_flag_spec_CXX='$wl-bexpall' - # 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,yes = "$with_aix_soname,$aix_use_runtimelinking"; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - # The "-G" linker flag allows undefined symbols. - no_undefined_flag_CXX='-bernotok' - # Determine the default libpath from the value encoded in an empty - # executable. - if test set = "${lt_cv_aix_libpath+set}"; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath__CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=/usr/lib:/lib - fi - -fi - - aix_libpath=$lt_cv_aix_libpath__CXX -fi - - hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" - - archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag - else - if test ia64 = "$host_cpu"; 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 '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - if test set = "${lt_cv_aix_libpath+set}"; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath__CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=/usr/lib:/lib - fi - -fi - - aix_libpath=$lt_cv_aix_libpath__CXX -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' - if test yes = "$with_gnu_ld"; then - # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec_CXX='$convenience' - fi - archive_cmds_need_lc_CXX=yes - archive_expsym_cmds_CXX='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' - # -brtl affects multiple linker settings, -berok does not and is overridden later - compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' - if test svr4 != "$with_aix_soname"; then - # This is similar to how AIX traditionally builds its shared - # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. - archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' - fi - if test aix != "$with_aix_soname"; then - archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' - else - # used by -dlpreopen to get the symbols - archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$MV $output_objdir/$realname.d/$soname $output_objdir' - fi - archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$RM -r $output_objdir/$realname.d' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag_CXX=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - else - ld_shlibs_CXX=no - fi - ;; - - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - cygwin* | mingw* | pw32* | cegcc*) - case $GXX,$cc_basename in - ,cl* | no,cl*) - # Native MSVC - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec_CXX=' ' - allow_undefined_flag_CXX=unsupported - always_export_symbols_CXX=yes - file_list_spec_CXX='@' - # 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_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' - archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then - cp "$export_symbols" "$output_objdir/$soname.def"; - echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; - else - $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' - enable_shared_with_static_runtimes_CXX=yes - # Don't use ranlib - old_postinstall_cmds_CXX='chmod 644 $oldlib' - postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile=$lt_outputfile.exe - lt_tool_outputfile=$lt_tool_outputfile.exe - ;; - esac~ - func_to_tool_file "$lt_outputfile"~ - if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # g++ - # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec_CXX='-L$libdir' - export_dynamic_flag_spec_CXX='$wl--export-all-symbols' - 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--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file, use it as - # is; otherwise, prepend EXPORTS... - archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; 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--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs_CXX=no - fi - ;; - esac - ;; - darwin* | rhapsody*) - - - archive_cmds_need_lc_CXX=no - hardcode_direct_CXX=no - hardcode_automatic_CXX=yes - hardcode_shlibpath_var_CXX=unsupported - if test yes = "$lt_cv_ld_force_load"; then - whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - - else - whole_archive_flag_spec_CXX='' - fi - link_all_deplibs_CXX=yes - allow_undefined_flag_CXX=$_lt_dar_allow_undefined - case $cc_basename in - ifort*|nagfor*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test yes = "$_lt_dar_can_shared"; then - output_verbose_link_cmd=func_echo_all - archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" - module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" - archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" - module_expsym_cmds_CXX="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" - if test yes != "$lt_cv_apple_cc_single_mod"; then - 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$_lt_dsymutil" - archive_expsym_cmds_CXX="sed '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$_lt_dar_export_syms$_lt_dsymutil" - fi - - else - ld_shlibs_CXX=no - fi - - ;; - - os2*) - hardcode_libdir_flag_spec_CXX='-L$libdir' - hardcode_minus_L_CXX=yes - allow_undefined_flag_CXX=unsupported - shrext_cmds=.dll - archive_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - archive_expsym_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - old_archive_From_new_cmds_CXX='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - enable_shared_with_static_runtimes_CXX=yes - ;; - - 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 - ;; - - freebsd2.*) - # 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* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - ld_shlibs_CXX=yes - ;; - - haiku*) - archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - link_all_deplibs_CXX=yes - ;; - - 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 "x$output_objdir/$soname" = "x$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) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test yes = "$GXX"; then - archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test no = "$with_gnu_ld"; then - hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' - hardcode_libdir_separator_CXX=: - - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - export_dynamic_flag_spec_CXX='$wl-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - ;; - *) - hardcode_direct_CXX=yes - hardcode_direct_absolute_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*) - archive_cmds_CXX='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - 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; func_echo_all "$list"' - ;; - *) - if test yes = "$GXX"; then - if test no = "$with_gnu_ld"; then - case $host_cpu in - hppa*64*) - archive_cmds_CXX='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $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 - ;; - - interix[3-9]*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' - export_dynamic_flag_spec_CXX='$wl-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds_CXX='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - 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" && func_echo_all "-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 yes = "$GXX"; then - if test no = "$with_gnu_ld"; then - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - else - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$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=: - inherit_rpath_CXX=yes - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - 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; func_echo_all "$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* | ecpc* ) - # 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* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in - *pgCC\ [1-5].* | *pgcpp\ [1-5].*) - prelink_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' - old_archive_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' - archive_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 6 and above use weak symbols - 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' - ;; - esac - - 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; func_echo_all \"$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=`func_echo_all "$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; func_echo_all "X$list" | $Xsed' - ;; - xl* | mpixl* | bgxl*) - # IBM XL 8.0 on PPC, with GNU ld - hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' - export_dynamic_flag_spec_CXX='$wl--export-dynamic' - archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - if test yes = "$supports_anon_versioning"; then - archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - archive_expsym_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' - hardcode_libdir_flag_spec_CXX='-R$libdir' - whole_archive_flag_spec_CXX='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - compiler_needs_object_CXX=yes - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='func_echo_all' - - # 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' - ;; - esac - ;; - 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::"' - ;; - - *nto* | *qnx*) - ld_shlibs_CXX=yes - ;; - - openbsd* | bitrig*) - if test -f /usr/libexec/ld.so; then - hardcode_direct_CXX=yes - hardcode_shlibpath_var_CXX=no - hardcode_direct_absolute_CXX=yes - 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__`"; 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=func_echo_all - else - ld_shlibs_CXX=no - fi - ;; - - osf3* | 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. - case $host in - osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - cxx*) - case $host in - osf3*) - 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" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' - ;; - *) - 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" && func_echo_all "-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' - ;; - esac - - 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=`func_echo_all "$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; func_echo_all "$list"' - ;; - *) - if test yes,no = "$GXX,$with_gnu_ld"; then - allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' - case $host in - osf3*) - archive_cmds_CXX='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - ;; - *) - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - ;; - esac - - 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 -v "^Configured with:" | $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 - ;; - - 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* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - archive_cmds_need_lc_CXX=yes - no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G$allow_undefined_flag -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 $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 compiler driver will combine and reorder linker options, - # but understands '-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' - ;; - esac - link_all_deplibs_CXX=yes - - output_verbose_link_cmd='func_echo_all' - - # 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 yes,no = "$GXX,$with_gnu_ld"; then - no_undefined_flag_CXX=' $wl-z ${wl}defs' - if $CC --version | $GREP -v '^2\.7' > /dev/null; then - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $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 $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -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 -v "^Configured with:" | $GREP "\-L"' - else - # g++ 2.7 appears to require '-G' NOT '-shared' on this - # platform. - archive_cmds_CXX='$CC -G -nostdlib $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 $wl-h $wl$soname -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 -v "^Configured with:" | $GREP "\-L"' - fi - - hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir' - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - whole_archive_flag_spec_CXX='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag_CXX='$wl-z,text' - archive_cmds_need_lc_CXX=no - hardcode_shlibpath_var_CXX=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We CANNOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag_CXX='$wl-z,text' - allow_undefined_flag_CXX='$wl-z,nodefs' - archive_cmds_need_lc_CXX=no - hardcode_shlibpath_var_CXX=no - hardcode_libdir_flag_spec_CXX='$wl-R,$libdir' - hardcode_libdir_separator_CXX=':' - link_all_deplibs_CXX=yes - export_dynamic_flag_spec_CXX='$wl-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ - '"$old_archive_cmds_CXX" - reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ - '"$reload_cmds_CXX" - ;; - *) - archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - 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 - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 -$as_echo "$ld_shlibs_CXX" >&6; } - test no = "$ld_shlibs_CXX" && can_build_shared=no - - GCC_CXX=$GXX - LD_CXX=$LD - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - # 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= - -cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF - - -_lt_libdeps_save_CFLAGS=$CFLAGS -case "$CC $CFLAGS " in #( -*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; -*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; -*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; -esac - -if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; 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 - - for p in `eval "$output_verbose_link_cmd"`; do - case $prev$p in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test x-L = "$p" || - test x-R = "$p"; then - prev=$p - continue - fi - - # Expand the sysroot to ease extracting the directories later. - if test -z "$prev"; then - case $p in - -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; - -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; - -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; - esac - fi - case $p in - =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; - esac - if test no = "$pre_test_object_deps_done"; then - case $prev 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 - prev= - ;; - - *.lto.$objext) ;; # Ignore GCC LTO objects - *.$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 no = "$pre_test_object_deps_done"; 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 -CFLAGS=$_lt_libdeps_save_CFLAGS - -# PORTME: override above test on systems where it is broken -case $host_os in -interix[3-9]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - predep_objects_CXX= - postdep_objects_CXX= - postdeps_CXX= - ;; -esac - - -case " $postdeps_CXX " in -*" -lc "*) archive_cmds_need_lc_CXX=no ;; -esac - compiler_lib_search_dirs_CXX= -if test -n "${compiler_lib_search_path_CXX}"; then - compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | $SED -e 's! -L! !g' -e 's!^ !!'` -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lt_prog_compiler_wl_CXX= -lt_prog_compiler_pic_CXX= -lt_prog_compiler_static_CXX= - - - # C++ specific cases for pic, static, wl, etc. - if test yes = "$GXX"; 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 ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_CXX='-Bstatic' - fi - lt_prog_compiler_pic_CXX='-fPIC' - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic_CXX='-fPIC' - ;; - m68k) - # 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' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # 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). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic_CXX='-DDLL_EXPORT' - case $host_os in - os2*) - lt_prog_compiler_static_CXX='$wl-static' - ;; - esac - ;; - 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= - ;; - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static_CXX= - ;; - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic_CXX=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - ;; - *) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - esac - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic_CXX='-fPIC -shared' - ;; - *) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - esac - else - case $host_os in - aix[4-9]*) - # All AIX code is PIC. - if test ia64 = "$host_cpu"; 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_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 - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # 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' - ;; - 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* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='$wl-a ${wl}archive' - if test ia64 != "$host_cpu"; then - lt_prog_compiler_pic_CXX='+Z' - fi - ;; - aCC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='$wl-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic_CXX='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - interix*) - # This is c89, which is MS Visual C++ (no shared libs) - # Anyone wants to do a port? - ;; - 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* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - KCC*) - # KAI C++ Compiler - lt_prog_compiler_wl_CXX='--backend -Wl,' - lt_prog_compiler_pic_CXX='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64, which still supported -KPIC. - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-static' - ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-fPIC' - lt_prog_compiler_static_CXX='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-fpic' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - 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' - ;; - xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) - # IBM XL 8.0, 9.0 on PPC and BlueGene - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-qpic' - lt_prog_compiler_static_CXX='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - lt_prog_compiler_wl_CXX='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - lt_prog_compiler_pic_CXX='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd*) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic_CXX='-fPIC -shared' - ;; - 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*) - ;; - solaris*) - case $cc_basename in - CC* | sunCC*) - # 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 - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - lt_prog_compiler_pic_CXX='-KPIC' - ;; - *) - ;; - esac - ;; - vxworks*) - ;; - *) - lt_prog_compiler_can_build_shared_CXX=no - ;; - esac - fi - -case $host_os in - # For platforms that 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 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -if ${lt_cv_prog_compiler_pic_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } -lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } -if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works_CXX=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" ## exclude from sc_useless_quotes_in_assignment - # 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}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works_CXX=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } - -if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; 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 - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works_CXX=no - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker 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 "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works_CXX=yes - fi - else - lt_cv_prog_compiler_static_works_CXX=yes - fi - fi - $RM -r conftest* - LDFLAGS=$save_LDFLAGS - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } - -if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then - : -else - lt_prog_compiler_static_CXX= -fi - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o_CXX=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$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}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o_CXX=yes - fi - fi - chmod u+w . 2>&5 - $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 .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o_CXX=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$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}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o_CXX=yes - fi - fi - chmod u+w . 2>&5 - $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 .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } - - - - -hard_links=nottested -if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test no = "$hard_links"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 -$as_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 - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - case $host_os in - aix[4-9]*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to GNU nm, but means don't demangle to AIX nm. - # Without the "-l" option, or with the "-B" option, AIX nm treats - # weak defined symbols like other global defined symbols, whereas - # GNU nm marks them as "W". - # While the 'weak' keyword is ignored in the Export File, we need - # it in the Import File for the 'aix-soname' feature, so we have - # to replace the "-B" option with "-P" for AIX 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") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds_CXX='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - export_symbols_cmds_CXX=$ltdll_cmds - ;; - cygwin* | mingw* | cegcc*) - case $cc_basename in - cl*) - exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - ;; - *) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' - ;; - esac - ;; - *) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 -$as_echo "$ld_shlibs_CXX" >&6; } -test no = "$ld_shlibs_CXX" && can_build_shared=no - -with_gnu_ld_CXX=$with_gnu_ld - - - - - - -# -# 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 yes,yes = "$GCC,$enable_shared"; 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. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl_CXX - pic_flag=$lt_prog_compiler_pic_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\":${as_lineno-$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=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - lt_cv_archive_cmds_need_lc_CXX=no - else - lt_cv_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* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } - archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&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" -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 # correct to gnu/linux during the next big refactor - 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' - ;; - -aix[4-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test ia64 = "$host_cpu"; 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 - # Using Import Files as archive members, it is possible to support - # filename-based versioning of shared library archives on AIX. While - # this would work for both with and without runtime linking, it will - # prevent static linking of such archives. So we do filename-based - # shared library versioning with .so extension only, which is used - # when both runtime linking and shared linking is enabled. - # Unfortunately, runtime linking may impact performance, so we do - # not want this to be the default eventually. Also, we use the - # versioned .so libs for executables only if there is the -brtl - # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. - # To allow for filename-based versioning support, we need to create - # libNAME.so.V as an archive file, containing: - # *) an Import File, referring to the versioned filename of the - # archive as well as the shared archive member, telling the - # bitwidth (32 or 64) of that shared object, and providing the - # list of exported symbols of that shared object, eventually - # decorated with the 'weak' keyword - # *) the shared object with the F_LOADONLY flag set, to really avoid - # it being seen by the linker. - # At run time we better use the real file rather than another symlink, - # but for link time we create the symlink libNAME.so -> libNAME.so.V - - case $with_aix_soname,$aix_use_runtimelinking in - # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - aix,yes) # traditional libtool - dynamic_linker='AIX unversionable lib.so' - # 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' - ;; - aix,no) # traditional AIX only - dynamic_linker='AIX lib.a(lib.so.V)' - # 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' - ;; - svr4,*) # full svr4 only - dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,yes) # both, prefer svr4 - dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # unpreferred sharedlib libNAME.a needs extra handling - postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' - postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,no) # both, prefer aix - dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling - postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' - postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' - ;; - esac - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - m68k) - 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=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $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' - ;; - esac - ;; - -beos*) - library_names_spec='$libname$shared_ext' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux # correct to gnu/linux during the next big refactor - 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* | cegcc*) - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - 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~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - 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' - - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - ;; - 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 - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - library_names_spec='$libname.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec=$LIB - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH. - 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 - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # 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 - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # 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$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`' - - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux # correct to gnu/linux during the next big refactor - 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 - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[23].*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - 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 - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - 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=LIBRARY_PATH - shlibpath_overrides_runpath=no - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - 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 32 = "$HPUX_IA64_MODE"; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - sys_lib_dlsearch_path_spec=/usr/lib/hpux32 - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - sys_lib_dlsearch_path_spec=/usr/lib/hpux64 - fi - ;; - 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' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - 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' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test yes = "$lt_cv_prog_gnu_ld"; then - version_type=linux # correct to gnu/linux during the next big refactor - 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 - ;; - -linux*android*) - version_type=none # Android doesn't support versioned libraries. - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext' - soname_spec='$libname$release$shared_ext' - finish_cmds= - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - - # 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 - - dynamic_linker='Android linker' - # Don't embed -rpath directories since the linker doesn't support them. - hardcode_libdir_flag_spec_CXX='-L$libdir' - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - 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 - - # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # 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 - - # Add ABI-specific directories to the system library path. - sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" - - # Ideally, we could use ldconfig to report *all* directores which are - # searched for libraries, however this is still not possible. Aside from not - # being certain /sbin/ldconfig is available, command - # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, - # even though it is searched at run-time. Try to do the best guess by - # appending ld.so.conf contents (and includes) to the search path. - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $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' - ;; - -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 # correct to gnu/linux during the next big refactor - 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=qnx - 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='ldqnx.so' - ;; - -openbsd* | bitrig*) - version_type=sunos - sys_lib_dlsearch_path_spec=/usr/lib - need_lib_prefix=no - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - need_version=no - else - need_version=yes - fi - 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 - shlibpath_overrides_runpath=yes - ;; - -os2*) - libname_spec='$name' - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - # OS/2 can only load a DLL with a base name of 8 characters or less. - soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; - v=$($ECHO $release$versuffix | tr -d .-); - n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); - $ECHO $n$v`$shared_ext' - library_names_spec='${libname}_dll.$libext' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=BEGINLIBPATH - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - 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~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - ;; - -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 - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux # correct to gnu/linux during the next big refactor - 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 yes = "$with_gnu_ld"; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux # correct to gnu/linux during the next big refactor - 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 - 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 # correct to gnu/linux during the next big refactor - 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 - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=sco - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test yes = "$with_gnu_ld"; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux # correct to gnu/linux during the next big refactor - 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test no = "$dynamic_linker" && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test yes = "$GCC"; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then - sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec -fi - -if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then - sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec -fi - -# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... -configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec - -# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code -func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" - -# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool -configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } -hardcode_action_CXX= -if test -n "$hardcode_libdir_flag_spec_CXX" || - test -n "$runpath_var_CXX" || - test yes = "$hardcode_automatic_CXX"; then - - # We can hardcode non-existent directories. - if test no != "$hardcode_direct_CXX" && - # 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 no != "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" && - test no != "$hardcode_minus_L_CXX"; 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 -$as_echo "$hardcode_action_CXX" >&6; } - -if test relink = "$hardcode_action_CXX" || - test yes = "$inherit_rpath_CXX"; then - # Fast installation is not supported - enable_fast_install=no -elif test yes = "$shlibpath_overrides_runpath" || - test no = "$enable_shared"; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - - fi # test -n "$compiler" - - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - 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 -fi # test yes != "$_lt_caught_CXX_error" - -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 - - - - - - - - - - - - - - - - ac_config_commands="$ac_config_commands libtool" - - - - -# Only expand once: - - - - -# Test for 64-bit build. -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5 -$as_echo_n "checking size of size_t... " >&6; } -if ${ac_cv_sizeof_size_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_size_t" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (size_t) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_size_t=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5 -$as_echo "$ac_cv_sizeof_size_t" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t -_ACEOF - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler vendor" >&5 -$as_echo_n "checking for C compiler vendor... " >&6; } -if ${ax_cv_c_compiler_vendor+:} false; then : - $as_echo_n "(cached) " >&6 -else - # note: don't check for gcc first since some other compilers define __GNUC__ - vendors="intel: __ICC,__ECC,__INTEL_COMPILER - ibm: __xlc__,__xlC__,__IBMC__,__IBMCPP__ - pathscale: __PATHCC__,__PATHSCALE__ - clang: __clang__ - cray: _CRAYC - fujitsu: __FUJITSU - sdcc: SDCC, __SDCC - gnu: __GNUC__ - sun: __SUNPRO_C,__SUNPRO_CC - hp: __HP_cc,__HP_aCC - dec: __DECC,__DECCXX,__DECC_VER,__DECCXX_VER - borland: __BORLANDC__,__CODEGEARC__,__TURBOC__ - comeau: __COMO__ - kai: __KCC - lcc: __LCC__ - sgi: __sgi,sgi - microsoft: _MSC_VER - metrowerks: __MWERKS__ - watcom: __WATCOMC__ - portland: __PGI - tcc: __TINYC__ - unknown: UNKNOWN" - for ventest in $vendors; do - case $ventest in - *:) vendor=$ventest; continue ;; - *) vencpp="defined("`echo $ventest | sed 's/,/) || defined(/g'`")" ;; - esac - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - #if !($vencpp) - thisisanerror; - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - break -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done - ax_cv_c_compiler_vendor=`echo $vendor | cut -d: -f1` - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_c_compiler_vendor" >&5 -$as_echo "$ax_cv_c_compiler_vendor" >&6; } - - - - - - -# Check whether --enable-portable-binary was given. -if test "${enable_portable_binary+set}" = set; then : - enableval=$enable_portable_binary; acx_maxopt_portable=$enableval -else - acx_maxopt_portable=no -fi - - -# Try to determine "good" native compiler flags if none specified via CFLAGS -if test "$ac_test_CFLAGS" != "set"; then - CFLAGS="" - case $ax_cv_c_compiler_vendor in - dec) CFLAGS="-newc -w0 -O5 -ansi_alias -ansi_args -fp_reorder -tune host" - if test "x$acx_maxopt_portable" = xno; then - CFLAGS="$CFLAGS -arch host" - fi;; - - sun) CFLAGS="-native -fast -xO5 -dalign" - if test "x$acx_maxopt_portable" = xyes; then - CFLAGS="$CFLAGS -xarch=generic" - fi;; - - hp) CFLAGS="+Oall +Optrs_ansi +DSnative" - if test "x$acx_maxopt_portable" = xyes; then - CFLAGS="$CFLAGS +DAportable" - fi;; - - ibm) if test "x$acx_maxopt_portable" = xno; then - xlc_opt="-qarch=auto -qtune=auto" - else - xlc_opt="-qtune=auto" - fi - as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$xlc_opt" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $xlc_opt" >&5 -$as_echo_n "checking whether C compiler accepts $xlc_opt... " >&6; } -if eval \${$as_CACHEVAR+:} false; then : - $as_echo_n "(cached) " >&6 -else - - ax_check_save_flags=$CFLAGS - CFLAGS="$CFLAGS $xlc_opt" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$as_CACHEVAR=yes" -else - eval "$as_CACHEVAR=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - CFLAGS=$ax_check_save_flags -fi -eval ac_res=\$$as_CACHEVAR - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : - CFLAGS="-O3 -qansialias -w $xlc_opt" -else - CFLAGS="-O3 -qansialias -w" - echo "******************************************************" - echo "* You seem to have the IBM C compiler. It is *" - echo "* recommended for best performance that you use: *" - echo "* *" - echo "* CFLAGS=-O3 -qarch=xxx -qtune=xxx -qansialias -w *" - echo "* ^^^ ^^^ *" - echo "* where xxx is pwr2, pwr3, 604, or whatever kind of *" - echo "* CPU you have. (Set the CFLAGS environment var. *" - echo "* and re-run configure.) For more info, man cc. *" - echo "******************************************************" -fi - - ;; - - intel) CFLAGS="-O3 -ansi_alias" - if test "x$acx_maxopt_portable" = xno; then - icc_archflag=unknown - icc_flags="" - case $host_cpu in - i686*|x86_64*) - # icc accepts gcc assembly syntax, so these should work: - -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 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 0 output" >&5 -$as_echo_n "checking for x86 cpuid 0 output... " >&6; } -if ${ax_cv_gcc_x86_cpuid_0+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ax_cv_gcc_x86_cpuid_0=unknown -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ - - int op = 0, level = 0, eax, ebx, ecx, edx; - FILE *f; - __asm__ __volatile__ ("xchg %%ebx, %1\n" - "cpuid\n" - "xchg %%ebx, %1\n" - : "=a" (eax), "=r" (ebx), "=c" (ecx), "=d" (edx) - : "a" (op), "2" (level)); - - f = fopen("conftest_cpuid", "w"); if (!f) return 1; - fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx); - fclose(f); - return 0; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ax_cv_gcc_x86_cpuid_0=`cat conftest_cpuid`; rm -f conftest_cpuid -else - ax_cv_gcc_x86_cpuid_0=unknown; rm -f conftest_cpuid -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0" >&5 -$as_echo "$ax_cv_gcc_x86_cpuid_0" >&6; } -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 - - - - -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 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 1 output" >&5 -$as_echo_n "checking for x86 cpuid 1 output... " >&6; } -if ${ax_cv_gcc_x86_cpuid_1+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ax_cv_gcc_x86_cpuid_1=unknown -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ - - int op = 1, level = 0, eax, ebx, ecx, edx; - FILE *f; - __asm__ __volatile__ ("xchg %%ebx, %1\n" - "cpuid\n" - "xchg %%ebx, %1\n" - : "=a" (eax), "=r" (ebx), "=c" (ecx), "=d" (edx) - : "a" (op), "2" (level)); - - f = fopen("conftest_cpuid", "w"); if (!f) return 1; - fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx); - fclose(f); - return 0; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ax_cv_gcc_x86_cpuid_1=`cat conftest_cpuid`; rm -f conftest_cpuid -else - ax_cv_gcc_x86_cpuid_1=unknown; rm -f conftest_cpuid -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_1" >&5 -$as_echo "$ax_cv_gcc_x86_cpuid_1" >&6; } -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 - - - - case $ax_cv_gcc_x86_cpuid_0 in # see AX_GCC_ARCHFLAG - *:756e6547:6c65746e:49656e69) # Intel - case $ax_cv_gcc_x86_cpuid_1 in - *0?6[78ab]?:*:*:*|?6[78ab]?:*:*:*|6[78ab]?:*:*:*) icc_flags="-xK" ;; - *0?6[9d]?:*:*:*|?6[9d]?:*:*:*|6[9d]?:*:*:*|*1?65?:*:*:*) icc_flags="-xSSE2 -xB -xK" ;; - *0?6e?:*:*:*|?6e?:*:*:*|6e?:*:*:*) icc_flags="-xSSE3 -xP -xO -xB -xK" ;; - *0?6f?:*:*:*|?6f?:*:*:*|6f?:*:*:*|*1?66?:*:*:*) icc_flags="-xSSSE3 -xT -xB -xK" ;; - *1?6[7d]?:*:*:*) icc_flags="-xSSE4.1 -xS -xT -xB -xK" ;; - *1?6[aef]?:*:*:*|*2?6[5cef]?:*:*:*) icc_flags="-xSSE4.2 -xS -xT -xB -xK" ;; - *2?6[ad]?:*:*:*) icc_flags="-xAVX -SSE4.2 -xS -xT -xB -xK" ;; - *3?6[ae]?:*:*:*) icc_flags="-xCORE-AVX-I -xAVX -SSE4.2 -xS -xT -xB -xK" ;; - *3?6[cf]?:*:*:*|*4?6[56]?:*:*:*) icc_flags="-xCORE-AVX2 -xCORE-AVX-I -xAVX -SSE4.2 -xS -xT -xB -xK" ;; - *000?f[346]?:*:*:*|?f[346]?:*:*:*|f[346]?:*:*:*) icc_flags="-xSSE3 -xP -xO -xN -xW -xK" ;; - *00??f??:*:*:*|??f??:*:*:*|?f??:*:*:*|f??:*:*:*) icc_flags="-xSSE2 -xN -xW -xK" ;; - esac ;; - esac ;; - esac - if test "x$icc_flags" != x; then - for flag in $icc_flags; do - as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$flag" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 -$as_echo_n "checking whether C compiler accepts $flag... " >&6; } -if eval \${$as_CACHEVAR+:} false; then : - $as_echo_n "(cached) " >&6 -else - - ax_check_save_flags=$CFLAGS - CFLAGS="$CFLAGS $flag" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$as_CACHEVAR=yes" -else - eval "$as_CACHEVAR=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - CFLAGS=$ax_check_save_flags -fi -eval ac_res=\$$as_CACHEVAR - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : - icc_archflag=$flag; break -else - : -fi - - done - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for icc architecture flag" >&5 -$as_echo_n "checking for icc architecture flag... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $icc_archflag" >&5 -$as_echo "$icc_archflag" >&6; } - if test "x$icc_archflag" != xunknown; then - CFLAGS="$CFLAGS $icc_archflag" - fi - fi - ;; - - gnu) - # default optimization flags for gcc on all systems - CFLAGS="-O3 -fomit-frame-pointer" - - # -malign-double for x86 systems - # libffi local change -- don't align double, as it changes the ABI - # AX_CHECK_COMPILE_FLAG(-malign-double, CFLAGS="$CFLAGS -malign-double") - - # -fstrict-aliasing for gcc-2.95+ - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fstrict-aliasing" >&5 -$as_echo_n "checking whether C compiler accepts -fstrict-aliasing... " >&6; } -if ${ax_cv_check_cflags___fstrict_aliasing+:} false; then : - $as_echo_n "(cached) " >&6 -else - - ax_check_save_flags=$CFLAGS - CFLAGS="$CFLAGS -fstrict-aliasing" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ax_cv_check_cflags___fstrict_aliasing=yes -else - ax_cv_check_cflags___fstrict_aliasing=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - CFLAGS=$ax_check_save_flags -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fstrict_aliasing" >&5 -$as_echo "$ax_cv_check_cflags___fstrict_aliasing" >&6; } -if test "x$ax_cv_check_cflags___fstrict_aliasing" = xyes; then : - CFLAGS="$CFLAGS -fstrict-aliasing" -else - : -fi - - - # note that we enable "unsafe" fp optimization with other compilers, too - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -ffast-math" >&5 -$as_echo_n "checking whether C compiler accepts -ffast-math... " >&6; } -if ${ax_cv_check_cflags___ffast_math+:} false; then : - $as_echo_n "(cached) " >&6 -else - - ax_check_save_flags=$CFLAGS - CFLAGS="$CFLAGS -ffast-math" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ax_cv_check_cflags___ffast_math=yes -else - ax_cv_check_cflags___ffast_math=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - CFLAGS=$ax_check_save_flags -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___ffast_math" >&5 -$as_echo "$ax_cv_check_cflags___ffast_math" >&6; } -if test "x$ax_cv_check_cflags___ffast_math" = xyes; then : - CFLAGS="$CFLAGS -ffast-math" -else - : -fi - - - - - - - - -# Check whether --with-gcc-arch was given. -if test "${with_gcc_arch+set}" = set; then : - withval=$with_gcc_arch; ax_gcc_arch=$withval -else - ax_gcc_arch=yes -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcc architecture flag" >&5 -$as_echo_n "checking for gcc architecture flag... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 -$as_echo "" >&6; } -if ${ax_cv_gcc_archflag+:} false; then : - $as_echo_n "(cached) " >&6 -else - -ax_cv_gcc_archflag="unknown" - -if test "$GCC" = yes; then - -if test "x$ax_gcc_arch" = xyes; then -ax_gcc_arch="" -if test "$cross_compiling" = no; then -case $host_cpu in - i[3456]86*|x86_64*|amd64*) # use cpuid codes - -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 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 0 output" >&5 -$as_echo_n "checking for x86 cpuid 0 output... " >&6; } -if ${ax_cv_gcc_x86_cpuid_0+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ax_cv_gcc_x86_cpuid_0=unknown -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ - - int op = 0, level = 0, eax, ebx, ecx, edx; - FILE *f; - __asm__ __volatile__ ("xchg %%ebx, %1\n" - "cpuid\n" - "xchg %%ebx, %1\n" - : "=a" (eax), "=r" (ebx), "=c" (ecx), "=d" (edx) - : "a" (op), "2" (level)); - - f = fopen("conftest_cpuid", "w"); if (!f) return 1; - fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx); - fclose(f); - return 0; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ax_cv_gcc_x86_cpuid_0=`cat conftest_cpuid`; rm -f conftest_cpuid -else - ax_cv_gcc_x86_cpuid_0=unknown; rm -f conftest_cpuid -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0" >&5 -$as_echo "$ax_cv_gcc_x86_cpuid_0" >&6; } -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 - - - - -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 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 1 output" >&5 -$as_echo_n "checking for x86 cpuid 1 output... " >&6; } -if ${ax_cv_gcc_x86_cpuid_1+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ax_cv_gcc_x86_cpuid_1=unknown -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ - - int op = 1, level = 0, eax, ebx, ecx, edx; - FILE *f; - __asm__ __volatile__ ("xchg %%ebx, %1\n" - "cpuid\n" - "xchg %%ebx, %1\n" - : "=a" (eax), "=r" (ebx), "=c" (ecx), "=d" (edx) - : "a" (op), "2" (level)); - - f = fopen("conftest_cpuid", "w"); if (!f) return 1; - fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx); - fclose(f); - return 0; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ax_cv_gcc_x86_cpuid_1=`cat conftest_cpuid`; rm -f conftest_cpuid -else - ax_cv_gcc_x86_cpuid_1=unknown; rm -f conftest_cpuid -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_1" >&5 -$as_echo "$ax_cv_gcc_x86_cpuid_1" >&6; } -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 - - - - case $ax_cv_gcc_x86_cpuid_0 in - *:756e6547:6c65746e:49656e69) # Intel - case $ax_cv_gcc_x86_cpuid_1 in - *5[4578]?:*:*:*) ax_gcc_arch="pentium-mmx pentium" ;; - *5[123]?:*:*:*) ax_gcc_arch=pentium ;; - *0?61?:*:*:*|?61?:*:*:*|61?:*:*:*) ax_gcc_arch=pentiumpro ;; - *0?6[356]?:*:*:*|?6[356]?:*:*:*|6[356]?:*:*:*) ax_gcc_arch="pentium2 pentiumpro" ;; - *0?6[78ab]?:*:*:*|?6[78ab]?:*:*:*|6[78ab]?:*:*:*) ax_gcc_arch="pentium3 pentiumpro" ;; - *0?6[9d]?:*:*:*|?6[9d]?:*:*:*|6[9d]?:*:*:*|*1?65?:*:*:*) ax_gcc_arch="pentium-m pentium3 pentiumpro" ;; - *0?6e?:*:*:*|?6e?:*:*:*|6e?:*:*:*) ax_gcc_arch="yonah pentium-m pentium3 pentiumpro" ;; - *0?6f?:*:*:*|?6f?:*:*:*|6f?:*:*:*|*1?66?:*:*:*) ax_gcc_arch="core2 pentium-m pentium3 pentiumpro" ;; - *1?6[7d]?:*:*:*) ax_gcc_arch="penryn core2 pentium-m pentium3 pentiumpro" ;; - *1?6[aef]?:*:*:*|*2?6e?:*:*:*) ax_gcc_arch="nehalem corei7 core2 pentium-m pentium3 pentiumpro" ;; - *2?6[5cf]?:*:*:*) ax_gcc_arch="westmere corei7 core2 pentium-m pentium3 pentiumpro" ;; - *2?6[ad]?:*:*:*) ax_gcc_arch="sandybridge corei7-avx corei7 core2 pentium-m pentium3 pentiumpro" ;; - *3?6[ae]?:*:*:*) ax_gcc_arch="ivybridge core-avx-i corei7-avx corei7 core2 pentium-m pentium3 pentiumpro" ;; - *3?6[cf]?:*:*:*|*4?6[56]?:*:*:*) ax_gcc_arch="haswell core-avx2 core-avx-i corei7-avx corei7 core2 pentium-m pentium3 pentiumpro" ;; - *3?6d?:*:*:*|*4?6[7f]?:*:*:*|*5?66?:*:*:*) ax_gcc_arch="broadwell core-avx2 core-avx-i corei7-avx corei7 core2 pentium-m pentium3 pentiumpro" ;; - *1?6c?:*:*:*|*2?6[67]?:*:*:*|*3?6[56]?:*:*:*) ax_gcc_arch="bonnell atom core2 pentium-m pentium3 pentiumpro" ;; - *3?67?:*:*:*|*[45]?6[ad]?:*:*:*) ax_gcc_arch="silvermont atom core2 pentium-m pentium3 pentiumpro" ;; - *000?f[012]?:*:*:*|?f[012]?:*:*:*|f[012]?:*:*:*) ax_gcc_arch="pentium4 pentiumpro" ;; - *000?f[346]?:*:*:*|?f[346]?:*:*:*|f[346]?:*:*:*) ax_gcc_arch="nocona prescott pentium4 pentiumpro" ;; - # fallback - *5??:*:*:*) ax_gcc_arch=pentium ;; - *??6??:*:*:*) ax_gcc_arch="core2 pentiumpro" ;; - *6??:*:*:*) ax_gcc_arch=pentiumpro ;; - *00??f??:*:*:*|??f??:*:*:*|?f??:*:*:*|f??:*:*:*) ax_gcc_arch="pentium4 pentiumpro" ;; - esac ;; - *:68747541:444d4163:69746e65) # AMD - case $ax_cv_gcc_x86_cpuid_1 in - *5[67]?:*:*:*) ax_gcc_arch=k6 ;; - *5[8]?:*:*:*) ax_gcc_arch="k6-2 k6" ;; - *5[9d]?:*:*:*) ax_gcc_arch="k6-3 k6" ;; - *6[12]?:*:*:*) ax_gcc_arch="athlon k7" ;; - *6[34]?:*:*:*) ax_gcc_arch="athlon-tbird k7" ;; - *6[678a]?:*:*:*) ax_gcc_arch="athlon-xp athlon-4 athlon k7" ;; - *000?f[4578bcef]?:*:*:*|?f[4578bcef]?:*:*:*|f[4578bcef]?:*:*:*|*001?f[4578bcf]?:*:*:*|1?f[4578bcf]?:*:*:*) ax_gcc_arch="athlon64 k8" ;; - *002?f[13457bcf]?:*:*:*|2?f[13457bcf]?:*:*:*|*004?f[138bcf]?:*:*:*|4?f[138bcf]?:*:*:*|*005?f[df]?:*:*:*|5?f[df]?:*:*:*|*006?f[8bcf]?:*:*:*|6?f[8bcf]?:*:*:*|*007?f[cf]?:*:*:*|7?f[cf]?:*:*:*|*00c?f1?:*:*:*|c?f1?:*:*:*|*020?f3?:*:*:*|20?f3?:*:*:*) ax_gcc_arch="athlon64-sse3 k8-sse3 athlon64 k8" ;; - *010?f[245689a]?:*:*:*|10?f[245689a]?:*:*:*|*030?f1?:*:*:*|30?f1?:*:*:*) ax_gcc_arch="barcelona amdfam10 k8" ;; - *050?f[12]?:*:*:*|50?f[12]?:*:*:*) ax_gcc_arch="btver1 amdfam10 k8" ;; - *060?f1?:*:*:*|60?f1?:*:*:*) ax_gcc_arch="bdver1 amdfam10 k8" ;; - *060?f2?:*:*:*|60?f2?:*:*:*|*061?f[03]?:*:*:*|61?f[03]?:*:*:*) ax_gcc_arch="bdver2 bdver1 amdfam10 k8" ;; - *063?f0?:*:*:*|63?f0?:*:*:*) ax_gcc_arch="bdver3 bdver2 bdver1 amdfam10 k8" ;; - *07[03]?f0?:*:*:*|7[03]?f0?:*:*:*) ax_gcc_arch="btver2 btver1 amdfam10 k8" ;; - # fallback - *0[13]??f??:*:*:*|[13]??f??:*:*:*) ax_gcc_arch="barcelona amdfam10 k8" ;; - *020?f??:*:*:*|20?f??:*:*:*) ax_gcc_arch="athlon64-sse3 k8-sse3 athlon64 k8" ;; - *05??f??:*:*:*|5??f??:*:*:*) ax_gcc_arch="btver1 amdfam10 k8" ;; - *060?f??:*:*:*|60?f??:*:*:*) ax_gcc_arch="bdver1 amdfam10 k8" ;; - *061?f??:*:*:*|61?f??:*:*:*) ax_gcc_arch="bdver2 bdver1 amdfam10 k8" ;; - *06??f??:*:*:*|6??f??:*:*:*) ax_gcc_arch="bdver3 bdver2 bdver1 amdfam10 k8" ;; - *070?f??:*:*:*|70?f??:*:*:*) ax_gcc_arch="btver2 btver1 amdfam10 k8" ;; - *???f??:*:*:*) ax_gcc_arch="amdfam10 k8" ;; - esac ;; - *:746e6543:736c7561:48727561) # IDT / VIA (Centaur) - case $ax_cv_gcc_x86_cpuid_1 in - *54?:*:*:*) ax_gcc_arch=winchip-c6 ;; - *5[89]?:*:*:*) ax_gcc_arch=winchip2 ;; - *66?:*:*:*) ax_gcc_arch=winchip2 ;; - *6[78]?:*:*:*) ax_gcc_arch=c3 ;; - *6[9adf]?:*:*:*) ax_gcc_arch="c3-2 c3" ;; - esac ;; - esac - if test x"$ax_gcc_arch" = x; then # fallback - case $host_cpu in - i586*) ax_gcc_arch=pentium ;; - i686*) ax_gcc_arch=pentiumpro ;; - esac - fi - ;; - - sparc*) - # Extract the first word of "prtdiag", so it can be a program name with args. -set dummy prtdiag; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_PRTDIAG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $PRTDIAG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PRTDIAG="$PRTDIAG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/platform/`uname -i`/sbin/:/usr/platform/`uname -m`/sbin/" -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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_PRTDIAG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_PRTDIAG" && ac_cv_path_PRTDIAG="prtdiag" - ;; -esac -fi -PRTDIAG=$ac_cv_path_PRTDIAG -if test -n "$PRTDIAG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PRTDIAG" >&5 -$as_echo "$PRTDIAG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - cputype=`(((grep cpu /proc/cpuinfo | cut -d: -f2) ; ($PRTDIAG -v |grep -i sparc) ; grep -i cpu /var/run/dmesg.boot ) | head -n 1) 2> /dev/null` - cputype=`echo "$cputype" | tr -d ' -' | $SED 's/SPARCIIi/SPARCII/' |tr $as_cr_LETTERS $as_cr_letters` - case $cputype in - *ultrasparciv*) ax_gcc_arch="ultrasparc4 ultrasparc3 ultrasparc v9" ;; - *ultrasparciii*) ax_gcc_arch="ultrasparc3 ultrasparc v9" ;; - *ultrasparc*) ax_gcc_arch="ultrasparc v9" ;; - *supersparc*|*tms390z5[05]*) ax_gcc_arch="supersparc v8" ;; - *hypersparc*|*rt62[056]*) ax_gcc_arch="hypersparc v8" ;; - *cypress*) ax_gcc_arch=cypress ;; - esac ;; - - alphaev5) ax_gcc_arch=ev5 ;; - alphaev56) ax_gcc_arch=ev56 ;; - alphapca56) ax_gcc_arch="pca56 ev56" ;; - alphapca57) ax_gcc_arch="pca57 pca56 ev56" ;; - alphaev6) ax_gcc_arch=ev6 ;; - alphaev67) ax_gcc_arch=ev67 ;; - alphaev68) ax_gcc_arch="ev68 ev67" ;; - alphaev69) ax_gcc_arch="ev69 ev68 ev67" ;; - alphaev7) ax_gcc_arch="ev7 ev69 ev68 ev67" ;; - alphaev79) ax_gcc_arch="ev79 ev7 ev69 ev68 ev67" ;; - - powerpc*) - cputype=`((grep cpu /proc/cpuinfo | head -n 1 | cut -d: -f2 | cut -d, -f1 | $SED 's/ //g') ; /usr/bin/machine ; /bin/machine; grep CPU /var/run/dmesg.boot | head -n 1 | cut -d" " -f2) 2> /dev/null` - cputype=`echo $cputype | $SED -e 's/ppc//g;s/ *//g'` - case $cputype in - *750*) ax_gcc_arch="750 G3" ;; - *740[0-9]*) ax_gcc_arch="$cputype 7400 G4" ;; - *74[4-5][0-9]*) ax_gcc_arch="$cputype 7450 G4" ;; - *74[0-9][0-9]*) ax_gcc_arch="$cputype G4" ;; - *970*) ax_gcc_arch="970 G5 power4";; - *POWER4*|*power4*|*gq*) ax_gcc_arch="power4 970";; - *POWER5*|*power5*|*gr*|*gs*) ax_gcc_arch="power5 power4 970";; - 603ev|8240) ax_gcc_arch="$cputype 603e 603";; - *POWER7*) ax_gcc_arch="power7";; - *POWER8*) ax_gcc_arch="power8";; - *POWER9*) ax_gcc_arch="power9";; - *POWER10*) ax_gcc_arch="power10";; - *) ax_gcc_arch=$cputype ;; - esac - ax_gcc_arch="$ax_gcc_arch powerpc" - ;; - aarch64) - cpuimpl=`grep 'CPU implementer' /proc/cpuinfo 2> /dev/null | cut -d: -f2 | tr -d " " | head -n 1` - cpuarch=`grep 'CPU architecture' /proc/cpuinfo 2> /dev/null | cut -d: -f2 | tr -d " " | head -n 1` - cpuvar=`grep 'CPU variant' /proc/cpuinfo 2> /dev/null | cut -d: -f2 | tr -d " " | head -n 1` - case $cpuimpl in - 0x42) case $cpuarch in - 8) case $cpuvar in - 0x0) ax_gcc_arch="thunderx2t99 vulcan armv8.1-a armv8-a+lse armv8-a native" ;; - esac - ;; - esac - ;; - 0x43) case $cpuarch in - 8) case $cpuvar in - 0x0) ax_gcc_arch="thunderx armv8-a native" ;; - 0x1) ax_gcc_arch="thunderx+lse armv8.1-a armv8-a+lse armv8-a native" ;; - esac - ;; - esac - ;; - esac - ;; -esac -fi # not cross-compiling -fi # guess arch - -if test "x$ax_gcc_arch" != x -a "x$ax_gcc_arch" != xno; then -if test "x$acx_maxopt_portable" = xyes; then # if we require portable code - flag_prefixes="-mtune=" - if test "x$ax_cv_c_compiler_vendor" = xclang; then flag_prefixes="-march="; fi - # -mcpu=$arch and m$arch generate nonportable code on every arch except - # x86. And some other arches (e.g. Alpha) don't accept -mtune. Grrr. - case $host_cpu in i*86|x86_64*|amd64*) flag_prefixes="$flag_prefixes -mcpu= -m";; esac -else - flag_prefixes="-march= -mcpu= -m" -fi -for flag_prefix in $flag_prefixes; do - for arch in $ax_gcc_arch; do - flag="$flag_prefix$arch" - as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$flag" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 -$as_echo_n "checking whether C compiler accepts $flag... " >&6; } -if eval \${$as_CACHEVAR+:} false; then : - $as_echo_n "(cached) " >&6 -else - - ax_check_save_flags=$CFLAGS - CFLAGS="$CFLAGS $flag" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$as_CACHEVAR=yes" -else - eval "$as_CACHEVAR=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - CFLAGS=$ax_check_save_flags -fi -eval ac_res=\$$as_CACHEVAR - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : - if test "x$ax_cv_c_compiler_vendor" = xclang; then - if test "x$acx_maxopt_portable" = xyes; then - if test "x$flag" = "x-march=$arch"; then flag=-mtune=$arch; fi - fi - fi; ax_cv_gcc_archflag=$flag; break -else - : -fi - - done - test "x$ax_cv_gcc_archflag" = xunknown || break -done -fi - -fi # $GCC=yes - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcc architecture flag" >&5 -$as_echo_n "checking for gcc architecture flag... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_archflag" >&5 -$as_echo "$ax_cv_gcc_archflag" >&6; } -if test "x$ax_cv_gcc_archflag" = xunknown; then - : -else - CFLAGS="$CFLAGS $ax_cv_gcc_archflag" -fi - - ;; - - microsoft) - # default optimization flags for MSVC opt builds - CFLAGS="-O2" - ;; - esac - - if test -z "$CFLAGS"; then - echo "" - echo "********************************************************" - echo "* WARNING: Don't know the best CFLAGS for this system *" - echo "* Use ./configure CFLAGS=... to specify your own flags *" - echo "* (otherwise, a default of CFLAGS=-O3 will be used) *" - echo "********************************************************" - echo "" - CFLAGS="-O3" - fi - - as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$CFLAGS" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $CFLAGS" >&5 -$as_echo_n "checking whether C compiler accepts $CFLAGS... " >&6; } -if eval \${$as_CACHEVAR+:} false; then : - $as_echo_n "(cached) " >&6 -else - - ax_check_save_flags=$CFLAGS - CFLAGS="$CFLAGS $CFLAGS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$as_CACHEVAR=yes" -else - eval "$as_CACHEVAR=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - CFLAGS=$ax_check_save_flags -fi -eval ac_res=\$$as_CACHEVAR - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : - : -else - - echo "" - echo "********************************************************" - echo "* WARNING: The guessed CFLAGS don't seem to work with *" - echo "* your compiler. *" - echo "* Use ./configure CFLAGS=... to specify your own flags *" - echo "********************************************************" - echo "" - CFLAGS="" - -fi - - -fi - -# The AX_CFLAGS_WARN_ALL macro doesn't currently work for sunpro -# compiler. -if test "$ax_cv_c_compiler_vendor" != "sun"; 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 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGS for maximum warnings" >&5 -$as_echo_n "checking CFLAGS for maximum warnings... " >&6; } -if ${ac_cv_cflags_warn_all+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_cflags_warn_all="no, unknown" -ac_save_CFLAGS="$CFLAGS" -for ac_arg in "-warn all % -warn all" "-pedantic % -Wall" "-xstrconst % -v" "-std1 % -verbose -w0 -warnprotos" "-qlanglvl=ansi % -qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd" "-ansi -ansiE % -fullwarn" "+ESlit % +w1" "-Xc % -pvctl,fullmsg" "-h conform % -h msglevel 2" # -do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_cflags_warn_all=`echo $ac_arg | sed -e 's,.*% *,,'` ; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -done -CFLAGS="$ac_save_CFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cflags_warn_all" >&5 -$as_echo "$ac_cv_cflags_warn_all" >&6; } - - -case ".$ac_cv_cflags_warn_all" in - .ok|.ok,*) ;; - .|.no|.no,*) ;; - *) -if ${CFLAGS+:} false; then : - - case " $CFLAGS " in #( - *" $ac_cv_cflags_warn_all "*) : - { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS already contains \$ac_cv_cflags_warn_all"; } >&5 - (: CFLAGS already contains $ac_cv_cflags_warn_all) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } ;; #( - *) : - - as_fn_append CFLAGS " $ac_cv_cflags_warn_all" - { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS\""; } >&5 - (: CFLAGS="$CFLAGS") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - ;; -esac - -else - - CFLAGS=$ac_cv_cflags_warn_all - { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS\""; } >&5 - (: CFLAGS="$CFLAGS") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - -fi - ;; -esac - -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 - -if test "x$GCC" = "xyes"; then - CFLAGS="$CFLAGS -fexceptions" -fi - -cat > local.exp <&5 -$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } - # Check whether --enable-maintainer-mode was given. -if test "${enable_maintainer_mode+set}" = set; then : - enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval -else - USE_MAINTAINER_MODE=no -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 -$as_echo "$USE_MAINTAINER_MODE" >&6; } - if test $USE_MAINTAINER_MODE = yes; then - MAINTAINER_MODE_TRUE= - MAINTAINER_MODE_FALSE='#' -else - MAINTAINER_MODE_TRUE='#' - MAINTAINER_MODE_FALSE= -fi - - MAINT=$MAINTAINER_MODE_TRUE - - - -for ac_header in sys/mman.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_mman_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SYS_MMAN_H 1 -_ACEOF - -fi - -done - -for ac_func in mmap mkostemp -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - -ac_fn_c_check_header_mongrel "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_mman_h" = xyes; then : - libffi_header_sys_mman_h=yes -else - libffi_header_sys_mman_h=no -fi - - -ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap" -if test "x$ac_cv_func_mmap" = xyes; then : - libffi_func_mmap=yes -else - libffi_func_mmap=no -fi - -if test "$libffi_header_sys_mman_h" != yes \ - || test "$libffi_func_mmap" != yes; then - ac_cv_func_mmap_file=no - ac_cv_func_mmap_dev_zero=no - ac_cv_func_mmap_anon=no -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether read-only mmap of a plain file works" >&5 -$as_echo_n "checking whether read-only mmap of a plain file works... " >&6; } -if ${ac_cv_func_mmap_file+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Add a system to this blacklist if - # mmap(0, stat_size, PROT_READ, MAP_PRIVATE, fd, 0) doesn't return a - # memory area containing the same data that you'd get if you applied - # read() to the same fd. The only system known to have a problem here - # is VMS, where text files have record structure. - case "$host_os" in - vms* | ultrix*) - ac_cv_func_mmap_file=no ;; - *) - ac_cv_func_mmap_file=yes;; - esac -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_file" >&5 -$as_echo "$ac_cv_func_mmap_file" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mmap from /dev/zero works" >&5 -$as_echo_n "checking whether mmap from /dev/zero works... " >&6; } -if ${ac_cv_func_mmap_dev_zero+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Add a system to this blacklist if it has mmap() but /dev/zero - # does not exist, or if mmapping /dev/zero does not give anonymous - # zeroed pages with both the following properties: - # 1. If you map N consecutive pages in with one call, and then - # unmap any subset of those pages, the pages that were not - # explicitly unmapped remain accessible. - # 2. If you map two adjacent blocks of memory and then unmap them - # both at once, they must both go away. - # Systems known to be in this category are Windows (all variants), - # VMS, and Darwin. - case "$host_os" in - vms* | cygwin* | pe | mingw* | darwin* | ultrix* | hpux10* | hpux11.00) - ac_cv_func_mmap_dev_zero=no ;; - *) - ac_cv_func_mmap_dev_zero=yes;; - esac -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_dev_zero" >&5 -$as_echo "$ac_cv_func_mmap_dev_zero" >&6; } - - # Unlike /dev/zero, the MAP_ANON(YMOUS) defines can be probed for. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MAP_ANON(YMOUS)" >&5 -$as_echo_n "checking for MAP_ANON(YMOUS)... " >&6; } -if ${ac_cv_decl_map_anon+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include - -#ifndef MAP_ANONYMOUS -#define MAP_ANONYMOUS MAP_ANON -#endif - -int -main () -{ -int n = MAP_ANONYMOUS; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_decl_map_anon=yes -else - ac_cv_decl_map_anon=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_decl_map_anon" >&5 -$as_echo "$ac_cv_decl_map_anon" >&6; } - - if test $ac_cv_decl_map_anon = no; then - ac_cv_func_mmap_anon=no - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mmap with MAP_ANON(YMOUS) works" >&5 -$as_echo_n "checking whether mmap with MAP_ANON(YMOUS) works... " >&6; } -if ${ac_cv_func_mmap_anon+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Add a system to this blacklist if it has mmap() and MAP_ANON or - # MAP_ANONYMOUS, but using mmap(..., MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) - # doesn't give anonymous zeroed pages with the same properties listed - # above for use of /dev/zero. - # Systems known to be in this category are Windows, VMS, and SCO Unix. - case "$host_os" in - vms* | cygwin* | pe | mingw* | sco* | udk* ) - ac_cv_func_mmap_anon=no ;; - *) - ac_cv_func_mmap_anon=yes;; - esac -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_anon" >&5 -$as_echo "$ac_cv_func_mmap_anon" >&6; } - fi -fi - -if test $ac_cv_func_mmap_file = yes; then - -$as_echo "#define HAVE_MMAP_FILE 1" >>confdefs.h - -fi -if test $ac_cv_func_mmap_dev_zero = yes; then - -$as_echo "#define HAVE_MMAP_DEV_ZERO 1" >>confdefs.h - -fi -if test $ac_cv_func_mmap_anon = yes; then - -$as_echo "#define HAVE_MMAP_ANON 1" >>confdefs.h - -fi - - - if test -d $srcdir/testsuite; then - TESTSUBDIR_TRUE= - TESTSUBDIR_FALSE='#' -else - TESTSUBDIR_TRUE='#' - TESTSUBDIR_FALSE= -fi - - -TARGETDIR="unknown" -HAVE_LONG_DOUBLE_VARIANT=0 - -. ${srcdir}/configure.host - -if test -n "${UNSUPPORTED}"; then - as_fn_error $? "\"libffi has not been ported to $host.\"" "$LINENO" 5 -fi - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core 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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* 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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* 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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#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)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -for ac_func in memcpy -do : - ac_fn_c_check_func "$LINENO" "memcpy" "ac_cv_func_memcpy" -if test "x$ac_cv_func_memcpy" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_MEMCPY 1 -_ACEOF - -fi -done - -ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" -if test "x$ac_cv_type_size_t" = xyes; then : - -else - -cat >>confdefs.h <<_ACEOF -#define size_t unsigned int -_ACEOF - -fi - -# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works -# for constant arguments. Useless! -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 -$as_echo_n "checking for working alloca.h... " >&6; } -if ${ac_cv_working_alloca_h+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -char *p = (char *) alloca (2 * sizeof (int)); - if (p) return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_working_alloca_h=yes -else - ac_cv_working_alloca_h=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 -$as_echo "$ac_cv_working_alloca_h" >&6; } -if test $ac_cv_working_alloca_h = yes; then - -$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 -$as_echo_n "checking for alloca... " >&6; } -if ${ac_cv_func_alloca_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __GNUC__ -# define alloca __builtin_alloca -#else -# ifdef _MSC_VER -# include -# define alloca _alloca -# else -# ifdef HAVE_ALLOCA_H -# include -# else -# ifdef _AIX - #pragma alloca -# else -# ifndef alloca /* predefined by HP cc +Olibcalls */ -void *alloca (size_t); -# endif -# endif -# endif -# endif -#endif - -int -main () -{ -char *p = (char *) alloca (1); - if (p) return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_func_alloca_works=yes -else - ac_cv_func_alloca_works=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 -$as_echo "$ac_cv_func_alloca_works" >&6; } - -if test $ac_cv_func_alloca_works = yes; then - -$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h - -else - # The SVR3 libPW and SVR4 libucb both contain incompatible functions -# that cause trouble. Some versions do not even contain alloca or -# contain a buggy version. If you still want to use their alloca, -# use ar to extract alloca.o from them instead of compiling alloca.c. - -ALLOCA=\${LIBOBJDIR}alloca.$ac_objext - -$as_echo "#define C_ALLOCA 1" >>confdefs.h - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5 -$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; } -if ${ac_cv_os_cray+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#if defined CRAY && ! defined CRAY2 -webecray -#else -wenotbecray -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "webecray" >/dev/null 2>&1; then : - ac_cv_os_cray=yes -else - ac_cv_os_cray=no -fi -rm -f conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5 -$as_echo "$ac_cv_os_cray" >&6; } -if test $ac_cv_os_cray = yes; then - for ac_func in _getb67 GETB67 getb67; do - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - -cat >>confdefs.h <<_ACEOF -#define CRAY_STACKSEG_END $ac_func -_ACEOF - - break -fi - - done -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 -$as_echo_n "checking stack direction for C alloca... " >&6; } -if ${ac_cv_c_stack_direction+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_c_stack_direction=0 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -find_stack_direction (int *addr, int depth) -{ - int dir, dummy = 0; - if (! addr) - addr = &dummy; - *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1; - dir = depth ? find_stack_direction (addr, depth - 1) : 0; - return dir + dummy; -} - -int -main (int argc, char **argv) -{ - return find_stack_direction (0, argc + !argv + 20) < 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_c_stack_direction=1 -else - ac_cv_c_stack_direction=-1 -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 -$as_echo "$ac_cv_c_stack_direction" >&6; } -cat >>confdefs.h <<_ACEOF -#define STACK_DIRECTION $ac_cv_c_stack_direction -_ACEOF - - -fi - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of double" >&5 -$as_echo_n "checking size of double... " >&6; } -if ${ac_cv_sizeof_double+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (double))" "ac_cv_sizeof_double" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_double" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (double) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_double=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_double" >&5 -$as_echo "$ac_cv_sizeof_double" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_DOUBLE $ac_cv_sizeof_double -_ACEOF - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long double" >&5 -$as_echo_n "checking size of long double... " >&6; } -if ${ac_cv_sizeof_long_double+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long double))" "ac_cv_sizeof_long_double" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_long_double" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (long double) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_long_double=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_double" >&5 -$as_echo "$ac_cv_sizeof_long_double" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_LONG_DOUBLE $ac_cv_sizeof_long_double -_ACEOF - - - -# Also AC_SUBST this variable for ffi.h. -if test -z "$HAVE_LONG_DOUBLE"; then - HAVE_LONG_DOUBLE=0 - if test $ac_cv_sizeof_long_double != 0; then - if test $HAVE_LONG_DOUBLE_VARIANT != 0; then - -$as_echo "#define HAVE_LONG_DOUBLE_VARIANT 1" >>confdefs.h - - HAVE_LONG_DOUBLE=1 - else - if test $ac_cv_sizeof_double != $ac_cv_sizeof_long_double; then - HAVE_LONG_DOUBLE=1 - -$as_echo "#define HAVE_LONG_DOUBLE 1" >>confdefs.h - - fi - fi - fi -fi - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 -$as_echo_n "checking whether byte ordering is bigendian... " >&6; } -if ${ac_cv_c_bigendian+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_c_bigendian=unknown - # See if we're dealing with a universal compiler. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifndef __APPLE_CC__ - not a universal capable compiler - #endif - typedef int dummy; - -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - # Check for potential -arch flags. It is not universal unless - # there are at least two -arch flags with different values. - ac_arch= - ac_prev= - for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do - if test -n "$ac_prev"; then - case $ac_word in - i?86 | x86_64 | ppc | ppc64) - if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then - ac_arch=$ac_word - else - ac_cv_c_bigendian=universal - break - fi - ;; - esac - ac_prev= - elif test "x$ac_word" = "x-arch"; then - ac_prev=arch - fi - done -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - if test $ac_cv_c_bigendian = unknown; then - # See if sys/param.h defines the BYTE_ORDER macro. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - #include - -int -main () -{ -#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ - && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ - && LITTLE_ENDIAN) - bogus endian macros - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - # It does; now see whether it defined to BIG_ENDIAN or not. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - #include - -int -main () -{ -#if BYTE_ORDER != BIG_ENDIAN - not big endian - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_bigendian=yes -else - ac_cv_c_bigendian=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi - if test $ac_cv_c_bigendian = unknown; then - # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -int -main () -{ -#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) - bogus endian macros - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - # It does; now see whether it defined to _BIG_ENDIAN or not. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -int -main () -{ -#ifndef _BIG_ENDIAN - not big endian - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_bigendian=yes -else - ac_cv_c_bigendian=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi - if test $ac_cv_c_bigendian = unknown; then - # Compile a test program. - if test "$cross_compiling" = yes; then : - # Try to guess by grepping values from an object file. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -short int ascii_mm[] = - { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; - short int ascii_ii[] = - { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; - int use_ascii (int i) { - return ascii_mm[i] + ascii_ii[i]; - } - short int ebcdic_ii[] = - { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; - short int ebcdic_mm[] = - { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; - int use_ebcdic (int i) { - return ebcdic_mm[i] + ebcdic_ii[i]; - } - extern int foo; - -int -main () -{ -return use_ascii (foo) == use_ebcdic (foo); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then - ac_cv_c_bigendian=yes - fi - if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then - if test "$ac_cv_c_bigendian" = unknown; then - ac_cv_c_bigendian=no - else - # finding both strings is unlikely to happen, but who knows? - ac_cv_c_bigendian=unknown - fi - fi -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ - - /* Are we little or big endian? From Harbison&Steele. */ - union - { - long int l; - char c[sizeof (long int)]; - } u; - u.l = 1; - return u.c[sizeof (long int) - 1] == 1; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_c_bigendian=no -else - ac_cv_c_bigendian=yes -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 -$as_echo "$ac_cv_c_bigendian" >&6; } - case $ac_cv_c_bigendian in #( - yes) - $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h -;; #( - no) - ;; #( - universal) - -$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h - - ;; #( - *) - as_fn_error $? "unknown endianness - presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; - esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler .cfi pseudo-op support" >&5 -$as_echo_n "checking assembler .cfi pseudo-op support... " >&6; } -if ${gcc_cv_as_cfi_pseudo_op+:} false; then : - $as_echo_n "(cached) " >&6 -else - - gcc_cv_as_cfi_pseudo_op=unknown - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -asm (".cfi_sections\n\t.cfi_startproc\n\t.cfi_endproc"); -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gcc_cv_as_cfi_pseudo_op=yes -else - gcc_cv_as_cfi_pseudo_op=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_cfi_pseudo_op" >&5 -$as_echo "$gcc_cv_as_cfi_pseudo_op" >&6; } - if test "x$gcc_cv_as_cfi_pseudo_op" = xyes; then - -$as_echo "#define HAVE_AS_CFI_PSEUDO_OP 1" >>confdefs.h - - fi - - -case "$TARGET" in - SPARC) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler and linker support unaligned pc related relocs" >&5 -$as_echo_n "checking assembler and linker support unaligned pc related relocs... " >&6; } -if ${libffi_cv_as_sparc_ua_pcrel+:} false; then : - $as_echo_n "(cached) " >&6 -else - - save_CFLAGS="$CFLAGS" - save_LDFLAGS="$LDFLAGS" - CFLAGS="$CFLAGS -fpic" - LDFLAGS="$LDFLAGS -shared" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -asm (".text; foo: nop; .data; .align 4; .byte 0; .uaword %r_disp32(foo); .text"); -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - libffi_cv_as_sparc_ua_pcrel=yes -else - libffi_cv_as_sparc_ua_pcrel=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - CFLAGS="$save_CFLAGS" - LDFLAGS="$save_LDFLAGS" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_as_sparc_ua_pcrel" >&5 -$as_echo "$libffi_cv_as_sparc_ua_pcrel" >&6; } - if test "x$libffi_cv_as_sparc_ua_pcrel" = xyes; then - -$as_echo "#define HAVE_AS_SPARC_UA_PCREL 1" >>confdefs.h - - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler .register pseudo-op support" >&5 -$as_echo_n "checking assembler .register pseudo-op support... " >&6; } -if ${libffi_cv_as_register_pseudo_op+:} false; then : - $as_echo_n "(cached) " >&6 -else - - libffi_cv_as_register_pseudo_op=unknown - # Check if we have .register - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -asm (".register %g2, #scratch"); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - libffi_cv_as_register_pseudo_op=yes -else - libffi_cv_as_register_pseudo_op=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_as_register_pseudo_op" >&5 -$as_echo "$libffi_cv_as_register_pseudo_op" >&6; } - if test "x$libffi_cv_as_register_pseudo_op" = xyes; then - -$as_echo "#define HAVE_AS_REGISTER_PSEUDO_OP 1" >>confdefs.h - - fi - ;; - - X86*) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler supports pc related relocs" >&5 -$as_echo_n "checking assembler supports pc related relocs... " >&6; } -if ${libffi_cv_as_x86_pcrel+:} false; then : - $as_echo_n "(cached) " >&6 -else - - libffi_cv_as_x86_pcrel=no - echo '.text; foo: nop; .data; .long foo-.; .text' > conftest.s - if $CC $CFLAGS -c conftest.s > /dev/null 2>&1; then - libffi_cv_as_x86_pcrel=yes - fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_as_x86_pcrel" >&5 -$as_echo "$libffi_cv_as_x86_pcrel" >&6; } - if test "x$libffi_cv_as_x86_pcrel" = xyes; then - -$as_echo "#define HAVE_AS_X86_PCREL 1" >>confdefs.h - - fi - ;; - - S390) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking compiler uses zarch features" >&5 -$as_echo_n "checking compiler uses zarch features... " >&6; } -if ${libffi_cv_as_s390_zarch+:} false; then : - $as_echo_n "(cached) " >&6 -else - - libffi_cv_as_s390_zarch=no - echo 'void foo(void) { bar(); bar(); }' > conftest.c - if $CC $CFLAGS -S conftest.c > /dev/null 2>&1; then - if grep -q brasl conftest.s; then - libffi_cv_as_s390_zarch=yes - fi - fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_as_s390_zarch" >&5 -$as_echo "$libffi_cv_as_s390_zarch" >&6; } - if test "x$libffi_cv_as_s390_zarch" = xyes; then - -$as_echo "#define HAVE_AS_S390_ZARCH 1" >>confdefs.h - - fi - ;; -esac - -# On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC. -# Check whether --enable-pax_emutramp was given. -if test "${enable_pax_emutramp+set}" = set; then : - enableval=$enable_pax_emutramp; if test "$enable_pax_emutramp" = "yes"; then - -$as_echo "#define FFI_MMAP_EXEC_EMUTRAMP_PAX 1" >>confdefs.h - - fi -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _ prefix in compiled symbols" >&5 -$as_echo_n "checking for _ prefix in compiled symbols... " >&6; } -if ${lt_cv_sys_symbol_underscore+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_sys_symbol_underscore=no - cat > conftest.$ac_ext <<_LT_EOF -void nm_test_func(){} -int main(){nm_test_func;return 0;} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Now try to grab the symbols. - ac_nlist=conftest.nm - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist\""; } >&5 - (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "$ac_nlist"; then - # See whether the symbols have a leading underscore. - if grep '^. _nm_test_func' "$ac_nlist" >/dev/null; then - lt_cv_sys_symbol_underscore=yes - else - if grep '^. nm_test_func ' "$ac_nlist" >/dev/null; then - : - else - echo "configure: cannot find nm_test_func in $ac_nlist" >&5 - fi - fi - else - echo "configure: cannot run $lt_cv_sys_global_symbol_pipe" >&5 - fi - else - echo "configure: failed program was:" >&5 - cat conftest.c >&5 - fi - rm -rf conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_symbol_underscore" >&5 -$as_echo "$lt_cv_sys_symbol_underscore" >&6; } - sys_symbol_underscore=$lt_cv_sys_symbol_underscore - - -if test "x$sys_symbol_underscore" = xyes; then - -$as_echo "#define SYMBOL_UNDERSCORE 1" >>confdefs.h - -fi - -FFI_EXEC_TRAMPOLINE_TABLE=0 -case "$target" in - *arm*-apple-* | aarch64-apple-*) - FFI_EXEC_TRAMPOLINE_TABLE=1 - -$as_echo "#define FFI_EXEC_TRAMPOLINE_TABLE 1" >>confdefs.h - - ;; - *-apple-* | *-*-freebsd* | *-*-kfreebsd* | *-*-openbsd* | *-pc-solaris* | *-linux-android*) - -$as_echo "#define FFI_MMAP_EXEC_WRIT 1" >>confdefs.h - - ;; -esac - if test x$FFI_EXEC_TRAMPOLINE_TABLE = x1; then - FFI_EXEC_TRAMPOLINE_TABLE_TRUE= - FFI_EXEC_TRAMPOLINE_TABLE_FALSE='#' -else - FFI_EXEC_TRAMPOLINE_TABLE_TRUE='#' - FFI_EXEC_TRAMPOLINE_TABLE_FALSE= -fi - - - -if test x$TARGET = xX86_64; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking toolchain supports unwind section type" >&5 -$as_echo_n "checking toolchain supports unwind section type... " >&6; } -if ${libffi_cv_as_x86_64_unwind_section_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - - cat > conftest1.s << EOF -.text -.globl foo -foo: -jmp bar -.section .eh_frame,"a",@unwind -bar: -EOF - - cat > conftest2.c << EOF -extern void foo(); -int main(){foo();} -EOF - - libffi_cv_as_x86_64_unwind_section_type=no - # we ensure that we can compile _and_ link an assembly file containing an @unwind section - # since the compiler can support it and not the linker (ie old binutils) - if $CC -Wa,--fatal-warnings $CFLAGS -c conftest1.s > /dev/null 2>&1 && \ - $CC conftest2.c conftest1.o > /dev/null 2>&1 ; then - libffi_cv_as_x86_64_unwind_section_type=yes - fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_as_x86_64_unwind_section_type" >&5 -$as_echo "$libffi_cv_as_x86_64_unwind_section_type" >&6; } - if test "x$libffi_cv_as_x86_64_unwind_section_type" = xyes; then - -$as_echo "#define HAVE_AS_X86_64_UNWIND_SECTION_TYPE 1" >>confdefs.h - - fi -fi - -if test "x$GCC" = "xyes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether .eh_frame section should be read-only" >&5 -$as_echo_n "checking whether .eh_frame section should be read-only... " >&6; } -if ${libffi_cv_ro_eh_frame+:} false; then : - $as_echo_n "(cached) " >&6 -else - - libffi_cv_ro_eh_frame=no - echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c - if $CC $CFLAGS -c -fpic -fexceptions -o conftest.o conftest.c > /dev/null 2>&1; then - objdump -h conftest.o > conftest.dump 2>&1 - libffi_eh_frame_line=`grep -n eh_frame conftest.dump | cut -d: -f 1` - if test "x$libffi_eh_frame_line" != "x"; then - libffi_test_line=`expr $libffi_eh_frame_line + 1`p - sed -n $libffi_test_line conftest.dump > conftest.line - if grep READONLY conftest.line > /dev/null; then - libffi_cv_ro_eh_frame=yes - fi - fi - fi - rm -f conftest.* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_ro_eh_frame" >&5 -$as_echo "$libffi_cv_ro_eh_frame" >&6; } - if test "x$libffi_cv_ro_eh_frame" = xyes; then - -$as_echo "#define HAVE_RO_EH_FRAME 1" >>confdefs.h - - -$as_echo "#define EH_FRAME_FLAGS \"a\"" >>confdefs.h - - else - -$as_echo "#define EH_FRAME_FLAGS \"aw\"" >>confdefs.h - - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__((visibility(\"hidden\")))" >&5 -$as_echo_n "checking for __attribute__((visibility(\"hidden\")))... " >&6; } -if ${libffi_cv_hidden_visibility_attribute+:} false; then : - $as_echo_n "(cached) " >&6 -else - - echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1 ; }' > conftest.c - libffi_cv_hidden_visibility_attribute=no - if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s 1>&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 - (eval $ac_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - if egrep '(\.hidden|\.private_extern).*foo' conftest.s >/dev/null; then - libffi_cv_hidden_visibility_attribute=yes - fi - fi - rm -f conftest.* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_hidden_visibility_attribute" >&5 -$as_echo "$libffi_cv_hidden_visibility_attribute" >&6; } - if test $libffi_cv_hidden_visibility_attribute = yes; then - -$as_echo "#define HAVE_HIDDEN_VISIBILITY_ATTRIBUTE 1" >>confdefs.h - - fi -fi - -# Check whether --enable-docs was given. -if test "${enable_docs+set}" = set; then : - enableval=$enable_docs; enable_docs=no -else - enable_docs=yes -fi - - if test x$enable_docs = xyes; then - BUILD_DOCS_TRUE= - BUILD_DOCS_FALSE='#' -else - BUILD_DOCS_TRUE='#' - BUILD_DOCS_FALSE= -fi - - - - - - - - -TARGET_OBJ= -for i in $SOURCES; do - TARGET_OBJ="${TARGET_OBJ} src/${TARGETDIR}/"`echo $i | sed 's/[cS]$/lo/'` -done - - - - - -# Check whether --enable-debug was given. -if test "${enable_debug+set}" = set; then : - enableval=$enable_debug; if test "$enable_debug" = "yes"; then - -$as_echo "#define FFI_DEBUG 1" >>confdefs.h - - fi -fi - - if test "$enable_debug" = "yes"; then - FFI_DEBUG_TRUE= - FFI_DEBUG_FALSE='#' -else - FFI_DEBUG_TRUE='#' - FFI_DEBUG_FALSE= -fi - - -# Check whether --enable-structs was given. -if test "${enable_structs+set}" = set; then : - enableval=$enable_structs; if test "$enable_structs" = "no"; then - -$as_echo "#define FFI_NO_STRUCTS 1" >>confdefs.h - - fi -fi - - if test "$enable_debug" = "yes"; then - FFI_DEBUG_TRUE= - FFI_DEBUG_FALSE='#' -else - FFI_DEBUG_TRUE='#' - FFI_DEBUG_FALSE= -fi - - -# Check whether --enable-raw-api was given. -if test "${enable_raw_api+set}" = set; then : - enableval=$enable_raw_api; if test "$enable_raw_api" = "no"; then - -$as_echo "#define FFI_NO_RAW_API 1" >>confdefs.h - - fi -fi - - -# Check whether --enable-purify-safety was given. -if test "${enable_purify_safety+set}" = set; then : - enableval=$enable_purify_safety; if test "$enable_purify_safety" = "yes"; then - -$as_echo "#define USING_PURIFY 1" >>confdefs.h - - fi -fi - - -# Check whether --enable-multi-os-directory was given. -if test "${enable_multi_os_directory+set}" = set; then : - enableval=$enable_multi_os_directory; -fi - - -# These variables are only ever used when we cross-build to X86_WIN32. -# And we only support this with GCC, so... -if test "x$GCC" = "xyes"; then - if test -n "$with_cross_host" && - test x"$with_cross_host" != x"no"; then - toolexecdir='${exec_prefix}'/'$(target_alias)' - toolexeclibdir='${toolexecdir}'/lib - else - toolexecdir='${libdir}'/gcc-lib/'$(target_alias)' - toolexeclibdir='${libdir}' - fi - if test x"$enable_multi_os_directory" != x"no"; then - multi_os_directory=`$CC $CFLAGS -print-multi-os-directory` - case $multi_os_directory in - .) ;; # Avoid trailing /. - ../*) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; - esac - fi - -else - toolexeclibdir='${libdir}' -fi - - -# Check linker support. - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test yes = "$GCC"; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&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 yes = "$with_gnu_ld"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&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 variants of GNU ld 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 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - # If we're not using GNU ld, then there's no point in even trying these - # tests. Check for that first. We should have already tested for gld - # by now (in libtool), but require it now just to be safe... - test -z "$SECTION_LDFLAGS" && SECTION_LDFLAGS='' - test -z "$OPT_LDFLAGS" && OPT_LDFLAGS='' - - - - # The name set by libtool depends on the version of libtool. Shame on us - # for depending on an impl detail, but c'est la vie. Older versions used - # ac_cv_prog_gnu_ld, but now it's lt_cv_prog_gnu_ld, and is copied back on - # top of with_gnu_ld (which is also set by --with-gnu-ld, so that actually - # makes sense). We'll test with_gnu_ld everywhere else, so if that isn't - # set (hence we're using an older libtool), then set it. - if test x${with_gnu_ld+set} != xset; then - if test x${ac_cv_prog_gnu_ld+set} != xset; then - # We got through "ac_require(ac_prog_ld)" and still not set? Huh? - with_gnu_ld=no - else - with_gnu_ld=$ac_cv_prog_gnu_ld - fi - fi - - # Start by getting the version number. I think the libtool test already - # does some of this, but throws away the result. - libat_ld_is_gold=no - if $LD --version 2>/dev/null | grep 'GNU gold'> /dev/null 2>&1; then - libat_ld_is_gold=yes - fi - libat_ld_is_lld=no - if $LD --version 2>/dev/null | grep 'LLD '> /dev/null 2>&1; then - libat_ld_is_lld=yes - fi - - ldver=`$LD --version 2>/dev/null | - sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'` - - libat_gnu_ld_version=`echo $ldver | \ - $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'` - - # Set --gc-sections. - if test "$with_gnu_ld" = "notbroken"; then - # GNU ld it is! Joy and bunny rabbits! - - # All these tests are for C++; save the language and the compiler flags. - # Need to do this so that g++ won't try to link in libstdc++ - ac_test_CFLAGS="${CFLAGS+set}" - ac_save_CFLAGS="$CFLAGS" - CFLAGS='-x c++ -Wl,--gc-sections' - - # Check for -Wl,--gc-sections - # XXX This test is broken at the moment, as symbols required for linking - # are now in libsupc++ (not built yet). In addition, this test has - # cored on solaris in the past. In addition, --gc-sections doesn't - # really work at the moment (keeps on discarding used sections, first - # .eh_frame and now some of the glibc sections for iconv). - # Bzzzzt. Thanks for playing, maybe next time. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld that supports -Wl,--gc-sections" >&5 -$as_echo_n "checking for ld that supports -Wl,--gc-sections... " >&6; } - if test "$cross_compiling" = yes; then : - ac_sectionLDflags=yes -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - int main(void) - { - try { throw 1; } - catch (...) { }; - return 0; - } - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_sectionLDflags=yes -else - ac_sectionLDflags=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - if test "$ac_test_CFLAGS" = set; then - CFLAGS="$ac_save_CFLAGS" - else - # this is the suspicious part - CFLAGS='' - fi - if test "$ac_sectionLDflags" = "yes"; then - SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS" - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_sectionLDflags" >&5 -$as_echo "$ac_sectionLDflags" >&6; } - fi - - # Set linker optimization flags. - if test x"$with_gnu_ld" = x"yes"; then - OPT_LDFLAGS="-Wl,-O1 $OPT_LDFLAGS" - fi - - - - - - - # Check whether --enable-symvers was given. -if test "${enable_symvers+set}" = set; then : - enableval=$enable_symvers; - case "$enableval" in - yes|no|gnu*|sun) ;; - *) as_fn_error $? "Unknown argument to enable/disable symvers" "$LINENO" 5 ;; - esac - -else - enable_symvers=yes -fi - - - -# If we never went through the LIBFFI_CHECK_LINKER_FEATURES macro, then we -# don't know enough about $LD to do tricks... - - -# Turn a 'yes' into a suitable default. -if test x$enable_symvers = xyes ; then - # FIXME The following test is too strict, in theory. - if test $enable_shared = no || test "x$LD" = x; then - enable_symvers=no - else - if test $with_gnu_ld = yes ; then - enable_symvers=gnu - else - case ${target_os} in - # Sun symbol versioning exists since Solaris 2.5. - solaris2.[5-9]* | solaris2.1[0-9]*) - enable_symvers=sun ;; - *) - enable_symvers=no ;; - esac - fi - fi -fi - -# Check if 'sun' was requested on non-Solaris 2 platforms. -if test x$enable_symvers = xsun ; then - case ${target_os} in - solaris2*) - # All fine. - ;; - *) - # Unlikely to work. - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === You have requested Sun symbol versioning, but" >&5 -$as_echo "$as_me: WARNING: === You have requested Sun symbol versioning, but" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === you are not targetting Solaris 2." >&5 -$as_echo "$as_me: WARNING: === you are not targetting Solaris 2." >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === Symbol versioning will be disabled." >&5 -$as_echo "$as_me: WARNING: === Symbol versioning will be disabled." >&2;} - enable_symvers=no - ;; - esac -fi - -# Check to see if libgcc_s exists, indicating that shared libgcc is possible. -if test $enable_symvers != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared libgcc" >&5 -$as_echo_n "checking for shared libgcc... " >&6; } - ac_save_CFLAGS="$CFLAGS" - CFLAGS=' -lgcc_s' - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - libat_shared_libgcc=yes -else - libat_shared_libgcc=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - CFLAGS="$ac_save_CFLAGS" - if test $libat_shared_libgcc = no; then - cat > conftest.c <&1 >/dev/null \ - | sed -n 's/^.* -lgcc_s\([^ ]*\) .*$/\1/p'` - rm -f conftest.c conftest.so - if test x${libat_libgcc_s_suffix+set} = xset; then - CFLAGS=" -lgcc_s$libat_libgcc_s_suffix" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - libat_shared_libgcc=yes -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - CFLAGS="$ac_save_CFLAGS" - fi - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libat_shared_libgcc" >&5 -$as_echo "$libat_shared_libgcc" >&6; } -fi - -# For GNU ld, we need at least this version. The format is described in -# LIBFFI_CHECK_LINKER_FEATURES above. -libat_min_gnu_ld_version=21400 -# XXXXXXXXXXX libat_gnu_ld_version=21390 - -# Check to see if unspecified "yes" value can win, given results above. -# Change "yes" into either "no" or a style name. -if test $enable_symvers != no && test $libat_shared_libgcc = yes; then - if test $with_gnu_ld = yes; then - if test $libat_gnu_ld_version -ge $libat_min_gnu_ld_version ; then - enable_symvers=gnu - elif test $libat_ld_is_gold = yes ; then - enable_symvers=gnu - elif test $libat_ld_is_lld = yes ; then - enable_symvers=gnu - else - # The right tools, the right setup, but too old. Fallbacks? - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === Linker version $libat_gnu_ld_version is too old for" >&5 -$as_echo "$as_me: WARNING: === Linker version $libat_gnu_ld_version is too old for" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === full symbol versioning support in this release of GCC." >&5 -$as_echo "$as_me: WARNING: === full symbol versioning support in this release of GCC." >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === You would need to upgrade your binutils to version" >&5 -$as_echo "$as_me: WARNING: === You would need to upgrade your binutils to version" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === $libat_min_gnu_ld_version or later and rebuild GCC." >&5 -$as_echo "$as_me: WARNING: === $libat_min_gnu_ld_version or later and rebuild GCC." >&2;} - if test $libat_gnu_ld_version -ge 21200 ; then - # Globbing fix is present, proper block support is not. - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === Symbol versioning will be disabled." >&5 -$as_echo "$as_me: WARNING: === Symbol versioning will be disabled." >&2;} - enable_symvers=no - else - # 2.11 or older. - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === Symbol versioning will be disabled." >&5 -$as_echo "$as_me: WARNING: === Symbol versioning will be disabled." >&2;} - enable_symvers=no - fi - fi - elif test $enable_symvers = sun; then - : All interesting versions of Sun ld support sun style symbol versioning. - else - # just fail for now - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === You have requested some kind of symbol versioning, but" >&5 -$as_echo "$as_me: WARNING: === You have requested some kind of symbol versioning, but" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === either you are not using a supported linker, or you are" >&5 -$as_echo "$as_me: WARNING: === either you are not using a supported linker, or you are" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === not building a shared libgcc_s (which is required)." >&5 -$as_echo "$as_me: WARNING: === not building a shared libgcc_s (which is required)." >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === Symbol versioning will be disabled." >&5 -$as_echo "$as_me: WARNING: === Symbol versioning will be disabled." >&2;} - enable_symvers=no - fi -fi -if test $enable_symvers = gnu; then - -$as_echo "#define LIBFFI_GNU_SYMBOL_VERSIONING 1" >>confdefs.h - -fi - - if test $enable_symvers != no; then - LIBFFI_BUILD_VERSIONED_SHLIB_TRUE= - LIBFFI_BUILD_VERSIONED_SHLIB_FALSE='#' -else - LIBFFI_BUILD_VERSIONED_SHLIB_TRUE='#' - LIBFFI_BUILD_VERSIONED_SHLIB_FALSE= -fi - - if test $enable_symvers = gnu; then - LIBFFI_BUILD_VERSIONED_SHLIB_GNU_TRUE= - LIBFFI_BUILD_VERSIONED_SHLIB_GNU_FALSE='#' -else - LIBFFI_BUILD_VERSIONED_SHLIB_GNU_TRUE='#' - LIBFFI_BUILD_VERSIONED_SHLIB_GNU_FALSE= -fi - - if test $enable_symvers = sun; then - LIBFFI_BUILD_VERSIONED_SHLIB_SUN_TRUE= - LIBFFI_BUILD_VERSIONED_SHLIB_SUN_FALSE='#' -else - LIBFFI_BUILD_VERSIONED_SHLIB_SUN_TRUE='#' - LIBFFI_BUILD_VERSIONED_SHLIB_SUN_FALSE= -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: versioning on shared library symbols is $enable_symvers" >&5 -$as_echo "$as_me: versioning on shared library symbols is $enable_symvers" >&6;} - - -ac_config_commands="$ac_config_commands include" - -ac_config_commands="$ac_config_commands src" - - -ac_config_files="$ac_config_files include/Makefile include/ffi.h Makefile testsuite/Makefile man/Makefile doc/Makefile libffi.pc" - - -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, we kill variables containing newlines. -# 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. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}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 "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} - if test ! -f "$cache_file" || test -h "$cache_file"; then - cat confcache >"$cache_file" - else - case $cache_file in #( - */* | ?:*) - mv -f confcache "$cache_file"$$ && - mv -f "$cache_file"$$ "$cache_file" ;; #( - *) - mv -f confcache "$cache_file" ;; - esac - fi - fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} - 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}' - -DEFS=-DHAVE_CONFIG_H - -ac_libobjs= -ac_ltlibobjs= -U= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 -$as_echo_n "checking that generated files are newer than configure... " >&6; } - if test -n "$am_sleep_pid"; then - # Hide warnings about reused PIDs. - wait $am_sleep_pid 2>/dev/null - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 -$as_echo "done" >&6; } - if test -n "$EXEEXT"; then - am__EXEEXT_TRUE= - am__EXEEXT_FALSE='#' -else - am__EXEEXT_TRUE='#' - am__EXEEXT_FALSE= -fi - -if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - as_fn_error $? "conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCCAS_TRUE}" && test -z "${am__fastdepCCAS_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCCAS\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then - as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${TESTSUBDIR_TRUE}" && test -z "${TESTSUBDIR_FALSE}"; then - as_fn_error $? "conditional \"TESTSUBDIR\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi - -if test -z "${FFI_EXEC_TRAMPOLINE_TABLE_TRUE}" && test -z "${FFI_EXEC_TRAMPOLINE_TABLE_FALSE}"; then - as_fn_error $? "conditional \"FFI_EXEC_TRAMPOLINE_TABLE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${BUILD_DOCS_TRUE}" && test -z "${BUILD_DOCS_FALSE}"; then - as_fn_error $? "conditional \"BUILD_DOCS\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${FFI_DEBUG_TRUE}" && test -z "${FFI_DEBUG_FALSE}"; then - as_fn_error $? "conditional \"FFI_DEBUG\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${FFI_DEBUG_TRUE}" && test -z "${FFI_DEBUG_FALSE}"; then - as_fn_error $? "conditional \"FFI_DEBUG\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${LIBFFI_BUILD_VERSIONED_SHLIB_TRUE}" && test -z "${LIBFFI_BUILD_VERSIONED_SHLIB_FALSE}"; then - as_fn_error $? "conditional \"LIBFFI_BUILD_VERSIONED_SHLIB\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${LIBFFI_BUILD_VERSIONED_SHLIB_GNU_TRUE}" && test -z "${LIBFFI_BUILD_VERSIONED_SHLIB_GNU_FALSE}"; then - as_fn_error $? "conditional \"LIBFFI_BUILD_VERSIONED_SHLIB_GNU\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${LIBFFI_BUILD_VERSIONED_SHLIB_SUN_TRUE}" && test -z "${LIBFFI_BUILD_VERSIONED_SHLIB_SUN_FALSE}"; then - as_fn_error $? "conditional \"LIBFFI_BUILD_VERSIONED_SHLIB_SUN\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi - -: "${CONFIG_STATUS=./config.status}" -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -#! $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} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -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 -IFS=$as_save_IFS - - ;; -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 - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; 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 - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# 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 - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# 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'" - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -_ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by libffi $as_me 3.3, which was -generated by GNU Autoconf 2.69. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -case $ac_config_files in *" -"*) set x $ac_config_files; shift; ac_config_files=$*;; -esac - -case $ac_config_headers in *" -"*) set x $ac_config_headers; shift; ac_config_headers=$*;; -esac - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -config_headers="$ac_config_headers" -config_commands="$ac_config_commands" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - --config print configuration, then exit - -q, --quiet, --silent - 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_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" -ac_cs_version="\\ -libffi config.status 3.3 -configured by $0, generated by GNU Autoconf 2.69, - with options \\"\$ac_cs_config\\" - -Copyright (C) 2012 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -MKDIR_P='$MKDIR_P' -AWK='$AWK' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -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=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append CONFIG_HEADERS " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - as_fn_error $? "ambiguous option: \`$1' -Try \`$0 --help' for more information.";; - --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - 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 || ac_write_fail=1 -if \$ac_cs_recheck; then - set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - $as_echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# -# INIT-COMMANDS -# -ax_enable_builddir_srcdir="$srcdir" # $srcdir -ax_enable_builddir_host="$HOST" # $HOST / $host -ax_enable_builddir_version="$VERSION" # $VERSION -ax_enable_builddir_package="$PACKAGE" # $PACKAGE -ax_enable_builddir_auxdir="$ax_enable_builddir_auxdir" # $AUX -ax_enable_builddir_sed="$ax_enable_builddir_sed" # $SED -ax_enable_builddir="$ax_enable_builddir" # $SUB - -AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" - - -# 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 - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' -macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' -enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' -enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' -pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' -enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' -shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' -SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' -ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' -PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' -host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' -host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' -host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' -build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' -build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' -build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' -SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' -Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' -GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' -EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' -FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' -LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' -NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' -LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' -max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' -ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' -exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' -lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' -lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' -lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' -lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' -lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' -reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' -reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' -OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' -deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' -file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' -file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' -want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' -DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' -sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' -AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' -AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' -archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' -STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' -RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' -old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' -old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' -lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' -CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' -CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' -compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' -GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' -lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' -nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' -lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' -lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' -objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' -MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' -need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' -MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' -DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' -NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' -LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' -OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' -OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' -libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' -shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' -extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' -export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' -whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' -compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' -old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' -archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' -module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' -module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' -with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' -allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' -no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' -hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' -hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' -hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' -hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' -hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' -inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' -link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' -always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' -export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' -exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' -include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' -prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' -postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' -file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' -variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' -need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' -need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' -version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' -runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' -libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' -library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' -soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' -install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' -postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' -postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' -finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' -hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' -sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' -configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' -configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' -hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' -enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' -old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' -striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' -predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' -postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' -predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' -postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' -LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' -reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' -reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' -old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' -compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' -GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' -archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' -export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' -old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' -archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' -archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' -module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' -module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' -with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' -allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' -no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' -inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' -link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' -always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' -export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' -exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' -include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' -prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' -postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' -file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' -predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' -postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' -predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' -postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' - -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in SHELL \ -ECHO \ -PATH_SEPARATOR \ -SED \ -GREP \ -EGREP \ -FGREP \ -LD \ -NM \ -LN_S \ -lt_SP2NL \ -lt_NL2SP \ -reload_flag \ -OBJDUMP \ -deplibs_check_method \ -file_magic_cmd \ -file_magic_glob \ -want_nocaseglob \ -DLLTOOL \ -sharedlib_from_linklib_cmd \ -AR \ -AR_FLAGS \ -archiver_list_spec \ -STRIP \ -RANLIB \ -CC \ -CFLAGS \ -compiler \ -lt_cv_sys_global_symbol_pipe \ -lt_cv_sys_global_symbol_to_cdecl \ -lt_cv_sys_global_symbol_to_import \ -lt_cv_sys_global_symbol_to_c_name_address \ -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ -lt_cv_nm_interface \ -nm_file_list_spec \ -lt_cv_truncate_bin \ -lt_prog_compiler_no_builtin_flag \ -lt_prog_compiler_pic \ -lt_prog_compiler_wl \ -lt_prog_compiler_static \ -lt_cv_prog_compiler_c_o \ -need_locks \ -MANIFEST_TOOL \ -DSYMUTIL \ -NMEDIT \ -LIPO \ -OTOOL \ -OTOOL64 \ -shrext_cmds \ -export_dynamic_flag_spec \ -whole_archive_flag_spec \ -compiler_needs_object \ -with_gnu_ld \ -allow_undefined_flag \ -no_undefined_flag \ -hardcode_libdir_flag_spec \ -hardcode_libdir_separator \ -exclude_expsyms \ -include_expsyms \ -file_list_spec \ -variables_saved_for_relink \ -libname_spec \ -library_names_spec \ -soname_spec \ -install_override_mode \ -finish_eval \ -old_striplib \ -striplib \ -compiler_lib_search_dirs \ -predep_objects \ -postdep_objects \ -predeps \ -postdeps \ -compiler_lib_search_path \ -LD_CXX \ -reload_flag_CXX \ -compiler_CXX \ -lt_prog_compiler_no_builtin_flag_CXX \ -lt_prog_compiler_pic_CXX \ -lt_prog_compiler_wl_CXX \ -lt_prog_compiler_static_CXX \ -lt_cv_prog_compiler_c_o_CXX \ -export_dynamic_flag_spec_CXX \ -whole_archive_flag_spec_CXX \ -compiler_needs_object_CXX \ -with_gnu_ld_CXX \ -allow_undefined_flag_CXX \ -no_undefined_flag_CXX \ -hardcode_libdir_flag_spec_CXX \ -hardcode_libdir_separator_CXX \ -exclude_expsyms_CXX \ -include_expsyms_CXX \ -file_list_spec_CXX \ -compiler_lib_search_dirs_CXX \ -predep_objects_CXX \ -postdep_objects_CXX \ -predeps_CXX \ -postdeps_CXX \ -compiler_lib_search_path_CXX; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in reload_cmds \ -old_postinstall_cmds \ -old_postuninstall_cmds \ -old_archive_cmds \ -extract_expsyms_cmds \ -old_archive_from_new_cmds \ -old_archive_from_expsyms_cmds \ -archive_cmds \ -archive_expsym_cmds \ -module_cmds \ -module_expsym_cmds \ -export_symbols_cmds \ -prelink_cmds \ -postlink_cmds \ -postinstall_cmds \ -postuninstall_cmds \ -finish_cmds \ -sys_lib_search_path_spec \ -configure_time_dlsearch_path \ -configure_time_lt_sys_library_path \ -reload_cmds_CXX \ -old_archive_cmds_CXX \ -old_archive_from_new_cmds_CXX \ -old_archive_from_expsyms_cmds_CXX \ -archive_cmds_CXX \ -archive_expsym_cmds_CXX \ -module_cmds_CXX \ -module_expsym_cmds_CXX \ -export_symbols_cmds_CXX \ -prelink_cmds_CXX \ -postlink_cmds_CXX; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -ac_aux_dir='$ac_aux_dir' - -# See if we are running on zsh, and set the options that allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST -fi - - - PACKAGE='$PACKAGE' - VERSION='$VERSION' - RM='$RM' - ofile='$ofile' - - - - - -TARGETDIR="$TARGETDIR" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "fficonfig.h") CONFIG_HEADERS="$CONFIG_HEADERS fficonfig.h" ;; - "buildir") CONFIG_COMMANDS="$CONFIG_COMMANDS buildir" ;; - "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; - "include") CONFIG_COMMANDS="$CONFIG_COMMANDS include" ;; - "src") CONFIG_COMMANDS="$CONFIG_COMMANDS src" ;; - "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; - "include/ffi.h") CONFIG_FILES="$CONFIG_FILES include/ffi.h" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "testsuite/Makefile") CONFIG_FILES="$CONFIG_FILES testsuite/Makefile" ;; - "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;; - "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; - "libffi.pc") CONFIG_FILES="$CONFIG_FILES libffi.pc" ;; - - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - 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 against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= ac_tmp= - trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && -_ACEOF - - -{ - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" -} >conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -rm -f conf$$subs.sh - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && -_ACEOF -sed -n ' -h -s/^/S["/; s/!.*/"]=/ -p -g -s/^[^!]*!// -:repl -t repl -s/'"$ac_delim"'$// -t delim -:nl -h -s/\(.\{148\}\)..*/\1/ -t more1 -s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -p -n -b repl -:more1 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t nl -:delim -h -s/\(.\{148\}\)..*/\1/ -t more2 -s/["\\]/\\&/g; s/^/"/; s/$/"/ -p -b -:more2 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t delim -' >$CONFIG_STATUS || ac_write_fail=1 -rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACAWK -cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ - || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -_ACEOF - -# VPATH may cause trouble with some makes, so we remove sole $(srcdir), -# ${srcdir} and @srcdir@ entries 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[ ]*=[ ]*/{ -h -s/// -s/^/:/ -s/[ ]*$/:/ -s/:\$(srcdir):/:/g -s/:\${srcdir}:/:/g -s/:@srcdir@:/:/g -s/^:*// -s/:*$// -x -s/\(=[ ]*\).*/\1/ -G -s/\n// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -fi # test -n "$CONFIG_FILES" - -# Set up the scripts for CONFIG_HEADERS section. -# No need to generate them if there are no CONFIG_HEADERS. -# This happens for instance with `./config.status Makefile'. -if test -n "$CONFIG_HEADERS"; then -cat >"$ac_tmp/defines.awk" <<\_ACAWK || -BEGIN { -_ACEOF - -# Transform confdefs.h into an awk script `defines.awk', embedded as -# here-document in config.status, that substitutes the proper values into -# config.h.in to produce config.h. - -# Create a delimiter string that does not exist in confdefs.h, to ease -# handling of long lines. -ac_delim='%!_!# ' -for ac_last_try in false false :; do - ac_tt=`sed -n "/$ac_delim/p" confdefs.h` - if test -z "$ac_tt"; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -# For the awk script, D is an array of macro values keyed by name, -# likewise P contains macro parameters if any. Preserve backslash -# newline sequences. - -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -sed -n ' -s/.\{148\}/&'"$ac_delim"'/g -t rset -:rset -s/^[ ]*#[ ]*define[ ][ ]*/ / -t def -d -:def -s/\\$// -t bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3"/p -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p -d -:bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3\\\\\\n"\\/p -t cont -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p -t cont -d -:cont -n -s/.\{148\}/&'"$ac_delim"'/g -t clear -:clear -s/\\$// -t bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/"/p -d -:bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p -b cont -' >$CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - for (key in D) D_is_set[key] = 1 - FS = "" -} -/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { - line = \$ 0 - split(line, arg, " ") - if (arg[1] == "#") { - defundef = arg[2] - mac1 = arg[3] - } else { - defundef = substr(arg[1], 2) - mac1 = arg[2] - } - split(mac1, mac2, "(") #) - macro = mac2[1] - prefix = substr(line, 1, index(line, defundef) - 1) - if (D_is_set[macro]) { - # Preserve the white space surrounding the "#". - print prefix "define", macro P[macro] D[macro] - next - } else { - # Replace #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. - if (defundef == "undef") { - print "/*", prefix defundef, macro, "*/" - next - } - } -} -{ print } -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 -fi # test -n "$CONFIG_HEADERS" - - -eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$ac_tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # 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. */ - configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac - ac_MKDIR_P=$MKDIR_P - case $MKDIR_P in - [\\/$]* | ?:[\\/]* ) ;; - */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;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&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -s&@MKDIR_P@&$ac_MKDIR_P&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&2;} - - rm -f "$ac_tmp/stdin" - case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - :H) - # - # CONFIG_HEADER - # - if test x"$ac_file" != x-; then - { - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" - } >"$ac_tmp/config.h" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -$as_echo "$as_me: $ac_file is unchanged" >&6;} - else - rm -f "$ac_file" - mv "$ac_tmp/config.h" "$ac_file" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - fi - else - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ - || as_fn_error $? "could not create -" "$LINENO" 5 - fi -# Compute "$ac_file"'s index in $config_headers. -_am_arg="$ac_file" -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || -$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$_am_arg" : 'X\(//\)[^/]' \| \ - X"$_am_arg" : 'X\(//\)$' \| \ - X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$_am_arg" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'`/stamp-h$_am_stamp_count - ;; - - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac - - - case $ac_file$ac_mode in - "buildir":C) ac_top_srcdir="$ax_enable_builddir_srcdir" - if test ".$ax_enable_builddir" = ".." ; then - if test -f "$top_srcdir/Makefile" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: skipping top_srcdir/Makefile - left untouched" >&5 -$as_echo "$as_me: skipping top_srcdir/Makefile - left untouched" >&6;} - else - { $as_echo "$as_me:${as_lineno-$LINENO}: skipping top_srcdir/Makefile - not created" >&5 -$as_echo "$as_me: skipping top_srcdir/Makefile - not created" >&6;} - fi - else - if test -f "$ac_top_srcdir/Makefile" ; then - a=`grep "^VERSION " "$ac_top_srcdir/Makefile"` ; b=`grep "^VERSION " Makefile` - test "$a" != "$b" && rm "$ac_top_srcdir/Makefile" - fi - if test -f "$ac_top_srcdir/Makefile" ; then - echo "$ac_top_srcdir/Makefile : $ac_top_srcdir/Makefile.in" > $tmp/conftemp.mk - echo " @ echo 'REMOVED,,,' >\$@" >> $tmp/conftemp.mk - eval "${MAKE-make} -f $tmp/conftemp.mk 2>/dev/null >/dev/null" - if grep '^REMOVED,,,' "$ac_top_srcdir/Makefile" >/dev/null - then rm $ac_top_srcdir/Makefile ; fi - cp $tmp/conftemp.mk $ac_top_srcdir/makefiles.mk~ ## DEBUGGING - fi - if test ! -f "$ac_top_srcdir/Makefile" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: create top_srcdir/Makefile guessed from local Makefile" >&5 -$as_echo "$as_me: create top_srcdir/Makefile guessed from local Makefile" >&6;} - x='`' ; cat >$tmp/conftemp.sed <<_EOF -/^\$/n -x -/^\$/bS -x -/\\\\\$/{H;d;} -{H;s/.*//;x;} -bM -:S -x -/\\\\\$/{h;d;} -{h;s/.*//;x;} -:M -s/\\(\\n\\) /\\1 /g -/^ /d -/^[ ]*[\\#]/d -/^VPATH *=/d -s/^srcdir *=.*/srcdir = ./ -s/^top_srcdir *=.*/top_srcdir = ./ -/[:=]/!d -/^\\./d -/ = /b -/ .= /b -/:/!b -s/:.*/:/ -s/ / /g -s/ \\([a-z][a-z-]*[a-zA-Z0-9]\\)\\([ :]\\)/ \\1 \\1-all\\2/g -s/^\\([a-z][a-z-]*[a-zA-Z0-9]\\)\\([ :]\\)/\\1 \\1-all\\2/ -s/ / /g -/^all all-all[ :]/i\\ -all-configured : all-all -s/ [a-zA-Z0-9-]*-all [a-zA-Z0-9-]*-all-all//g -/-all-all/d -a\\ - @ HOST="\$(HOST)\" \\\\\\ - ; test ".\$\$HOST" = "." && HOST=$x sh $ax_enable_builddir_auxdir/config.guess $x \\\\\\ - ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\ - ; use=$x basename "\$\@" -all $x; n=$x echo \$\$BUILD | wc -w $x \\\\\\ - ; echo "MAKE \$\$HOST : \$\$n * \$\@"; if test "\$\$n" -eq "0" ; then : \\\\\\ - ; BUILD=$x grep "^####.*|" Makefile |tail -1| sed -e 's/.*|//' $x ; fi \\\\\\ - ; test ".\$\$BUILD" = "." && BUILD="." \\\\\\ - ; test "\$\$use" = "\$\@" && BUILD=$x echo "\$\$BUILD" | tail -1 $x \\\\\\ - ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ - ; (cd "\$\$i" && test ! -f configure && \$(MAKE) \$\$use) || exit; done -/dist-all *:/a\\ - @ HOST="\$(HOST)\" \\\\\\ - ; test ".\$\$HOST" = "." && HOST=$x sh $ax_enable_builddir_auxdir/config.guess $x \\\\\\ - ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\ - ; found=$x echo \$\$BUILD | wc -w $x \\\\\\ - ; echo "MAKE \$\$HOST : \$\$found \$(PACKAGE)-\$(VERSION).tar.*" \\\\\\ - ; if test "\$\$found" -eq "0" ; then : \\\\\\ - ; BUILD=$x grep "^#### .*|" Makefile |tail -1| sed -e 's/.*|//' $x \\\\\\ - ; fi ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ - ; for f in \$\$i/\$(PACKAGE)-\$(VERSION).tar.* \\\\\\ - ; do test -f "\$\$f" && mv "\$\$f" \$(PUB). ; done ; break ; done -/dist-[a-zA-Z0-9]*-all *:/a\\ - @ HOST="\$(HOST)\" \\\\\\ - ; test ".\$\$HOST" = "." && HOST=$x sh ./config.guess $x \\\\\\ - ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\ - ; found=$x echo \$\$BUILD | wc -w $x \\\\\\ - ; echo "MAKE \$\$HOST : \$\$found \$(PACKAGE)-\$(VERSION).*" \\\\\\ - ; if test "\$\$found" -eq "0" ; then : \\\\\\ - ; BUILD=$x grep "^#### .*|" Makefile |tail -1| sed -e 's/.*|//' $x \\\\\\ - ; fi ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ - ; for f in \$\$i/\$(PACKAGE)-\$(VERSION).* \\\\\\ - ; do test -f "\$\$f" && mv "\$\$f" \$(PUB). ; done ; break ; done -/distclean-all *:/a\\ - @ HOST="\$(HOST)\" \\\\\\ - ; test ".\$\$HOST" = "." && HOST=$x sh $ax_enable_builddir_auxdir/config.guess $x \\\\\\ - ; BUILD=$x grep "^#### .*|" Makefile | sed -e 's/.*|//' $x \\\\\\ - ; use=$x basename "\$\@" -all $x; n=$x echo \$\$BUILD | wc -w $x \\\\\\ - ; echo "MAKE \$\$HOST : \$\$n * \$\@ (all local builds)" \\\\\\ - ; test ".\$\$BUILD" = "." && BUILD="." \\\\\\ - ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ - ; echo "# rm -r \$\$i"; done ; echo "# (sleep 3)" ; sleep 3 \\\\\\ - ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ - ; echo "\$\$i" | grep "^/" > /dev/null && continue \\\\\\ - ; echo "\$\$i" | grep "^../" > /dev/null && continue \\\\\\ - ; echo "rm -r \$\$i"; (rm -r "\$\$i") ; done ; rm Makefile -_EOF - cp "$tmp/conftemp.sed" "$ac_top_srcdir/makefile.sed~" ## DEBUGGING - $ax_enable_builddir_sed -f $tmp/conftemp.sed Makefile >$ac_top_srcdir/Makefile - if test -f "$ac_top_srcdir/Makefile.mk" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: extend top_srcdir/Makefile with top_srcdir/Makefile.mk" >&5 -$as_echo "$as_me: extend top_srcdir/Makefile with top_srcdir/Makefile.mk" >&6;} - cat $ac_top_srcdir/Makefile.mk >>$ac_top_srcdir/Makefile - fi ; xxxx="####" - echo "$xxxx CONFIGURATIONS FOR TOPLEVEL MAKEFILE: " >>$ac_top_srcdir/Makefile - # sanity check - if grep '^; echo "MAKE ' $ac_top_srcdir/Makefile >/dev/null ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: buggy sed found - it deletes tab in \"a\" text parts" >&5 -$as_echo "$as_me: buggy sed found - it deletes tab in \"a\" text parts" >&6;} - $ax_enable_builddir_sed -e '/^@ HOST=/s/^/ /' -e '/^; /s/^/ /' $ac_top_srcdir/Makefile \ - >$ac_top_srcdir/Makefile~ - (test -s $ac_top_srcdir/Makefile~ && mv $ac_top_srcdir/Makefile~ $ac_top_srcdir/Makefile) 2>/dev/null - fi - else - xxxx="\\#\\#\\#\\#" - # echo "/^$xxxx *$ax_enable_builddir_host /d" >$tmp/conftemp.sed - echo "s!^$xxxx [^|]* | *$ax_enable_builddir *\$!$xxxx ...... $ax_enable_builddir!" >$tmp/conftemp.sed - $ax_enable_builddir_sed -f "$tmp/conftemp.sed" "$ac_top_srcdir/Makefile" >$tmp/mkfile.tmp - cp "$tmp/conftemp.sed" "$ac_top_srcdir/makefiles.sed~" ## DEBUGGING - cp "$tmp/mkfile.tmp" "$ac_top_srcdir/makefiles.out~" ## DEBUGGING - if cmp -s "$ac_top_srcdir/Makefile" "$tmp/mkfile.tmp" 2>/dev/null ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: keeping top_srcdir/Makefile from earlier configure" >&5 -$as_echo "$as_me: keeping top_srcdir/Makefile from earlier configure" >&6;} - rm "$tmp/mkfile.tmp" - else - { $as_echo "$as_me:${as_lineno-$LINENO}: reusing top_srcdir/Makefile from earlier configure" >&5 -$as_echo "$as_me: reusing top_srcdir/Makefile from earlier configure" >&6;} - mv "$tmp/mkfile.tmp" "$ac_top_srcdir/Makefile" - fi - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: build in $ax_enable_builddir (HOST=$ax_enable_builddir_host)" >&5 -$as_echo "$as_me: build in $ax_enable_builddir (HOST=$ax_enable_builddir_host)" >&6;} - xxxx="####" - echo "$xxxx" "$ax_enable_builddir_host" "|$ax_enable_builddir" >>$ac_top_srcdir/Makefile - fi - ;; - "depfiles":C) test x"$AMDEP_TRUE" != x"" || { - # Older Autoconf quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - # TODO: see whether this extra hack can be removed once we start - # requiring Autoconf 2.70 or later. - case $CONFIG_FILES in #( - *\'*) : - eval set x "$CONFIG_FILES" ;; #( - *) : - set x $CONFIG_FILES ;; #( - *) : - ;; -esac - shift - # Used to flag and report bootstrapping failures. - am_rc=0 - for am_mf - do - # Strip MF so we end up with the name of the file. - am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile which includes - # dependency-tracking related rules and includes. - # Grep'ing the whole file directly is not great: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ - || continue - am_dirpart=`$as_dirname -- "$am_mf" || -$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$am_mf" : 'X\(//\)[^/]' \| \ - X"$am_mf" : 'X\(//\)$' \| \ - X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$am_mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - am_filepart=`$as_basename -- "$am_mf" || -$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ - X"$am_mf" : 'X\(//\)$' \| \ - X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$am_mf" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - { echo "$as_me:$LINENO: cd "$am_dirpart" \ - && sed -e '/# am--include-marker/d' "$am_filepart" \ - | $MAKE -f - am--depfiles" >&5 - (cd "$am_dirpart" \ - && sed -e '/# am--include-marker/d' "$am_filepart" \ - | $MAKE -f - am--depfiles) >&5 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } || am_rc=$? - done - if test $am_rc -ne 0; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "Something went wrong bootstrapping makefile fragments - for automatic dependency tracking. Try re-running configure with the - '--disable-dependency-tracking' option to at least be able to build - the package (albeit without support for automatic dependency tracking). -See \`config.log' for more details" "$LINENO" 5; } - fi - { am_dirpart=; unset am_dirpart;} - { am_filepart=; unset am_filepart;} - { am_mf=; unset am_mf;} - { am_rc=; unset am_rc;} - rm -f conftest-deps.mk -} - ;; - "libtool":C) - - # See if we are running on zsh, and set the options that allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST - fi - - cfgfile=${ofile}T - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL -# Generated automatically by $as_me ($PACKAGE) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. - -# Provide generalized library-building support services. -# Written by Gordon Matzigkeit, 1996 - -# Copyright (C) 2014 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. - -# GNU Libtool 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 of the License, or -# (at your option) any later version. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program or library that is built -# using GNU Libtool, you may include this file under the same -# distribution terms that you use for the rest of that program. -# -# GNU Libtool 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 . - - -# The names of the tagged configurations supported by this script. -available_tags='CXX ' - -# Configured defaults for sys_lib_dlsearch_path munging. -: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} - -# ### BEGIN LIBTOOL CONFIG - -# Which release of libtool.m4 was used? -macro_version=$macro_version -macro_revision=$macro_revision - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# What type of objects to build. -pic_mode=$pic_mode - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# Shared archive member basename,for filename based shared library versioning on AIX. -shared_archive_member_spec=$shared_archive_member_spec - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# An echo program that protects backslashes. -ECHO=$lt_ECHO - -# The PATH separator for the build system. -PATH_SEPARATOR=$lt_PATH_SEPARATOR - -# 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 - -# 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//" - -# A grep program that handles long lines. -GREP=$lt_GREP - -# An ERE matcher. -EGREP=$lt_EGREP - -# A literal string matcher. -FGREP=$lt_FGREP - -# A BSD- or MS-compatible name lister. -NM=$lt_NM - -# Whether we need soft or hard links. -LN_S=$lt_LN_S - -# What is the maximum length of a command? -max_cmd_len=$max_cmd_len - -# Object file suffix (normally "o"). -objext=$ac_objext - -# Executable file suffix (normally ""). -exeext=$exeext - -# whether the shell understands "unset". -lt_unset=$lt_unset - -# turn spaces into newlines. -SP2NL=$lt_lt_SP2NL - -# turn newlines into spaces. -NL2SP=$lt_lt_NL2SP - -# convert \$build file names to \$host format. -to_host_file_cmd=$lt_cv_to_host_file_cmd - -# convert \$build files to toolchain format. -to_tool_file_cmd=$lt_cv_to_tool_file_cmd - -# An object symbol dumper. -OBJDUMP=$lt_OBJDUMP - -# 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 - -# How to find potential files when deplibs_check_method = "file_magic". -file_magic_glob=$lt_file_magic_glob - -# Find potential files using nocaseglob when deplibs_check_method = "file_magic". -want_nocaseglob=$lt_want_nocaseglob - -# DLL creation program. -DLLTOOL=$lt_DLLTOOL - -# Command to associate shared and link libraries. -sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd - -# The archiver. -AR=$lt_AR - -# Flags to create an archive. -AR_FLAGS=$lt_AR_FLAGS - -# How to feed a file listing to the archiver. -archiver_list_spec=$lt_archiver_list_spec - -# A symbol stripping program. -STRIP=$lt_STRIP - -# Commands used to install an old-style archive. -RANLIB=$lt_RANLIB -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Whether to use a lock for old archive extraction. -lock_old_archive_extraction=$lock_old_archive_extraction - -# A C compiler. -LTCC=$lt_CC - -# LTCC compiler flags. -LTCFLAGS=$lt_CFLAGS - -# 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 into a list of symbols to manually relocate. -global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import - -# 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 - -# Transform the output of nm in a C name address pair when lib prefix is needed. -global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix - -# The name lister interface. -nm_interface=$lt_lt_cv_nm_interface - -# Specify filename containing input files for \$NM. -nm_file_list_spec=$lt_nm_file_list_spec - -# The root where to search for dependent libraries,and where our libraries should be installed. -lt_sysroot=$lt_sysroot - -# Command to truncate a binary pipe. -lt_truncate_bin=$lt_lt_cv_truncate_bin - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# Used to examine libraries when file_magic_cmd begins with "file". -MAGIC_CMD=$MAGIC_CMD - -# Must we lock files when doing compilation? -need_locks=$lt_need_locks - -# Manifest tool. -MANIFEST_TOOL=$lt_MANIFEST_TOOL - -# Tool to manipulate archived DWARF debug symbol files on Mac OS X. -DSYMUTIL=$lt_DSYMUTIL - -# Tool to change global to local symbols on Mac OS X. -NMEDIT=$lt_NMEDIT - -# Tool to manipulate fat objects and archives on Mac OS X. -LIPO=$lt_LIPO - -# ldd/readelf like tool for Mach-O binaries on Mac OS X. -OTOOL=$lt_OTOOL - -# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. -OTOOL64=$lt_OTOOL64 - -# Old archive suffix (normally "a"). -libext=$libext - -# Shared library suffix (normally ".so"). -shrext_cmds=$lt_shrext_cmds - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at link time. -variables_saved_for_relink=$lt_variables_saved_for_relink - -# 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 - -# Library versioning type. -version_type=$version_type - -# Shared library runtime path variable. -runpath_var=$runpath_var - -# Shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# 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 - -# Permission mode override for installation of shared libraries. -install_override_mode=$lt_install_override_mode - -# Command to use after installation of a shared archive. -postinstall_cmds=$lt_postinstall_cmds - -# Command to use after uninstallation of a shared archive. -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# As "finish_cmds", except a single script fragment to be evaled but -# not shown. -finish_eval=$lt_finish_eval - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Compile-time system search path for libraries. -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Detected run-time system search path for libraries. -sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path - -# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. -configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path - -# 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 - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - - -# The linker used to build libraries. -LD=$lt_LD - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds - -# A language specific compiler. -CC=$lt_compiler - -# Is the compiler the GNU compiler? -with_gcc=$GCC - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o - -# 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 - -# 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 - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object - -# 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 a shared archive. -archive_cmds=$lt_archive_cmds -archive_expsym_cmds=$lt_archive_expsym_cmds - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds -module_expsym_cmds=$lt_module_expsym_cmds - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag - -# 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 - -# 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 DIR/libNAME\$shared_ext during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \$shlibpath_var if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute - -# 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 - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs - -# 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 - -# 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 - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action - -# The directories searched by this compiler when creating a shared library. -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs - -# Dependencies to place before and after the objects being linked to -# create a shared library. -predep_objects=$lt_predep_objects -postdep_objects=$lt_postdep_objects -predeps=$lt_predeps -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 - -# ### END LIBTOOL CONFIG - -_LT_EOF - - cat <<'_LT_EOF' >> "$cfgfile" - -# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE - -# func_munge_path_list VARIABLE PATH -# ----------------------------------- -# VARIABLE is name of variable containing _space_ separated list of -# directories to be munged by the contents of PATH, which is string -# having a format: -# "DIR[:DIR]:" -# string "DIR[ DIR]" will be prepended to VARIABLE -# ":DIR[:DIR]" -# string "DIR[ DIR]" will be appended to VARIABLE -# "DIRP[:DIRP]::[DIRA:]DIRA" -# string "DIRP[ DIRP]" will be prepended to VARIABLE and string -# "DIRA[ DIRA]" will be appended to VARIABLE -# "DIR[:DIR]" -# VARIABLE will be replaced by "DIR[ DIR]" -func_munge_path_list () -{ - case x$2 in - x) - ;; - *:) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" - ;; - x:*) - eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" - ;; - *::*) - eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" - eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" - ;; - *) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" - ;; - esac -} - - -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -func_cc_basename () -{ - for cc_temp in $*""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac - done - func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -} - - -# ### END FUNCTIONS SHARED WITH CONFIGURE - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_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 set != "${COLLECT_NAMES+set}"; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - -ltmain=$ac_aux_dir/ltmain.sh - - - # 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" - - - cat <<_LT_EOF >> "$ofile" - -# ### BEGIN LIBTOOL TAG CONFIG: CXX - -# The linker used to build libraries. -LD=$lt_LD_CXX - -# How to create reloadable object files. -reload_flag=$lt_reload_flag_CXX -reload_cmds=$lt_reload_cmds_CXX - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds_CXX - -# A language specific compiler. -CC=$lt_compiler_CXX - -# Is the compiler the GNU compiler? -with_gcc=$GCC_CXX - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic_CXX - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl_CXX - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static_CXX - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX - -# 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 - -# 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 - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object_CXX - -# 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 a shared archive. -archive_cmds=$lt_archive_cmds_CXX -archive_expsym_cmds=$lt_archive_expsym_cmds_CXX - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds_CXX -module_expsym_cmds=$lt_module_expsym_cmds_CXX - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld_CXX - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag_CXX - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag_CXX - -# 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 - -# 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 DIR/libNAME\$shared_ext during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \$shlibpath_var if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute_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 - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath_CXX - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs_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 - -# 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 - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds_CXX - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds_CXX - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec_CXX - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action_CXX - -# The directories searched by this compiler when creating a shared library. -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX - -# Dependencies to place before and after the objects being linked to -# create a shared library. -predep_objects=$lt_predep_objects_CXX -postdep_objects=$lt_postdep_objects_CXX -predeps=$lt_predeps_CXX -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 - -# ### END LIBTOOL TAG CONFIG: CXX -_LT_EOF - - ;; - "include":C) test -d include || mkdir include ;; - "src":C) -test -d src || mkdir src -test -d src/$TARGETDIR || mkdir src/$TARGETDIR - ;; - - esac -done # for ac_tag - - -as_fn_exit 0 -_ACEOF -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - -# 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 || as_fn_exit 1 -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - - -# Copy this file instead of using AC_CONFIG_LINK in order to support -# compiling with MSVC, which won't understand cygwin style symlinks. -cp ${srcdir}/src/$TARGETDIR/ffitarget.h include/ffitarget.h diff --git a/configure.ac b/configure.ac deleted file mode 100644 index b764368..0000000 --- a/configure.ac +++ /dev/null @@ -1,394 +0,0 @@ -dnl Process this with autoconf to create configure - -AC_PREREQ(2.68) - -AC_INIT([libffi], [3.3], [http://github.com/libffi/libffi/issues]) -AC_CONFIG_HEADERS([fficonfig.h]) - -AC_CANONICAL_SYSTEM -target_alias=${target_alias-$host_alias} - -case "${host}" in - frv*-elf) - LDFLAGS=`echo $LDFLAGS | sed "s/\-B[^ ]*libgloss\/frv\///"`\ -B`pwd`/../libgloss/frv/ - ;; -esac - -AX_ENABLE_BUILDDIR - -AM_INIT_AUTOMAKE - -# The same as in boehm-gc and libstdc++. Have to borrow it from there. -# We must force CC to /not/ be precious variables; otherwise -# the wrong, non-multilib-adjusted value will be used in multilibs. -# As a side effect, we have to subst CFLAGS ourselves. -# Also save and restore CFLAGS, since AC_PROG_CC will come up with -# defaults of its own if none are provided. - -m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS]) -m4_define([_AC_ARG_VAR_PRECIOUS],[]) -save_CFLAGS=$CFLAGS -AC_PROG_CC -AC_PROG_CXX -CFLAGS=$save_CFLAGS -m4_undefine([_AC_ARG_VAR_PRECIOUS]) -m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS]) - -AC_SUBST(CFLAGS) - -AM_PROG_AS -AM_PROG_CC_C_O -AC_PROG_LIBTOOL -AC_CONFIG_MACRO_DIR([m4]) - -# Test for 64-bit build. -AC_CHECK_SIZEOF([size_t]) - -AX_COMPILER_VENDOR -AX_CC_MAXOPT -# The AX_CFLAGS_WARN_ALL macro doesn't currently work for sunpro -# compiler. -if test "$ax_cv_c_compiler_vendor" != "sun"; then - AX_CFLAGS_WARN_ALL -fi - -if test "x$GCC" = "xyes"; then - CFLAGS="$CFLAGS -fexceptions" -fi - -cat > local.exp < conftest.s - if $CC $CFLAGS -c conftest.s > /dev/null 2>&1; then - libffi_cv_as_x86_pcrel=yes - fi - ]) - if test "x$libffi_cv_as_x86_pcrel" = xyes; then - AC_DEFINE(HAVE_AS_X86_PCREL, 1, - [Define if your assembler supports PC relative relocs.]) - fi - ;; - - S390) - AC_CACHE_CHECK([compiler uses zarch features], - libffi_cv_as_s390_zarch, [ - libffi_cv_as_s390_zarch=no - echo 'void foo(void) { bar(); bar(); }' > conftest.c - if $CC $CFLAGS -S conftest.c > /dev/null 2>&1; then - if grep -q brasl conftest.s; then - libffi_cv_as_s390_zarch=yes - fi - fi - ]) - if test "x$libffi_cv_as_s390_zarch" = xyes; then - AC_DEFINE(HAVE_AS_S390_ZARCH, 1, - [Define if the compiler uses zarch features.]) - fi - ;; -esac - -# On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC. -AC_ARG_ENABLE(pax_emutramp, - [ --enable-pax_emutramp enable pax emulated trampolines, for we can't use PROT_EXEC], - if test "$enable_pax_emutramp" = "yes"; then - AC_DEFINE(FFI_MMAP_EXEC_EMUTRAMP_PAX, 1, - [Define this if you want to enable pax emulated trampolines]) - fi) - -LT_SYS_SYMBOL_USCORE -if test "x$sys_symbol_underscore" = xyes; then - AC_DEFINE(SYMBOL_UNDERSCORE, 1, [Define if symbols are underscored.]) -fi - -FFI_EXEC_TRAMPOLINE_TABLE=0 -case "$target" in - *arm*-apple-* | aarch64-apple-*) - FFI_EXEC_TRAMPOLINE_TABLE=1 - AC_DEFINE(FFI_EXEC_TRAMPOLINE_TABLE, 1, - [Cannot use PROT_EXEC on this target, so, we revert to - alternative means]) - ;; - *-apple-* | *-*-freebsd* | *-*-kfreebsd* | *-*-openbsd* | *-pc-solaris* | *-linux-android*) - AC_DEFINE(FFI_MMAP_EXEC_WRIT, 1, - [Cannot use malloc on this target, so, we revert to - alternative means]) - ;; -esac -AM_CONDITIONAL(FFI_EXEC_TRAMPOLINE_TABLE, test x$FFI_EXEC_TRAMPOLINE_TABLE = x1) -AC_SUBST(FFI_EXEC_TRAMPOLINE_TABLE) - -if test x$TARGET = xX86_64; then - AC_CACHE_CHECK([toolchain supports unwind section type], - libffi_cv_as_x86_64_unwind_section_type, [ - cat > conftest1.s << EOF -.text -.globl foo -foo: -jmp bar -.section .eh_frame,"a",@unwind -bar: -EOF - - cat > conftest2.c << EOF -extern void foo(); -int main(){foo();} -EOF - - libffi_cv_as_x86_64_unwind_section_type=no - # we ensure that we can compile _and_ link an assembly file containing an @unwind section - # since the compiler can support it and not the linker (ie old binutils) - if $CC -Wa,--fatal-warnings $CFLAGS -c conftest1.s > /dev/null 2>&1 && \ - $CC conftest2.c conftest1.o > /dev/null 2>&1 ; then - libffi_cv_as_x86_64_unwind_section_type=yes - fi - ]) - if test "x$libffi_cv_as_x86_64_unwind_section_type" = xyes; then - AC_DEFINE(HAVE_AS_X86_64_UNWIND_SECTION_TYPE, 1, - [Define if your assembler supports unwind section type.]) - fi -fi - -if test "x$GCC" = "xyes"; then - AC_CACHE_CHECK([whether .eh_frame section should be read-only], - libffi_cv_ro_eh_frame, [ - libffi_cv_ro_eh_frame=no - echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c - if $CC $CFLAGS -c -fpic -fexceptions -o conftest.o conftest.c > /dev/null 2>&1; then - objdump -h conftest.o > conftest.dump 2>&1 - libffi_eh_frame_line=`grep -n eh_frame conftest.dump | cut -d: -f 1` - if test "x$libffi_eh_frame_line" != "x"; then - libffi_test_line=`expr $libffi_eh_frame_line + 1`p - sed -n $libffi_test_line conftest.dump > conftest.line - if grep READONLY conftest.line > /dev/null; then - libffi_cv_ro_eh_frame=yes - fi - fi - fi - rm -f conftest.* - ]) - if test "x$libffi_cv_ro_eh_frame" = xyes; then - AC_DEFINE(HAVE_RO_EH_FRAME, 1, - [Define if .eh_frame sections should be read-only.]) - AC_DEFINE(EH_FRAME_FLAGS, "a", - [Define to the flags needed for the .section .eh_frame directive. ]) - else - AC_DEFINE(EH_FRAME_FLAGS, "aw", - [Define to the flags needed for the .section .eh_frame directive. ]) - fi - - AC_CACHE_CHECK([for __attribute__((visibility("hidden")))], - libffi_cv_hidden_visibility_attribute, [ - echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1 ; }' > conftest.c - libffi_cv_hidden_visibility_attribute=no - if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then - if egrep '(\.hidden|\.private_extern).*foo' conftest.s >/dev/null; then - libffi_cv_hidden_visibility_attribute=yes - fi - fi - rm -f conftest.* - ]) - if test $libffi_cv_hidden_visibility_attribute = yes; then - AC_DEFINE(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE, 1, - [Define if __attribute__((visibility("hidden"))) is supported.]) - fi -fi - -AC_ARG_ENABLE(docs, - AC_HELP_STRING([--disable-docs], - [Disable building of docs (default: no)]), - [enable_docs=no], - [enable_docs=yes]) -AM_CONDITIONAL(BUILD_DOCS, [test x$enable_docs = xyes]) - -AH_BOTTOM([ -#ifdef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE -#ifdef LIBFFI_ASM -#ifdef __APPLE__ -#define FFI_HIDDEN(name) .private_extern name -#else -#define FFI_HIDDEN(name) .hidden name -#endif -#else -#define FFI_HIDDEN __attribute__ ((visibility ("hidden"))) -#endif -#else -#ifdef LIBFFI_ASM -#define FFI_HIDDEN(name) -#else -#define FFI_HIDDEN -#endif -#endif -]) - -AC_SUBST(TARGET) -AC_SUBST(TARGETDIR) - -changequote(<,>) -TARGET_OBJ= -for i in $SOURCES; do - TARGET_OBJ="${TARGET_OBJ} src/${TARGETDIR}/"`echo $i | sed 's/[cS]$/lo/'` -done -changequote([,]) -AC_SUBST(TARGET_OBJ) - -AC_SUBST(SHELL) - -AC_ARG_ENABLE(debug, -[ --enable-debug debugging mode], - if test "$enable_debug" = "yes"; then - AC_DEFINE(FFI_DEBUG, 1, [Define this if you want extra debugging.]) - fi) -AM_CONDITIONAL(FFI_DEBUG, test "$enable_debug" = "yes") - -AC_ARG_ENABLE(structs, -[ --disable-structs omit code for struct support], - if test "$enable_structs" = "no"; then - AC_DEFINE(FFI_NO_STRUCTS, 1, [Define this if you do not want support for aggregate types.]) - fi) -AM_CONDITIONAL(FFI_DEBUG, test "$enable_debug" = "yes") - -AC_ARG_ENABLE(raw-api, -[ --disable-raw-api make the raw api unavailable], - if test "$enable_raw_api" = "no"; then - AC_DEFINE(FFI_NO_RAW_API, 1, [Define this if you do not want support for the raw API.]) - fi) - -AC_ARG_ENABLE(purify-safety, -[ --enable-purify-safety purify-safe mode], - if test "$enable_purify_safety" = "yes"; then - AC_DEFINE(USING_PURIFY, 1, [Define this if you are using Purify and want to suppress spurious messages.]) - fi) - -AC_ARG_ENABLE(multi-os-directory, -[ --disable-multi-os-directory - disable use of gcc --print-multi-os-directory to change the library installation directory]) - -# These variables are only ever used when we cross-build to X86_WIN32. -# And we only support this with GCC, so... -if test "x$GCC" = "xyes"; then - if test -n "$with_cross_host" && - test x"$with_cross_host" != x"no"; then - toolexecdir='${exec_prefix}'/'$(target_alias)' - toolexeclibdir='${toolexecdir}'/lib - else - toolexecdir='${libdir}'/gcc-lib/'$(target_alias)' - toolexeclibdir='${libdir}' - fi - if test x"$enable_multi_os_directory" != x"no"; then - multi_os_directory=`$CC $CFLAGS -print-multi-os-directory` - case $multi_os_directory in - .) ;; # Avoid trailing /. - ../*) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; - esac - fi - AC_SUBST(toolexecdir) -else - toolexeclibdir='${libdir}' -fi -AC_SUBST(toolexeclibdir) - -# Check linker support. -LIBFFI_ENABLE_SYMVERS - -AC_CONFIG_COMMANDS(include, [test -d include || mkdir include]) -AC_CONFIG_COMMANDS(src, [ -test -d src || mkdir src -test -d src/$TARGETDIR || mkdir src/$TARGETDIR -], [TARGETDIR="$TARGETDIR"]) - -AC_CONFIG_FILES(include/Makefile include/ffi.h Makefile testsuite/Makefile man/Makefile doc/Makefile libffi.pc) - -AC_OUTPUT - -# Copy this file instead of using AC_CONFIG_LINK in order to support -# compiling with MSVC, which won't understand cygwin style symlinks. -cp ${srcdir}/src/$TARGETDIR/ffitarget.h include/ffitarget.h diff --git a/configure.host b/configure.host deleted file mode 100644 index 9a72cda..0000000 --- a/configure.host +++ /dev/null @@ -1,303 +0,0 @@ -# configure.host -# -# This shell script handles all host based configuration for libffi. -# - -# THIS TABLE IS SORTED. KEEP IT THAT WAY. -# Most of the time we can define all the variables all at once... -case "${host}" in - aarch64*-*-cygwin* | aarch64*-*-mingw* | aarch64*-*-win* ) - TARGET=ARM_WIN64; TARGETDIR=aarch64 - MSVC=1 - ;; - - aarch64*-*-*) - TARGET=AARCH64; TARGETDIR=aarch64 - SOURCES="ffi.c sysv.S" - ;; - - alpha*-*-*) - TARGET=ALPHA; TARGETDIR=alpha; - # Support 128-bit long double, changeable via command-line switch. - HAVE_LONG_DOUBLE='defined(__LONG_DOUBLE_128__)' - SOURCES="ffi.c osf.S" - ;; - - arc*-*-*) - TARGET=ARC; TARGETDIR=arc - SOURCES="ffi.c arcompact.S" - ;; - - arm*-*-cygwin* | arm*-*-mingw* | arm*-*-win* ) - TARGET=ARM_WIN32; TARGETDIR=arm - MSVC=1 - ;; - - arm*-*-*) - TARGET=ARM; TARGETDIR=arm - SOURCES="ffi.c sysv.S" - ;; - - avr32*-*-*) - TARGET=AVR32; TARGETDIR=avr32 - SOURCES="ffi.c sysv.S" - ;; - - bfin*) - TARGET=BFIN; TARGETDIR=bfin - SOURCES="ffi.c sysv.S" - ;; - - cris-*-*) - TARGET=LIBFFI_CRIS; TARGETDIR=cris - SOURCES="ffi.c sysv.S" - ;; - - frv-*-*) - TARGET=FRV; TARGETDIR=frv - SOURCES="ffi.c eabi.S" - ;; - - hppa*-*-linux* | parisc*-*-linux* | hppa*-*-openbsd*) - TARGET=PA_LINUX; TARGETDIR=pa - SOURCES="ffi.c linux.S" - ;; - hppa*64-*-hpux*) - TARGET=PA64_HPUX; TARGETDIR=pa - ;; - hppa*-*-hpux*) - TARGET=PA_HPUX; TARGETDIR=pa - SOURCES="ffi.c hpux32.S" - ;; - - i?86-*-freebsd* | i?86-*-openbsd*) - TARGET=X86_FREEBSD; TARGETDIR=x86 - ;; - - i?86-*-cygwin* | i?86-*-mingw* | i?86-*-win* | i?86-*-os2* | i?86-*-interix* \ - | x86_64-*-cygwin* | x86_64-*-mingw* | x86_64-*-win* ) - TARGETDIR=x86 - if test $ac_cv_sizeof_size_t = 4; then - TARGET=X86_WIN32 - else - TARGET=X86_WIN64 - fi - if test "${ax_cv_c_compiler_vendor}" = "microsoft"; then - MSVC=1 - fi - # All mingw/cygwin/win32 builds require -no-undefined for sharedlib. - # We must also check with_cross_host to decide if this is a native - # or cross-build and select where to install dlls appropriately. - if test -n "$with_cross_host" && - test x"$with_cross_host" != x"no"; then - AM_LTLDFLAGS='-no-undefined -bindir "$(toolexeclibdir)"'; - else - AM_LTLDFLAGS='-no-undefined -bindir "$(bindir)"'; - fi - ;; - - i?86-*-darwin* | x86_64-*-darwin* | i?86-*-ios | x86_64-*-ios) - TARGETDIR=x86 - if test $ac_cv_sizeof_size_t = 4; then - TARGET=X86_DARWIN - else - TARGET=X86_64 - fi - ;; - - i?86-*-* | x86_64-*-* | amd64-*) - TARGETDIR=x86 - if test $ac_cv_sizeof_size_t = 4; then - case "$host" in - x86_64-*x32|x86_64-x32-*) - TARGET_X32=yes - TARGET=X86_64 - ;; - *) - echo 'int foo (void) { return __x86_64__; }' > conftest.c - if $CC $CFLAGS -Werror -S conftest.c -o conftest.s > /dev/null 2>&1; then - TARGET_X32=yes - TARGET=X86_64 - else - TARGET=X86; - fi - rm -f conftest.* - ;; - esac - else - TARGET=X86_64; - fi - ;; - - ia64*-*-*) - TARGET=IA64; TARGETDIR=ia64 - SOURCES="ffi.c unix.S" - ;; - - m32r*-*-*) - TARGET=M32R; TARGETDIR=m32r - SOURCES="ffi.c sysv.S" - ;; - - m68k-*-*) - TARGET=M68K; TARGETDIR=m68k - SOURCES="ffi.c sysv.S" - ;; - - m88k-*-*) - TARGET=M88K; TARGETDIR=m88k - SOURCES="ffi.c obsd.S" - ;; - - microblaze*-*-*) - TARGET=MICROBLAZE; TARGETDIR=microblaze - SOURCES="ffi.c sysv.S" - ;; - - moxie-*-*) - TARGET=MOXIE; TARGETDIR=moxie - SOURCES="ffi.c eabi.S" - ;; - - metag-*-*) - TARGET=METAG; TARGETDIR=metag - SOURCES="ffi.c sysv.S" - ;; - - mips-sgi-irix5.* | mips-sgi-irix6.* | mips*-*-rtems*) - TARGET=MIPS; TARGETDIR=mips - ;; - mips*-*linux* | mips*-*-openbsd*) - # Support 128-bit long double for NewABI. - HAVE_LONG_DOUBLE='defined(__mips64)' - TARGET=MIPS; TARGETDIR=mips - ;; - - nios2*-linux*) - TARGET=NIOS2; TARGETDIR=nios2 - SOURCES="ffi.c sysv.S" - ;; - - or1k*-*-*) - TARGET=OR1K; TARGETDIR=or1k - SOURCES="ffi.c sysv.S" - ;; - - powerpc*-*-linux* | powerpc-*-sysv*) - TARGET=POWERPC; TARGETDIR=powerpc - HAVE_LONG_DOUBLE_VARIANT=1 - ;; - powerpc-*-amigaos*) - TARGET=POWERPC; TARGETDIR=powerpc - ;; - powerpc-*-beos*) - TARGET=POWERPC; TARGETDIR=powerpc - ;; - powerpc-*-darwin* | powerpc64-*-darwin*) - TARGET=POWERPC_DARWIN; TARGETDIR=powerpc - ;; - powerpc-*-aix* | rs6000-*-aix*) - TARGET=POWERPC_AIX; TARGETDIR=powerpc - ;; - powerpc-*-freebsd* | powerpc-*-openbsd* | powerpc-*-netbsd*) - TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc - HAVE_LONG_DOUBLE_VARIANT=1 - ;; - powerpc64-*-freebsd*) - TARGET=POWERPC; TARGETDIR=powerpc - ;; - powerpc*-*-rtems*) - TARGET=POWERPC; TARGETDIR=powerpc - ;; - - riscv*-*) - TARGET=RISCV; TARGETDIR=riscv - SOURCES="ffi.c sysv.S" - ;; - - s390-*-* | s390x-*-*) - TARGET=S390; TARGETDIR=s390 - SOURCES="ffi.c sysv.S" - ;; - - sh-*-* | sh[34]*-*-*) - TARGET=SH; TARGETDIR=sh - SOURCES="ffi.c sysv.S" - ;; - sh64-*-* | sh5*-*-*) - TARGET=SH64; TARGETDIR=sh64 - SOURCES="ffi.c sysv.S" - ;; - - sparc*-*-*) - TARGET=SPARC; TARGETDIR=sparc - SOURCES="ffi.c ffi64.c v8.S v9.S" - ;; - - tile*-*) - TARGET=TILE; TARGETDIR=tile - SOURCES="ffi.c tile.S" - ;; - - vax-*-*) - TARGET=VAX; TARGETDIR=vax - SOURCES="ffi.c elfbsd.S" - ;; - - xtensa*-*) - TARGET=XTENSA; TARGETDIR=xtensa - SOURCES="ffi.c sysv.S" - ;; -esac - -# ... but some of the cases above share configury. -case "${TARGET}" in - ARM_WIN32) - SOURCES="ffi.c sysv_msvc_arm32.S" - ;; - ARM_WIN64) - SOURCES="ffi.c win64_armasm.S" - ;; - MIPS) - SOURCES="ffi.c o32.S n32.S" - ;; - POWERPC) - SOURCES="ffi.c ffi_sysv.c ffi_linux64.c sysv.S ppc_closure.S" - SOURCES="${SOURCES} linux64.S linux64_closure.S" - ;; - POWERPC_AIX) - SOURCES="ffi_darwin.c aix.S aix_closure.S" - ;; - POWERPC_DARWIN) - SOURCES="ffi_darwin.c darwin.S darwin_closure.S" - ;; - POWERPC_FREEBSD) - SOURCES="ffi.c ffi_sysv.c sysv.S ppc_closure.S" - ;; - X86 | X86_DARWIN | X86_FREEBSD | X86_WIN32) - if test "$MSVC" = 1; then - SOURCES="ffi.c sysv_intel.S" - else - SOURCES="ffi.c sysv.S" - fi - ;; - X86_64) - if test x"$TARGET_X32" = xyes; then - SOURCES="ffi64.c unix64.S" - else - SOURCES="ffi64.c unix64.S ffiw64.c win64.S" - fi - ;; - X86_WIN64) - if test "$MSVC" = 1; then - SOURCES="ffiw64.c win64_intel.S" - else - SOURCES="ffiw64.c win64.S" - fi - ;; -esac - -# If we failed to configure SOURCES, we can't do anything. -if test -z "${SOURCES}"; then - UNSUPPORTED=1 -fi diff --git a/depcomp b/depcomp deleted file mode 100755 index 65cbf70..0000000 --- a/depcomp +++ /dev/null @@ -1,791 +0,0 @@ -#! /bin/sh -# depcomp - compile a program generating dependencies as side-effects - -scriptversion=2018-03-07.03; # UTC - -# Copyright (C) 1999-2018 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, see . - -# 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 outputting dependencies. - libtool Whether libtool is used (yes/no). - -Report bugs to . -EOF - exit $? - ;; - -v | --v*) - echo "depcomp $scriptversion" - exit $? - ;; -esac - -# Get the directory component of the given path, and save it in the -# global variables '$dir'. Note that this directory component will -# be either empty or ending with a '/' character. This is deliberate. -set_dir_from () -{ - case $1 in - */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; - *) dir=;; - esac -} - -# Get the suffix-stripped basename of the given path, and save it the -# global variable '$base'. -set_base_from () -{ - base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` -} - -# If no dependency file was actually created by the compiler invocation, -# we still have to create a dummy depfile, to avoid errors with the -# Makefile "include basename.Plo" scheme. -make_dummy_depfile () -{ - echo "#dummy" > "$depfile" -} - -# Factor out some common post-processing of the generated depfile. -# Requires the auxiliary global variable '$tmpdepfile' to be set. -aix_post_process_depfile () -{ - # If the compiler actually managed to produce a dependency file, - # post-process it. - if test -f "$tmpdepfile"; then - # Each line is of the form 'foo.o: dependency.h'. - # Do two passes, one to just change these to - # $object: dependency.h - # and one to simply output - # dependency.h: - # which is needed to avoid the deleted-header problem. - { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" - sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" - } > "$depfile" - rm -f "$tmpdepfile" - else - make_dummy_depfile - fi -} - -# A tabulation character. -tab=' ' -# A newline character. -nl=' -' -# Character ranges might be problematic outside the C locale. -# These definitions help. -upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ -lower=abcdefghijklmnopqrstuvwxyz -digits=0123456789 -alpha=${upper}${lower} - -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" - -# Avoid interferences from the environment. -gccflag= dashmflag= - -# 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 - -cygpath_u="cygpath -u -f -" -if test "$depmode" = msvcmsys; then - # This is just like msvisualcpp but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u='sed s,\\\\,/,g' - depmode=msvisualcpp -fi - -if test "$depmode" = msvc7msys; then - # This is just like msvc7 but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u='sed s,\\\\,/,g' - depmode=msvc7 -fi - -if test "$depmode" = xlc; then - # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. - gccflag=-qmakedep=gcc,-MF - depmode=gcc -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. -## Unfortunately, FreeBSD c89 acceptance of flags depends upon -## the command line argument order; so add the flags where they -## appear in depend2.am. Note that the slowdown incurred here -## affects only configure: in makefiles, %FASTDEP% shortcuts this. - for arg - do - case $arg in - -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; - *) set fnord "$@" "$arg" ;; - esac - shift # fnord - shift # $arg - done - "$@" - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - mv "$tmpdepfile" "$depfile" - ;; - -gcc) -## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. -## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. -## (see the conditional assignment to $gccflag above). -## 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). Also, it might not be -## supported by the other compilers which use the 'gcc' depmode. -## - 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 -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - # 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. -## 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. hp depmode also adds that space, but also prefixes the VPATH -## to the object. Take care to not repeat it in the output. -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - tr ' ' "$nl" < "$tmpdepfile" \ - | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -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 -ne 0; then - 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 ' ' "$nl" < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ - | tr "$nl" ' ' >> "$depfile" - echo >> "$depfile" - # The second pass generates a dummy entry for each header file. - tr ' ' "$nl" < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> "$depfile" - else - make_dummy_depfile - fi - rm -f "$tmpdepfile" - ;; - -xlc) - # 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 - ;; - -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. - set_dir_from "$object" - set_base_from "$object" - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.u - tmpdepfile2=$base.u - tmpdepfile3=$dir.libs/$base.u - "$@" -Wc,-M - else - tmpdepfile1=$dir$base.u - tmpdepfile2=$dir$base.u - tmpdepfile3=$dir$base.u - "$@" -M - fi - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - do - test -f "$tmpdepfile" && break - done - aix_post_process_depfile - ;; - -tcc) - # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 - # FIXME: That version still under development at the moment of writing. - # Make that this statement remains true also for stable, released - # versions. - # It will wrap lines (doesn't matter whether long or short) with a - # trailing '\', as in: - # - # foo.o : \ - # foo.c \ - # foo.h \ - # - # It will put a trailing '\' even on the last line, and will use leading - # spaces rather than leading tabs (at least since its commit 0394caf7 - # "Emit spaces for -MD"). - "$@" -MD -MF "$tmpdepfile" - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. - # We have to change lines of the first kind to '$object: \'. - sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" - # And for each line of the second kind, we have to emit a 'dep.h:' - # dummy dependency, to avoid the deleted-header problem. - sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" - rm -f "$tmpdepfile" - ;; - -## The order of this option in the case statement is important, since the -## shell code in configure will try each of these formats in the order -## listed in this file. A plain '-MD' option would be understood by many -## compilers, so we must ensure this comes after the gcc and icc options. -pgcc) - # Portland's C compiler understands '-MD'. - # Will always output deps to 'file.d' where file is the root name of the - # source file under compilation, even if file resides in a subdirectory. - # The object file name does not affect the name of the '.d' file. - # pgcc 10.2 will output - # foo.o: sub/foo.c sub/foo.h - # and will wrap long lines using '\' : - # foo.o: sub/foo.c ... \ - # sub/foo.h ... \ - # ... - set_dir_from "$object" - # Use the source, not the object, to determine the base name, since - # that's sadly what pgcc will do too. - set_base_from "$source" - tmpdepfile=$base.d - - # For projects that build the same source file twice into different object - # files, the pgcc approach of using the *source* file root name can cause - # problems in parallel builds. Use a locking strategy to avoid stomping on - # the same $tmpdepfile. - lockdir=$base.d-lock - trap " - echo '$0: caught signal, cleaning up...' >&2 - rmdir '$lockdir' - exit 1 - " 1 2 13 15 - numtries=100 - i=$numtries - while test $i -gt 0; do - # mkdir is a portable test-and-set. - if mkdir "$lockdir" 2>/dev/null; then - # This process acquired the lock. - "$@" -MD - stat=$? - # Release the lock. - rmdir "$lockdir" - break - else - # If the lock is being held by a different process, wait - # until the winning process is done or we timeout. - while test -d "$lockdir" && test $i -gt 0; do - sleep 1 - i=`expr $i - 1` - done - fi - i=`expr $i - 1` - done - trap - 1 2 13 15 - if test $i -le 0; then - echo "$0: failed to acquire lock after $numtries attempts" >&2 - echo "$0: check lockdir '$lockdir'" >&2 - exit 1 - fi - - if test $stat -ne 0; then - 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" - ;; - -hp2) - # The "hp" stanza above does not work with aCC (C++) and HP's ia64 - # compilers, which have integrated preprocessors. The correct option - # to use with these is +Maked; it writes dependencies to a file named - # 'foo.d', which lands next to the object file, wherever that - # happens to be. - # Much of this is similar to the tru64 case; see comments there. - set_dir_from "$object" - set_base_from "$object" - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir.libs/$base.d - "$@" -Wc,+Maked - else - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir$base.d - "$@" +Maked - fi - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile1" "$tmpdepfile2" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" - # Add 'dependent.h:' lines. - sed -ne '2,${ - s/^ *// - s/ \\*$// - s/$/:/ - p - }' "$tmpdepfile" >> "$depfile" - else - make_dummy_depfile - fi - rm -f "$tmpdepfile" "$tmpdepfile2" - ;; - -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. - set_dir_from "$object" - set_base_from "$object" - - if test "$libtool" = yes; then - # Libtool generates 2 separate objects for the 2 libraries. These - # two compilations output dependencies 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$base.o.d # libtool 1.5 - tmpdepfile2=$dir.libs/$base.o.d # Likewise. - tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 - "$@" -Wc,-MD - else - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir$base.d - tmpdepfile3=$dir$base.d - "$@" -MD - fi - - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - do - test -f "$tmpdepfile" && break - done - # Same post-processing that is required for AIX mode. - aix_post_process_depfile - ;; - -msvc7) - if test "$libtool" = yes; then - showIncludes=-Wc,-showIncludes - else - showIncludes=-showIncludes - fi - "$@" $showIncludes > "$tmpdepfile" - stat=$? - grep -v '^Note: including file: ' "$tmpdepfile" - if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - # The first sed program below extracts the file names and escapes - # backslashes for cygpath. The second sed program outputs the file - # name when reading, but also accumulates all include files in the - # hold buffer in order to output them again at the end. This only - # works with sed implementations that can handle large buffers. - sed < "$tmpdepfile" -n ' -/^Note: including file: *\(.*\)/ { - s//\1/ - s/\\/\\\\/g - p -}' | $cygpath_u | sort -u | sed -n ' -s/ /\\ /g -s/\(.*\)/'"$tab"'\1 \\/p -s/.\(.*\) \\/\1:/ -H -$ { - s/.*/'"$tab"'/ - G - p -}' >> "$depfile" - echo >> "$depfile" # make sure the fragment doesn't end with a backslash - rm -f "$tmpdepfile" - ;; - -msvc7msys) - # 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 - ;; - -#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 "X$1" != 'X--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|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - # Some versions of the HPUX 10.20 sed can't process this sed invocation - # correctly. Breaking it into two sed invocations is a workaround. - tr ' ' "$nl" < "$tmpdepfile" \ - | 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 "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - # X makedepend - shift - cleared=no eat=no - for arg - do - case $cleared in - no) - set ""; shift - cleared=yes ;; - esac - if test $eat = yes; then - eat=no - continue - fi - 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. - -arch) - eat=yes ;; - -*|$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" - # makedepend may prepend the VPATH from the source file name to the object. - # No need to regex-escape $object, excess matching of '.' is harmless. - sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" - # Some versions of the HPUX 10.20 sed can't process the last invocation - # correctly. Breaking it into two sed invocations is a workaround. - sed '1,2d' "$tmpdepfile" \ - | tr ' ' "$nl" \ - | 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 "X$1" != 'X--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. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - IFS=" " - for arg - do - case "$arg" in - -o) - shift - ;; - $object) - shift - ;; - "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") - set fnord "$@" - shift - shift - ;; - *) - set fnord "$@" "$arg" - shift - shift - ;; - esac - done - "$@" -E 2>/dev/null | - sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" - echo "$tab" >> "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvcmsys) - # 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 - ;; - -none) - exec "$@" - ;; - -*) - echo "Unknown depmode $depmode" 1>&2 - exit 1 - ;; -esac - -exit 0 - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'before-save-hook 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC0" -# time-stamp-end: "; # UTC" -# End: diff --git a/doc/Makefile.am b/doc/Makefile.am deleted file mode 100644 index 43b650a..0000000 --- a/doc/Makefile.am +++ /dev/null @@ -1,3 +0,0 @@ -## Process this with automake to create Makefile.in - -info_TEXINFOS = libffi.texi diff --git a/doc/Makefile.in b/doc/Makefile.in deleted file mode 100644 index dcee846..0000000 --- a/doc/Makefile.in +++ /dev/null @@ -1,814 +0,0 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2018 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@ -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -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@ -target_triplet = @target@ -subdir = doc -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/asmcfi.m4 \ - $(top_srcdir)/m4/ax_append_flag.m4 \ - $(top_srcdir)/m4/ax_cc_maxopt.m4 \ - $(top_srcdir)/m4/ax_cflags_warn_all.m4 \ - $(top_srcdir)/m4/ax_check_compile_flag.m4 \ - $(top_srcdir)/m4/ax_compiler_vendor.m4 \ - $(top_srcdir)/m4/ax_configure_args.m4 \ - $(top_srcdir)/m4/ax_enable_builddir.m4 \ - $(top_srcdir)/m4/ax_gcc_archflag.m4 \ - $(top_srcdir)/m4/ax_gcc_x86_cpuid.m4 \ - $(top_srcdir)/m4/ax_require_defined.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/version.texi \ - $(srcdir)/stamp-vti $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/fficonfig.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -SOURCES = -DIST_SOURCES = -AM_V_DVIPS = $(am__v_DVIPS_@AM_V@) -am__v_DVIPS_ = $(am__v_DVIPS_@AM_DEFAULT_V@) -am__v_DVIPS_0 = @echo " DVIPS " $@; -am__v_DVIPS_1 = -AM_V_MAKEINFO = $(am__v_MAKEINFO_@AM_V@) -am__v_MAKEINFO_ = $(am__v_MAKEINFO_@AM_DEFAULT_V@) -am__v_MAKEINFO_0 = @echo " MAKEINFO" $@; -am__v_MAKEINFO_1 = -AM_V_INFOHTML = $(am__v_INFOHTML_@AM_V@) -am__v_INFOHTML_ = $(am__v_INFOHTML_@AM_DEFAULT_V@) -am__v_INFOHTML_0 = @echo " INFOHTML" $@; -am__v_INFOHTML_1 = -AM_V_TEXI2DVI = $(am__v_TEXI2DVI_@AM_V@) -am__v_TEXI2DVI_ = $(am__v_TEXI2DVI_@AM_DEFAULT_V@) -am__v_TEXI2DVI_0 = @echo " TEXI2DVI" $@; -am__v_TEXI2DVI_1 = -AM_V_TEXI2PDF = $(am__v_TEXI2PDF_@AM_V@) -am__v_TEXI2PDF_ = $(am__v_TEXI2PDF_@AM_DEFAULT_V@) -am__v_TEXI2PDF_0 = @echo " TEXI2PDF" $@; -am__v_TEXI2PDF_1 = -AM_V_texinfo = $(am__v_texinfo_@AM_V@) -am__v_texinfo_ = $(am__v_texinfo_@AM_DEFAULT_V@) -am__v_texinfo_0 = -q -am__v_texinfo_1 = -AM_V_texidevnull = $(am__v_texidevnull_@AM_V@) -am__v_texidevnull_ = $(am__v_texidevnull_@AM_DEFAULT_V@) -am__v_texidevnull_0 = > /dev/null -am__v_texidevnull_1 = -INFO_DEPS = $(srcdir)/libffi.info -am__TEXINFO_TEX_DIR = $(srcdir) -DVIS = libffi.dvi -PDFS = libffi.pdf -PSS = libffi.ps -HTMLS = libffi.html -TEXINFOS = libffi.texi -TEXI2DVI = texi2dvi -TEXI2PDF = $(TEXI2DVI) --pdf --batch -MAKEINFOHTML = $(MAKEINFO) --html -AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS) -DVIPS = dvips -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__installdirs = "$(DESTDIR)$(infodir)" -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 = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -am__DIST_COMMON = $(srcdir)/Makefile.in mdate-sh texinfo.tex -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AM_LTLDFLAGS = @AM_LTLDFLAGS@ -AM_RUNTESTFLAGS = @AM_RUNTESTFLAGS@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCAS = @CCAS@ -CCASDEPMODE = @CCASDEPMODE@ -CCASFLAGS = @CCASFLAGS@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FFI_EXEC_TRAMPOLINE_TABLE = @FFI_EXEC_TRAMPOLINE_TABLE@ -FGREP = @FGREP@ -GREP = @GREP@ -HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@ -HAVE_LONG_DOUBLE_VARIANT = @HAVE_LONG_DOUBLE_VARIANT@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OPT_LDFLAGS = @OPT_LDFLAGS@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PRTDIAG = @PRTDIAG@ -RANLIB = @RANLIB@ -SECTION_LDFLAGS = @SECTION_LDFLAGS@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -TARGET = @TARGET@ -TARGETDIR = @TARGETDIR@ -TARGET_OBJ = @TARGET_OBJ@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -ax_enable_builddir_sed = @ax_enable_builddir_sed@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sys_symbol_underscore = @sys_symbol_underscore@ -sysconfdir = @sysconfdir@ -target = @target@ -target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ -toolexecdir = @toolexecdir@ -toolexeclibdir = @toolexeclibdir@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -info_TEXINFOS = libffi.texi -all: all-am - -.SUFFIXES: -.SUFFIXES: .dvi .html .info .pdf .ps .texi -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu doc/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -.texi.info: - $(AM_V_MAKEINFO)restore=: && backupdir="$(am__leading_dot)am$$$$" && \ - am__cwd=`pwd` && $(am__cd) $(srcdir) && \ - rm -rf $$backupdir && mkdir $$backupdir && \ - if ($(MAKEINFO) --version) >/dev/null 2>&1; then \ - for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \ - if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \ - done; \ - else :; fi && \ - cd "$$am__cwd"; \ - if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ - -o $@ $<; \ - then \ - rc=0; \ - $(am__cd) $(srcdir); \ - else \ - rc=$$?; \ - $(am__cd) $(srcdir) && \ - $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \ - fi; \ - rm -rf $$backupdir; exit $$rc - -.texi.dvi: - $(AM_V_TEXI2DVI)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ - MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ - $(TEXI2DVI) $(AM_V_texinfo) --build-dir=$(@:.dvi=.t2d) -o $@ $(AM_V_texidevnull) \ - $< - -.texi.pdf: - $(AM_V_TEXI2PDF)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ - MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ - $(TEXI2PDF) $(AM_V_texinfo) --build-dir=$(@:.pdf=.t2p) -o $@ $(AM_V_texidevnull) \ - $< - -.texi.html: - $(AM_V_MAKEINFO)rm -rf $(@:.html=.htp) - $(AM_V_at)if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ - -o $(@:.html=.htp) $<; \ - then \ - rm -rf $@ && mv $(@:.html=.htp) $@; \ - else \ - rm -rf $(@:.html=.htp); exit 1; \ - fi -$(srcdir)/libffi.info: libffi.texi $(srcdir)/version.texi -libffi.dvi: libffi.texi $(srcdir)/version.texi -libffi.pdf: libffi.texi $(srcdir)/version.texi -libffi.html: libffi.texi $(srcdir)/version.texi -$(srcdir)/version.texi: @MAINTAINER_MODE_TRUE@ $(srcdir)/stamp-vti -$(srcdir)/stamp-vti: libffi.texi $(top_srcdir)/configure - @(dir=.; test -f ./libffi.texi || dir=$(srcdir); \ - set `$(SHELL) $(srcdir)/mdate-sh $$dir/libffi.texi`; \ - echo "@set UPDATED $$1 $$2 $$3"; \ - echo "@set UPDATED-MONTH $$2 $$3"; \ - echo "@set EDITION $(VERSION)"; \ - echo "@set VERSION $(VERSION)") > vti.tmp$$$$ && \ - (cmp -s vti.tmp$$$$ $(srcdir)/version.texi \ - || (echo "Updating $(srcdir)/version.texi" && \ - cp vti.tmp$$$$ $(srcdir)/version.texi.tmp$$$$ && \ - mv $(srcdir)/version.texi.tmp$$$$ $(srcdir)/version.texi)) && \ - rm -f vti.tmp$$$$ $(srcdir)/version.texi.$$$$ - @cp $(srcdir)/version.texi $@ - -mostlyclean-vti: - -rm -f vti.tmp* $(srcdir)/version.texi.tmp* - -maintainer-clean-vti: -@MAINTAINER_MODE_TRUE@ -rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi -.dvi.ps: - $(AM_V_DVIPS)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ - $(DVIPS) $(AM_V_texinfo) -o $@ $< - -uninstall-dvi-am: - @$(NORMAL_UNINSTALL) - @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ - for p in $$list; do \ - $(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \ - rm -f "$(DESTDIR)$(dvidir)/$$f"; \ - done - -uninstall-html-am: - @$(NORMAL_UNINSTALL) - @list='$(HTMLS)'; test -n "$(htmldir)" || list=; \ - for p in $$list; do \ - $(am__strip_dir) \ - echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \ - rm -rf "$(DESTDIR)$(htmldir)/$$f"; \ - done - -uninstall-info-am: - @$(PRE_UNINSTALL) - @if test -d '$(DESTDIR)$(infodir)' && $(am__can_run_installinfo); then \ - list='$(INFO_DEPS)'; \ - for file in $$list; do \ - relfile=`echo "$$file" | sed 's|^.*/||'`; \ - echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \ - if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \ - then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; fi; \ - done; \ - else :; fi - @$(NORMAL_UNINSTALL) - @list='$(INFO_DEPS)'; \ - for file in $$list; do \ - relfile=`echo "$$file" | sed 's|^.*/||'`; \ - relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \ - (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \ - echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \ - rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \ - else :; fi); \ - done - -uninstall-pdf-am: - @$(NORMAL_UNINSTALL) - @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \ - for p in $$list; do \ - $(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \ - rm -f "$(DESTDIR)$(pdfdir)/$$f"; \ - done - -uninstall-ps-am: - @$(NORMAL_UNINSTALL) - @list='$(PSS)'; test -n "$(psdir)" || list=; \ - for p in $$list; do \ - $(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \ - rm -f "$(DESTDIR)$(psdir)/$$f"; \ - done - -dist-info: $(INFO_DEPS) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - list='$(INFO_DEPS)'; \ - for base in $$list; do \ - case $$base in \ - $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \ - esac; \ - if test -f $$base; then d=.; else d=$(srcdir); fi; \ - base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \ - for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \ - if test -f $$file; then \ - relfile=`expr "$$file" : "$$d/\(.*\)"`; \ - test -f "$(distdir)/$$relfile" || \ - cp -p $$file "$(distdir)/$$relfile"; \ - else :; fi; \ - done; \ - done - -mostlyclean-aminfo: - -rm -rf libffi.t2d libffi.t2p - -clean-aminfo: - -test -z "libffi.dvi libffi.pdf libffi.ps libffi.html" \ - || rm -rf libffi.dvi libffi.pdf libffi.ps libffi.html - -maintainer-clean-aminfo: - @list='$(INFO_DEPS)'; for i in $$list; do \ - i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \ - echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \ - rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \ - done -tags TAGS: - -ctags CTAGS: - -cscope cscopelist: - - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$(top_distdir)" distdir="$(distdir)" \ - dist-info -check-am: all-am -check: check-am -all-am: Makefile $(INFO_DEPS) -installdirs: - for dir in "$(DESTDIR)$(infodir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-aminfo clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: $(DVIS) - -html: html-am - -html-am: $(HTMLS) - -info: info-am - -info-am: $(INFO_DEPS) - -install-data-am: install-info-am - -install-dvi: install-dvi-am - -install-dvi-am: $(DVIS) - @$(NORMAL_INSTALL) - @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(dvidir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(dvidir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dvidir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \ - done -install-exec-am: - -install-html: install-html-am - -install-html-am: $(HTMLS) - @$(NORMAL_INSTALL) - @list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(htmldir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \ - $(am__strip_dir) \ - d2=$$d$$p; \ - if test -d "$$d2"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \ - $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \ - echo " $(INSTALL_DATA) '$$d2'/* '$(DESTDIR)$(htmldir)/$$f'"; \ - $(INSTALL_DATA) "$$d2"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \ - else \ - list2="$$list2 $$d2"; \ - fi; \ - done; \ - test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \ - done; } -install-info: install-info-am - -install-info-am: $(INFO_DEPS) - @$(NORMAL_INSTALL) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(infodir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(infodir)" || exit 1; \ - fi; \ - for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - esac; \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ - file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \ - for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \ - $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \ - if test -f $$ifile; then \ - echo "$$ifile"; \ - else : ; fi; \ - done; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done - @$(POST_INSTALL) - @if $(am__can_run_installinfo); then \ - list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \ - for file in $$list; do \ - relfile=`echo "$$file" | sed 's|^.*/||'`; \ - echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\ - install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\ - done; \ - else : ; fi -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: $(PDFS) - @$(NORMAL_INSTALL) - @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(pdfdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(pdfdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done -install-ps: install-ps-am - -install-ps-am: $(PSS) - @$(NORMAL_INSTALL) - @list='$(PSS)'; test -n "$(psdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(psdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(psdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(psdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-aminfo \ - maintainer-clean-generic maintainer-clean-vti - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-aminfo mostlyclean-generic \ - mostlyclean-libtool mostlyclean-vti - -pdf: pdf-am - -pdf-am: $(PDFS) - -ps: ps-am - -ps-am: $(PSS) - -uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \ - uninstall-pdf-am uninstall-ps-am - -.MAKE: install-am install-strip - -.PHONY: all all-am check check-am clean clean-aminfo clean-generic \ - clean-libtool cscopelist-am ctags-am dist-info distclean \ - distclean-generic distclean-libtool distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-aminfo maintainer-clean-generic \ - maintainer-clean-vti mostlyclean mostlyclean-aminfo \ - mostlyclean-generic mostlyclean-libtool mostlyclean-vti pdf \ - pdf-am ps ps-am tags-am uninstall uninstall-am \ - uninstall-dvi-am uninstall-html-am uninstall-info-am \ - uninstall-pdf-am uninstall-ps-am - -.PRECIOUS: Makefile - - -# 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: diff --git a/doc/libffi.info b/doc/libffi.info deleted file mode 100644 index afd17e7..0000000 --- a/doc/libffi.info +++ /dev/null @@ -1,1016 +0,0 @@ -This is libffi.info, produced by makeinfo version 6.6 from libffi.texi. - -This manual is for libffi, a portable foreign function interface -library. - - Copyright (C) 2008-2019 Anthony Green and Red Hat, Inc. - - 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -INFO-DIR-SECTION Development -START-INFO-DIR-ENTRY -* libffi: (libffi). Portable foreign function interface library. -END-INFO-DIR-ENTRY - - -File: libffi.info, Node: Top, Next: Introduction, Up: (dir) - -libffi -****** - -This manual is for libffi, a portable foreign function interface -library. - - Copyright (C) 2008-2019 Anthony Green and Red Hat, Inc. - - 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -* Menu: - -* Introduction:: What is libffi? -* Using libffi:: How to use libffi. -* Missing Features:: Things libffi can't do. -* Index:: Index. - - -File: libffi.info, Node: Introduction, Next: Using libffi, Prev: Top, Up: Top - -1 What is libffi? -***************** - -Compilers for high level languages generate code that follow certain -conventions. These conventions are necessary, in part, for separate -compilation to work. One such convention is the "calling convention". -The calling convention is a set of assumptions made by the compiler -about where function arguments will be found on entry to a function. A -calling convention also specifies where the return value for a function -is found. The calling convention is also sometimes called the "ABI" or -"Application Binary Interface". - - Some programs may not know at the time of compilation what arguments -are to be passed to a function. For instance, an interpreter may be -told at run-time about the number and types of arguments used to call a -given function. 'Libffi' can be used in such programs to provide a -bridge from the interpreter program to compiled code. - - The 'libffi' library provides a portable, high level programming -interface to various calling conventions. This allows a programmer to -call any function specified by a call interface description at run time. - - FFI stands for Foreign Function Interface. A foreign function -interface is the popular name for the interface that allows code written -in one language to call code written in another language. The 'libffi' -library really only provides the lowest, machine dependent layer of a -fully featured foreign function interface. A layer must exist above -'libffi' that handles type conversions for values passed between the two -languages. - - -File: libffi.info, Node: Using libffi, Next: Missing Features, Prev: Introduction, Up: Top - -2 Using libffi -************** - -* Menu: - -* The Basics:: The basic libffi API. -* Simple Example:: A simple example. -* Types:: libffi type descriptions. -* Multiple ABIs:: Different passing styles on one platform. -* The Closure API:: Writing a generic function. -* Closure Example:: A closure example. -* Thread Safety:: Thread safety. - - -File: libffi.info, Node: The Basics, Next: Simple Example, Up: Using libffi - -2.1 The Basics -============== - -'Libffi' assumes that you have a pointer to the function you wish to -call and that you know the number and types of arguments to pass it, as -well as the return type of the function. - - The first thing you must do is create an 'ffi_cif' object that -matches the signature of the function you wish to call. This is a -separate step because it is common to make multiple calls using a single -'ffi_cif'. The "cif" in 'ffi_cif' stands for Call InterFace. To -prepare a call interface object, use the function 'ffi_prep_cif'. - - -- Function: ffi_status ffi_prep_cif (ffi_cif *CIF, ffi_abi ABI, - unsigned int NARGS, ffi_type *RTYPE, ffi_type **ARGTYPES) - This initializes CIF according to the given parameters. - - ABI is the ABI to use; normally 'FFI_DEFAULT_ABI' is what you want. - *note Multiple ABIs:: for more information. - - NARGS is the number of arguments that this function accepts. - - RTYPE is a pointer to an 'ffi_type' structure that describes the - return type of the function. *Note Types::. - - ARGTYPES is a vector of 'ffi_type' pointers. ARGTYPES must have - NARGS elements. If NARGS is 0, this argument is ignored. - - 'ffi_prep_cif' returns a 'libffi' status code, of type - 'ffi_status'. This will be either 'FFI_OK' if everything worked - properly; 'FFI_BAD_TYPEDEF' if one of the 'ffi_type' objects is - incorrect; or 'FFI_BAD_ABI' if the ABI parameter is invalid. - - If the function being called is variadic (varargs) then -'ffi_prep_cif_var' must be used instead of 'ffi_prep_cif'. - - -- Function: ffi_status ffi_prep_cif_var (ffi_cif *CIF, ffi_abi ABI, - unsigned int NFIXEDARGS, unsigned int NTOTALARGS, ffi_type - *RTYPE, ffi_type **ARGTYPES) - This initializes CIF according to the given parameters for a call - to a variadic function. In general its operation is the same as - for 'ffi_prep_cif' except that: - - NFIXEDARGS is the number of fixed arguments, prior to any variadic - arguments. It must be greater than zero. - - NTOTALARGS the total number of arguments, including variadic and - fixed arguments. ARGTYPES must have this many elements. - - Note that, different cif's must be prepped for calls to the same - function when different numbers of arguments are passed. - - Also note that a call to 'ffi_prep_cif_var' with - NFIXEDARGS=NOTOTALARGS is NOT equivalent to a call to - 'ffi_prep_cif'. - - Note that the resulting 'ffi_cif' holds pointers to all the -'ffi_type' objects that were used during initialization. You must -ensure that these type objects have a lifetime at least as long as that -of the 'ffi_cif'. - - To call a function using an initialized 'ffi_cif', use the 'ffi_call' -function: - - -- Function: void ffi_call (ffi_cif *CIF, void *FN, void *RVALUE, void - **AVALUES) - This calls the function FN according to the description given in - CIF. CIF must have already been prepared using 'ffi_prep_cif'. - - RVALUE is a pointer to a chunk of memory that will hold the result - of the function call. This must be large enough to hold the - result, no smaller than the system register size (generally 32 or - 64 bits), and must be suitably aligned; it is the caller's - responsibility to ensure this. If CIF declares that the function - returns 'void' (using 'ffi_type_void'), then RVALUE is ignored. - - In most situations, 'libffi' will handle promotion according to the - ABI. However, for historical reasons, there is a special case with - return values that must be handled by your code. In particular, - for integral (not 'struct') types that are narrower than the system - register size, the return value will be widened by 'libffi'. - 'libffi' provides a type, 'ffi_arg', that can be used as the return - type. For example, if the CIF was defined with a return type of - 'char', 'libffi' will try to store a full 'ffi_arg' into the return - value. - - AVALUES is a vector of 'void *' pointers that point to the memory - locations holding the argument values for a call. If CIF declares - that the function has no arguments (i.e., NARGS was 0), then - AVALUES is ignored. Note that argument values may be modified by - the callee (for instance, structs passed by value); the burden of - copying pass-by-value arguments is placed on the caller. - - Note that while the return value must be register-sized, arguments - should exactly match their declared type. For example, if an - argument is a 'short', then the entry in AVALUES should point to an - object declared as 'short'; but if the return type is 'short', then - RVALUE should point to an object declared as a larger type - - usually 'ffi_arg'. - - -File: libffi.info, Node: Simple Example, Next: Types, Prev: The Basics, Up: Using libffi - -2.2 Simple Example -================== - -Here is a trivial example that calls 'puts' a few times. - - #include - #include - - int main() - { - ffi_cif cif; - ffi_type *args[1]; - void *values[1]; - char *s; - ffi_arg rc; - - /* Initialize the argument info vectors */ - args[0] = &ffi_type_pointer; - values[0] = &s; - - /* Initialize the cif */ - if (ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, - &ffi_type_sint, args) == FFI_OK) - { - s = "Hello World!"; - ffi_call(&cif, puts, &rc, values); - /* rc now holds the result of the call to puts */ - - /* values holds a pointer to the function's arg, so to - call puts() again all we need to do is change the - value of s */ - s = "This is cool!"; - ffi_call(&cif, puts, &rc, values); - } - - return 0; - } - - -File: libffi.info, Node: Types, Next: Multiple ABIs, Prev: Simple Example, Up: Using libffi - -2.3 Types -========= - -* Menu: - -* Primitive Types:: Built-in types. -* Structures:: Structure types. -* Size and Alignment:: Size and alignment of types. -* Arrays Unions Enums:: Arrays, unions, and enumerations. -* Type Example:: Structure type example. -* Complex:: Complex types. -* Complex Type Example:: Complex type example. - - -File: libffi.info, Node: Primitive Types, Next: Structures, Up: Types - -2.3.1 Primitive Types ---------------------- - -'Libffi' provides a number of built-in type descriptors that can be used -to describe argument and return types: - -'ffi_type_void' - The type 'void'. This cannot be used for argument types, only for - return values. - -'ffi_type_uint8' - An unsigned, 8-bit integer type. - -'ffi_type_sint8' - A signed, 8-bit integer type. - -'ffi_type_uint16' - An unsigned, 16-bit integer type. - -'ffi_type_sint16' - A signed, 16-bit integer type. - -'ffi_type_uint32' - An unsigned, 32-bit integer type. - -'ffi_type_sint32' - A signed, 32-bit integer type. - -'ffi_type_uint64' - An unsigned, 64-bit integer type. - -'ffi_type_sint64' - A signed, 64-bit integer type. - -'ffi_type_float' - The C 'float' type. - -'ffi_type_double' - The C 'double' type. - -'ffi_type_uchar' - The C 'unsigned char' type. - -'ffi_type_schar' - The C 'signed char' type. (Note that there is not an exact - equivalent to the C 'char' type in 'libffi'; ordinarily you should - either use 'ffi_type_schar' or 'ffi_type_uchar' depending on - whether 'char' is signed.) - -'ffi_type_ushort' - The C 'unsigned short' type. - -'ffi_type_sshort' - The C 'short' type. - -'ffi_type_uint' - The C 'unsigned int' type. - -'ffi_type_sint' - The C 'int' type. - -'ffi_type_ulong' - The C 'unsigned long' type. - -'ffi_type_slong' - The C 'long' type. - -'ffi_type_longdouble' - On platforms that have a C 'long double' type, this is defined. On - other platforms, it is not. - -'ffi_type_pointer' - A generic 'void *' pointer. You should use this for all pointers, - regardless of their real type. - -'ffi_type_complex_float' - The C '_Complex float' type. - -'ffi_type_complex_double' - The C '_Complex double' type. - -'ffi_type_complex_longdouble' - The C '_Complex long double' type. On platforms that have a C - 'long double' type, this is defined. On other platforms, it is - not. - - Each of these is of type 'ffi_type', so you must take the address -when passing to 'ffi_prep_cif'. - - -File: libffi.info, Node: Structures, Next: Size and Alignment, Prev: Primitive Types, Up: Types - -2.3.2 Structures ----------------- - -'libffi' is perfectly happy passing structures back and forth. You must -first describe the structure to 'libffi' by creating a new 'ffi_type' -object for it. - - -- Data type: ffi_type - The 'ffi_type' has the following members: - 'size_t size' - This is set by 'libffi'; you should initialize it to zero. - - 'unsigned short alignment' - This is set by 'libffi'; you should initialize it to zero. - - 'unsigned short type' - For a structure, this should be set to 'FFI_TYPE_STRUCT'. - - 'ffi_type **elements' - This is a 'NULL'-terminated array of pointers to 'ffi_type' - objects. There is one element per field of the struct. - - Note that 'libffi' has no special support for bit-fields. You - must manage these manually. - - The 'size' and 'alignment' fields will be filled in by 'ffi_prep_cif' -or 'ffi_prep_cif_var', as needed. - - -File: libffi.info, Node: Size and Alignment, Next: Arrays Unions Enums, Prev: Structures, Up: Types - -2.3.3 Size and Alignment ------------------------- - -'libffi' will set the 'size' and 'alignment' fields of an 'ffi_type' -object for you. It does so using its knowledge of the ABI. - - You might expect that you can simply read these fields for a type -that has been laid out by 'libffi'. However, there are some caveats. - - * The size or alignment of some of the built-in types may vary - depending on the chosen ABI. - - * The size and alignment of a new structure type will not be set by - 'libffi' until it has been passed to 'ffi_prep_cif' or - 'ffi_get_struct_offsets'. - - * A structure type cannot be shared across ABIs. Instead each ABI - needs its own copy of the structure type. - - So, before examining these fields, it is safest to pass the -'ffi_type' object to 'ffi_prep_cif' or 'ffi_get_struct_offsets' first. -This function will do all the needed setup. - - ffi_type *desired_type; - ffi_abi desired_abi; - ... - ffi_cif cif; - if (ffi_prep_cif (&cif, desired_abi, 0, desired_type, NULL) == FFI_OK) - { - size_t size = desired_type->size; - unsigned short alignment = desired_type->alignment; - } - - 'libffi' also provides a way to get the offsets of the members of a -structure. - - -- Function: ffi_status ffi_get_struct_offsets (ffi_abi abi, ffi_type - *struct_type, size_t *offsets) - Compute the offset of each element of the given structure type. - ABI is the ABI to use; this is needed because in some cases the - layout depends on the ABI. - - OFFSETS is an out parameter. The caller is responsible for - providing enough space for all the results to be written - one - element per element type in STRUCT_TYPE. If OFFSETS is 'NULL', - then the type will be laid out but not otherwise modified. This - can be useful for accessing the type's size or layout, as mentioned - above. - - This function returns 'FFI_OK' on success; 'FFI_BAD_ABI' if ABI is - invalid; or 'FFI_BAD_TYPEDEF' if STRUCT_TYPE is invalid in some - way. Note that only 'FFI_STRUCT' types are valid here. - - -File: libffi.info, Node: Arrays Unions Enums, Next: Type Example, Prev: Size and Alignment, Up: Types - -2.3.4 Arrays, Unions, and Enumerations --------------------------------------- - -2.3.4.1 Arrays -.............. - -'libffi' does not have direct support for arrays or unions. However, -they can be emulated using structures. - - To emulate an array, simply create an 'ffi_type' using -'FFI_TYPE_STRUCT' with as many members as there are elements in the -array. - - ffi_type array_type; - ffi_type **elements - int i; - - elements = malloc ((n + 1) * sizeof (ffi_type *)); - for (i = 0; i < n; ++i) - elements[i] = array_element_type; - elements[n] = NULL; - - array_type.size = array_type.alignment = 0; - array_type.type = FFI_TYPE_STRUCT; - array_type.elements = elements; - - Note that arrays cannot be passed or returned by value in C - -structure types created like this should only be used to refer to -members of real 'FFI_TYPE_STRUCT' objects. - - However, a phony array type like this will not cause any errors from -'libffi' if you use it as an argument or return type. This may be -confusing. - -2.3.4.2 Unions -.............. - -A union can also be emulated using 'FFI_TYPE_STRUCT'. In this case, -however, you must make sure that the size and alignment match the real -requirements of the union. - - One simple way to do this is to ensue that each element type is laid -out. Then, give the new structure type a single element; the size of -the largest element; and the largest alignment seen as well. - - This example uses the 'ffi_prep_cif' trick to ensure that each -element type is laid out. - - ffi_abi desired_abi; - ffi_type union_type; - ffi_type **union_elements; - - int i; - ffi_type element_types[2]; - - element_types[1] = NULL; - - union_type.size = union_type.alignment = 0; - union_type.type = FFI_TYPE_STRUCT; - union_type.elements = element_types; - - for (i = 0; union_elements[i]; ++i) - { - ffi_cif cif; - if (ffi_prep_cif (&cif, desired_abi, 0, union_elements[i], NULL) == FFI_OK) - { - if (union_elements[i]->size > union_type.size) - { - union_type.size = union_elements[i]; - size = union_elements[i]->size; - } - if (union_elements[i]->alignment > union_type.alignment) - union_type.alignment = union_elements[i]->alignment; - } - } - -2.3.4.3 Enumerations -.................... - -'libffi' does not have any special support for C 'enum's. Although any -given 'enum' is implemented using a specific underlying integral type, -exactly which type will be used cannot be determined by 'libffi' - it -may depend on the values in the enumeration or on compiler flags such as -'-fshort-enums'. *Note (gcc)Structures unions enumerations and -bit-fields implementation::, for more information about how GCC handles -enumerations. - - -File: libffi.info, Node: Type Example, Next: Complex, Prev: Arrays Unions Enums, Up: Types - -2.3.5 Type Example ------------------- - -The following example initializes a 'ffi_type' object representing the -'tm' struct from Linux's 'time.h'. - - Here is how the struct is defined: - - struct tm { - int tm_sec; - int tm_min; - int tm_hour; - int tm_mday; - int tm_mon; - int tm_year; - int tm_wday; - int tm_yday; - int tm_isdst; - /* Those are for future use. */ - long int __tm_gmtoff__; - __const char *__tm_zone__; - }; - - Here is the corresponding code to describe this struct to 'libffi': - - { - ffi_type tm_type; - ffi_type *tm_type_elements[12]; - int i; - - tm_type.size = tm_type.alignment = 0; - tm_type.type = FFI_TYPE_STRUCT; - tm_type.elements = &tm_type_elements; - - for (i = 0; i < 9; i++) - tm_type_elements[i] = &ffi_type_sint; - - tm_type_elements[9] = &ffi_type_slong; - tm_type_elements[10] = &ffi_type_pointer; - tm_type_elements[11] = NULL; - - /* tm_type can now be used to represent tm argument types and - return types for ffi_prep_cif() */ - } - - -File: libffi.info, Node: Complex, Next: Complex Type Example, Prev: Type Example, Up: Types - -2.3.6 Complex Types -------------------- - -'libffi' supports the complex types defined by the C99 standard -('_Complex float', '_Complex double' and '_Complex long double' with the -built-in type descriptors 'ffi_type_complex_float', -'ffi_type_complex_double' and 'ffi_type_complex_longdouble'. - - Custom complex types like '_Complex int' can also be used. An -'ffi_type' object has to be defined to describe the complex type to -'libffi'. - - -- Data type: ffi_type - 'size_t size' - This must be manually set to the size of the complex type. - - 'unsigned short alignment' - This must be manually set to the alignment of the complex - type. - - 'unsigned short type' - For a complex type, this must be set to 'FFI_TYPE_COMPLEX'. - - 'ffi_type **elements' - - This is a 'NULL'-terminated array of pointers to 'ffi_type' - objects. The first element is set to the 'ffi_type' of the - complex's base type. The second element must be set to - 'NULL'. - - The section *note Complex Type Example:: shows a way to determine the -'size' and 'alignment' members in a platform independent way. - - For platforms that have no complex support in 'libffi' yet, the -functions 'ffi_prep_cif' and 'ffi_prep_args' abort the program if they -encounter a complex type. - - -File: libffi.info, Node: Complex Type Example, Prev: Complex, Up: Types - -2.3.7 Complex Type Example --------------------------- - -This example demonstrates how to use complex types: - - #include - #include - #include - - void complex_fn(_Complex float cf, - _Complex double cd, - _Complex long double cld) - { - printf("cf=%f+%fi\ncd=%f+%fi\ncld=%f+%fi\n", - (float)creal (cf), (float)cimag (cf), - (float)creal (cd), (float)cimag (cd), - (float)creal (cld), (float)cimag (cld)); - } - - int main() - { - ffi_cif cif; - ffi_type *args[3]; - void *values[3]; - _Complex float cf; - _Complex double cd; - _Complex long double cld; - - /* Initialize the argument info vectors */ - args[0] = &ffi_type_complex_float; - args[1] = &ffi_type_complex_double; - args[2] = &ffi_type_complex_longdouble; - values[0] = &cf; - values[1] = &cd; - values[2] = &cld; - - /* Initialize the cif */ - if (ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3, - &ffi_type_void, args) == FFI_OK) - { - cf = 1.0 + 20.0 * I; - cd = 300.0 + 4000.0 * I; - cld = 50000.0 + 600000.0 * I; - /* Call the function */ - ffi_call(&cif, (void (*)(void))complex_fn, 0, values); - } - - return 0; - } - - This is an example for defining a custom complex type descriptor for -compilers that support them: - - /* - * This macro can be used to define new complex type descriptors - * in a platform independent way. - * - * name: Name of the new descriptor is ffi_type_complex_. - * type: The C base type of the complex type. - */ - #define FFI_COMPLEX_TYPEDEF(name, type, ffitype) \ - static ffi_type *ffi_elements_complex_##name [2] = { \ - (ffi_type *)(&ffitype), NULL \ - }; \ - struct struct_align_complex_##name { \ - char c; \ - _Complex type x; \ - }; \ - ffi_type ffi_type_complex_##name = { \ - sizeof(_Complex type), \ - offsetof(struct struct_align_complex_##name, x), \ - FFI_TYPE_COMPLEX, \ - (ffi_type **)ffi_elements_complex_##name \ - } - - /* Define new complex type descriptors using the macro: */ - /* ffi_type_complex_sint */ - FFI_COMPLEX_TYPEDEF(sint, int, ffi_type_sint); - /* ffi_type_complex_uchar */ - FFI_COMPLEX_TYPEDEF(uchar, unsigned char, ffi_type_uint8); - - The new type descriptors can then be used like one of the built-in -type descriptors in the previous example. - - -File: libffi.info, Node: Multiple ABIs, Next: The Closure API, Prev: Types, Up: Using libffi - -2.4 Multiple ABIs -================= - -A given platform may provide multiple different ABIs at once. For -instance, the x86 platform has both 'stdcall' and 'fastcall' functions. - - 'libffi' provides some support for this. However, this is -necessarily platform-specific. - - -File: libffi.info, Node: The Closure API, Next: Closure Example, Prev: Multiple ABIs, Up: Using libffi - -2.5 The Closure API -=================== - -'libffi' also provides a way to write a generic function - a function -that can accept and decode any combination of arguments. This can be -useful when writing an interpreter, or to provide wrappers for arbitrary -functions. - - This facility is called the "closure API". Closures are not supported -on all platforms; you can check the 'FFI_CLOSURES' define to determine -whether they are supported on the current platform. - - Because closures work by assembling a tiny function at runtime, they -require special allocation on platforms that have a non-executable heap. -Memory management for closures is handled by a pair of functions: - - -- Function: void *ffi_closure_alloc (size_t SIZE, void **CODE) - Allocate a chunk of memory holding SIZE bytes. This returns a - pointer to the writable address, and sets *CODE to the - corresponding executable address. - - SIZE should be sufficient to hold a 'ffi_closure' object. - - -- Function: void ffi_closure_free (void *WRITABLE) - Free memory allocated using 'ffi_closure_alloc'. The argument is - the writable address that was returned. - - Once you have allocated the memory for a closure, you must construct -a 'ffi_cif' describing the function call. Finally you can prepare the -closure function: - - -- Function: ffi_status ffi_prep_closure_loc (ffi_closure *CLOSURE, - ffi_cif *CIF, void (*FUN) (ffi_cif *CIF, void *RET, void - **ARGS, void *USER_DATA), void *USER_DATA, void *CODELOC) - Prepare a closure function. The arguments to - 'ffi_prep_closure_loc' are: - - CLOSURE - The address of a 'ffi_closure' object; this is the writable - address returned by 'ffi_closure_alloc'. - - CIF - The 'ffi_cif' describing the function parameters. Note that - this object, and the types to which it refers, must be kept - alive until the closure itself is freed. - - USER_DATA - An arbitrary datum that is passed, uninterpreted, to your - closure function. - - CODELOC - The executable address returned by 'ffi_closure_alloc'. - - FUN - The function which will be called when the closure is invoked. - It is called with the arguments: - - CIF - The 'ffi_cif' passed to 'ffi_prep_closure_loc'. - - RET - A pointer to the memory used for the function's return - value. - - If the function is declared as returning 'void', then - this value is garbage and should not be used. - - Otherwise, FUN must fill the object to which this points, - following the same special promotion behavior as - 'ffi_call'. That is, in most cases, RET points to an - object of exactly the size of the type specified when CIF - was constructed. However, integral types narrower than - the system register size are widened. In these cases - your program may assume that RET points to an 'ffi_arg' - object. - - ARGS - A vector of pointers to memory holding the arguments to - the function. - - USER_DATA - The same USER_DATA that was passed to - 'ffi_prep_closure_loc'. - - 'ffi_prep_closure_loc' will return 'FFI_OK' if everything went ok, - and one of the other 'ffi_status' values on error. - - After calling 'ffi_prep_closure_loc', you can cast CODELOC to the - appropriate pointer-to-function type. - - You may see old code referring to 'ffi_prep_closure'. This function -is deprecated, as it cannot handle the need for separate writable and -executable addresses. - - -File: libffi.info, Node: Closure Example, Next: Thread Safety, Prev: The Closure API, Up: Using libffi - -2.6 Closure Example -=================== - -A trivial example that creates a new 'puts' by binding 'fputs' with -'stdout'. - - #include - #include - - /* Acts like puts with the file given at time of enclosure. */ - void puts_binding(ffi_cif *cif, void *ret, void* args[], - void *stream) - { - *(ffi_arg *)ret = fputs(*(char **)args[0], (FILE *)stream); - } - - typedef int (*puts_t)(char *); - - int main() - { - ffi_cif cif; - ffi_type *args[1]; - ffi_closure *closure; - - void *bound_puts; - int rc; - - /* Allocate closure and bound_puts */ - closure = ffi_closure_alloc(sizeof(ffi_closure), &bound_puts); - - if (closure) - { - /* Initialize the argument info vectors */ - args[0] = &ffi_type_pointer; - - /* Initialize the cif */ - if (ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, - &ffi_type_sint, args) == FFI_OK) - { - /* Initialize the closure, setting stream to stdout */ - if (ffi_prep_closure_loc(closure, &cif, puts_binding, - stdout, bound_puts) == FFI_OK) - { - rc = ((puts_t)bound_puts)("Hello World!"); - /* rc now holds the result of the call to fputs */ - } - } - } - - /* Deallocate both closure, and bound_puts */ - ffi_closure_free(closure); - - return 0; - } - - - -File: libffi.info, Node: Thread Safety, Prev: Closure Example, Up: Using libffi - -2.7 Thread Safety -================= - -'libffi' is not completely thread-safe. However, many parts are, and if -you follow some simple rules, you can use it safely in a multi-threaded -program. - - * 'ffi_prep_cif' may modify the 'ffi_type' objects passed to it. It - is best to ensure that only a single thread prepares a given - 'ffi_cif' at a time. - - * On some platforms, 'ffi_prep_cif' may modify the size and alignment - of some types, depending on the chosen ABI. On these platforms, if - you switch between ABIs, you must ensure that there is only one - call to 'ffi_prep_cif' at a time. - - Currently the only affected platform is PowerPC and the only - affected type is 'long double'. - - -File: libffi.info, Node: Missing Features, Next: Index, Prev: Using libffi, Up: Top - -3 Missing Features -****************** - -'libffi' is missing a few features. We welcome patches to add support -for these. - - * Variadic closures. - - * There is no support for bit fields in structures. - - * The "raw" API is undocumented. - - * The Go API is undocumented. - - Note that variadic support is very new and tested on a relatively -small number of platforms. - - -File: libffi.info, Node: Index, Prev: Missing Features, Up: Top - -Index -***** - -[index] -* Menu: - -* ABI: Introduction. (line 13) -* Application Binary Interface: Introduction. (line 13) -* calling convention: Introduction. (line 13) -* cif: The Basics. (line 14) -* closure API: The Closure API. (line 13) -* closures: The Closure API. (line 13) -* FFI: Introduction. (line 31) -* ffi_call: The Basics. (line 67) -* FFI_CLOSURES: The Closure API. (line 13) -* ffi_closure_alloc: The Closure API. (line 19) -* ffi_closure_free: The Closure API. (line 26) -* ffi_get_struct_offsets: Size and Alignment. (line 39) -* ffi_prep_cif: The Basics. (line 16) -* ffi_prep_cif_var: The Basics. (line 39) -* ffi_prep_closure_loc: The Closure API. (line 34) -* ffi_status: The Basics. (line 16) -* ffi_status <1>: The Basics. (line 39) -* ffi_status <2>: Size and Alignment. (line 39) -* ffi_status <3>: The Closure API. (line 34) -* ffi_type: Structures. (line 10) -* ffi_type <1>: Structures. (line 10) -* ffi_type <2>: Complex. (line 15) -* ffi_type <3>: Complex. (line 15) -* ffi_type_complex_double: Primitive Types. (line 82) -* ffi_type_complex_float: Primitive Types. (line 79) -* ffi_type_complex_longdouble: Primitive Types. (line 85) -* ffi_type_double: Primitive Types. (line 41) -* ffi_type_float: Primitive Types. (line 38) -* ffi_type_longdouble: Primitive Types. (line 71) -* ffi_type_pointer: Primitive Types. (line 75) -* ffi_type_schar: Primitive Types. (line 47) -* ffi_type_sint: Primitive Types. (line 62) -* ffi_type_sint16: Primitive Types. (line 23) -* ffi_type_sint32: Primitive Types. (line 29) -* ffi_type_sint64: Primitive Types. (line 35) -* ffi_type_sint8: Primitive Types. (line 17) -* ffi_type_slong: Primitive Types. (line 68) -* ffi_type_sshort: Primitive Types. (line 56) -* ffi_type_uchar: Primitive Types. (line 44) -* ffi_type_uint: Primitive Types. (line 59) -* ffi_type_uint16: Primitive Types. (line 20) -* ffi_type_uint32: Primitive Types. (line 26) -* ffi_type_uint64: Primitive Types. (line 32) -* ffi_type_uint8: Primitive Types. (line 14) -* ffi_type_ulong: Primitive Types. (line 65) -* ffi_type_ushort: Primitive Types. (line 53) -* ffi_type_void: Primitive Types. (line 10) -* Foreign Function Interface: Introduction. (line 31) -* void: The Basics. (line 67) -* void <1>: The Closure API. (line 19) -* void <2>: The Closure API. (line 26) - - - -Tag Table: -Node: Top1388 -Node: Introduction2841 -Node: Using libffi4473 -Node: The Basics5006 -Node: Simple Example9870 -Node: Types10901 -Node: Primitive Types11412 -Node: Structures13533 -Node: Size and Alignment14572 -Node: Arrays Unions Enums16769 -Node: Type Example19698 -Node: Complex20989 -Node: Complex Type Example22407 -Node: Multiple ABIs25459 -Node: The Closure API25830 -Node: Closure Example29656 -Node: Thread Safety31288 -Node: Missing Features32089 -Node: Index32551 - -End Tag Table diff --git a/doc/libffi.pdf b/doc/libffi.pdf deleted file mode 100644 index 8aa035fe934dcb23290bd5957e1b62ea8ecb4494..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169865 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 -#include - -int main() -@{ - ffi_cif cif; - ffi_type *args[1]; - void *values[1]; - char *s; - ffi_arg rc; - - /* Initialize the argument info vectors */ - args[0] = &ffi_type_pointer; - values[0] = &s; - - /* Initialize the cif */ - if (ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, - &ffi_type_sint, args) == FFI_OK) - @{ - s = "Hello World!"; - ffi_call(&cif, puts, &rc, values); - /* rc now holds the result of the call to puts */ - - /* values holds a pointer to the function's arg, so to - call puts() again all we need to do is change the - value of s */ - s = "This is cool!"; - ffi_call(&cif, puts, &rc, values); - @} - - return 0; -@} -@end example - - -@node Types -@section Types - -@menu -* Primitive Types:: Built-in types. -* Structures:: Structure types. -* Size and Alignment:: Size and alignment of types. -* Arrays Unions Enums:: Arrays, unions, and enumerations. -* Type Example:: Structure type example. -* Complex:: Complex types. -* Complex Type Example:: Complex type example. -@end menu - -@node Primitive Types -@subsection Primitive Types - -@code{Libffi} provides a number of built-in type descriptors that can -be used to describe argument and return types: - -@table @code -@item ffi_type_void -@tindex ffi_type_void -The type @code{void}. This cannot be used for argument types, only -for return values. - -@item ffi_type_uint8 -@tindex ffi_type_uint8 -An unsigned, 8-bit integer type. - -@item ffi_type_sint8 -@tindex ffi_type_sint8 -A signed, 8-bit integer type. - -@item ffi_type_uint16 -@tindex ffi_type_uint16 -An unsigned, 16-bit integer type. - -@item ffi_type_sint16 -@tindex ffi_type_sint16 -A signed, 16-bit integer type. - -@item ffi_type_uint32 -@tindex ffi_type_uint32 -An unsigned, 32-bit integer type. - -@item ffi_type_sint32 -@tindex ffi_type_sint32 -A signed, 32-bit integer type. - -@item ffi_type_uint64 -@tindex ffi_type_uint64 -An unsigned, 64-bit integer type. - -@item ffi_type_sint64 -@tindex ffi_type_sint64 -A signed, 64-bit integer type. - -@item ffi_type_float -@tindex ffi_type_float -The C @code{float} type. - -@item ffi_type_double -@tindex ffi_type_double -The C @code{double} type. - -@item ffi_type_uchar -@tindex ffi_type_uchar -The C @code{unsigned char} type. - -@item ffi_type_schar -@tindex ffi_type_schar -The C @code{signed char} type. (Note that there is not an exact -equivalent to the C @code{char} type in @code{libffi}; ordinarily you -should either use @code{ffi_type_schar} or @code{ffi_type_uchar} -depending on whether @code{char} is signed.) - -@item ffi_type_ushort -@tindex ffi_type_ushort -The C @code{unsigned short} type. - -@item ffi_type_sshort -@tindex ffi_type_sshort -The C @code{short} type. - -@item ffi_type_uint -@tindex ffi_type_uint -The C @code{unsigned int} type. - -@item ffi_type_sint -@tindex ffi_type_sint -The C @code{int} type. - -@item ffi_type_ulong -@tindex ffi_type_ulong -The C @code{unsigned long} type. - -@item ffi_type_slong -@tindex ffi_type_slong -The C @code{long} type. - -@item ffi_type_longdouble -@tindex ffi_type_longdouble -On platforms that have a C @code{long double} type, this is defined. -On other platforms, it is not. - -@item ffi_type_pointer -@tindex ffi_type_pointer -A generic @code{void *} pointer. You should use this for all -pointers, regardless of their real type. - -@item ffi_type_complex_float -@tindex ffi_type_complex_float -The C @code{_Complex float} type. - -@item ffi_type_complex_double -@tindex ffi_type_complex_double -The C @code{_Complex double} type. - -@item ffi_type_complex_longdouble -@tindex ffi_type_complex_longdouble -The C @code{_Complex long double} type. -On platforms that have a C @code{long double} type, this is defined. -On other platforms, it is not. -@end table - -Each of these is of type @code{ffi_type}, so you must take the address -when passing to @code{ffi_prep_cif}. - - -@node Structures -@subsection Structures - -@samp{libffi} is perfectly happy passing structures back and forth. -You must first describe the structure to @samp{libffi} by creating a -new @code{ffi_type} object for it. - -@tindex ffi_type -@deftp {Data type} ffi_type -The @code{ffi_type} has the following members: -@table @code -@item size_t size -This is set by @code{libffi}; you should initialize it to zero. - -@item unsigned short alignment -This is set by @code{libffi}; you should initialize it to zero. - -@item unsigned short type -For a structure, this should be set to @code{FFI_TYPE_STRUCT}. - -@item ffi_type **elements -This is a @samp{NULL}-terminated array of pointers to @code{ffi_type} -objects. There is one element per field of the struct. - -Note that @samp{libffi} has no special support for bit-fields. You -must manage these manually. -@end table -@end deftp - -The @code{size} and @code{alignment} fields will be filled in by -@code{ffi_prep_cif} or @code{ffi_prep_cif_var}, as needed. - -@node Size and Alignment -@subsection Size and Alignment - -@code{libffi} will set the @code{size} and @code{alignment} fields of -an @code{ffi_type} object for you. It does so using its knowledge of -the ABI. - -You might expect that you can simply read these fields for a type that -has been laid out by @code{libffi}. However, there are some caveats. - -@itemize @bullet -@item -The size or alignment of some of the built-in types may vary depending -on the chosen ABI. - -@item -The size and alignment of a new structure type will not be set by -@code{libffi} until it has been passed to @code{ffi_prep_cif} or -@code{ffi_get_struct_offsets}. - -@item -A structure type cannot be shared across ABIs. Instead each ABI needs -its own copy of the structure type. -@end itemize - -So, before examining these fields, it is safest to pass the -@code{ffi_type} object to @code{ffi_prep_cif} or -@code{ffi_get_struct_offsets} first. This function will do all the -needed setup. - -@example -ffi_type *desired_type; -ffi_abi desired_abi; -@dots{} -ffi_cif cif; -if (ffi_prep_cif (&cif, desired_abi, 0, desired_type, NULL) == FFI_OK) - @{ - size_t size = desired_type->size; - unsigned short alignment = desired_type->alignment; - @} -@end example - -@code{libffi} also provides a way to get the offsets of the members of -a structure. - -@findex ffi_get_struct_offsets -@defun ffi_status ffi_get_struct_offsets (ffi_abi abi, ffi_type *struct_type, size_t *offsets) -Compute the offset of each element of the given structure type. -@var{abi} is the ABI to use; this is needed because in some cases the -layout depends on the ABI. - -@var{offsets} is an out parameter. The caller is responsible for -providing enough space for all the results to be written -- one -element per element type in @var{struct_type}. If @var{offsets} is -@code{NULL}, then the type will be laid out but not otherwise -modified. This can be useful for accessing the type's size or layout, -as mentioned above. - -This function returns @code{FFI_OK} on success; @code{FFI_BAD_ABI} if -@var{abi} is invalid; or @code{FFI_BAD_TYPEDEF} if @var{struct_type} -is invalid in some way. Note that only @code{FFI_STRUCT} types are -valid here. -@end defun - -@node Arrays Unions Enums -@subsection Arrays, Unions, and Enumerations - -@subsubsection Arrays - -@samp{libffi} does not have direct support for arrays or unions. -However, they can be emulated using structures. - -To emulate an array, simply create an @code{ffi_type} using -@code{FFI_TYPE_STRUCT} with as many members as there are elements in -the array. - -@example -ffi_type array_type; -ffi_type **elements -int i; - -elements = malloc ((n + 1) * sizeof (ffi_type *)); -for (i = 0; i < n; ++i) - elements[i] = array_element_type; -elements[n] = NULL; - -array_type.size = array_type.alignment = 0; -array_type.type = FFI_TYPE_STRUCT; -array_type.elements = elements; -@end example - -Note that arrays cannot be passed or returned by value in C -- -structure types created like this should only be used to refer to -members of real @code{FFI_TYPE_STRUCT} objects. - -However, a phony array type like this will not cause any errors from -@samp{libffi} if you use it as an argument or return type. This may -be confusing. - -@subsubsection Unions - -A union can also be emulated using @code{FFI_TYPE_STRUCT}. In this -case, however, you must make sure that the size and alignment match -the real requirements of the union. - -One simple way to do this is to ensue that each element type is laid -out. Then, give the new structure type a single element; the size of -the largest element; and the largest alignment seen as well. - -This example uses the @code{ffi_prep_cif} trick to ensure that each -element type is laid out. - -@example -ffi_abi desired_abi; -ffi_type union_type; -ffi_type **union_elements; - -int i; -ffi_type element_types[2]; - -element_types[1] = NULL; - -union_type.size = union_type.alignment = 0; -union_type.type = FFI_TYPE_STRUCT; -union_type.elements = element_types; - -for (i = 0; union_elements[i]; ++i) - @{ - ffi_cif cif; - if (ffi_prep_cif (&cif, desired_abi, 0, union_elements[i], NULL) == FFI_OK) - @{ - if (union_elements[i]->size > union_type.size) - @{ - union_type.size = union_elements[i]; - size = union_elements[i]->size; - @} - if (union_elements[i]->alignment > union_type.alignment) - union_type.alignment = union_elements[i]->alignment; - @} - @} -@end example - -@subsubsection Enumerations - -@code{libffi} does not have any special support for C @code{enum}s. -Although any given @code{enum} is implemented using a specific -underlying integral type, exactly which type will be used cannot be -determined by @code{libffi} -- it may depend on the values in the -enumeration or on compiler flags such as @option{-fshort-enums}. -@xref{Structures unions enumerations and bit-fields implementation, , , gcc}, -for more information about how GCC handles enumerations. - -@node Type Example -@subsection Type Example - -The following example initializes a @code{ffi_type} object -representing the @code{tm} struct from Linux's @file{time.h}. - -Here is how the struct is defined: - -@example -struct tm @{ - int tm_sec; - int tm_min; - int tm_hour; - int tm_mday; - int tm_mon; - int tm_year; - int tm_wday; - int tm_yday; - int tm_isdst; - /* Those are for future use. */ - long int __tm_gmtoff__; - __const char *__tm_zone__; -@}; -@end example - -Here is the corresponding code to describe this struct to -@code{libffi}: - -@example - @{ - ffi_type tm_type; - ffi_type *tm_type_elements[12]; - int i; - - tm_type.size = tm_type.alignment = 0; - tm_type.type = FFI_TYPE_STRUCT; - tm_type.elements = &tm_type_elements; - - for (i = 0; i < 9; i++) - tm_type_elements[i] = &ffi_type_sint; - - tm_type_elements[9] = &ffi_type_slong; - tm_type_elements[10] = &ffi_type_pointer; - tm_type_elements[11] = NULL; - - /* tm_type can now be used to represent tm argument types and - return types for ffi_prep_cif() */ - @} -@end example - -@node Complex -@subsection Complex Types - -@samp{libffi} supports the complex types defined by the C99 -standard (@code{_Complex float}, @code{_Complex double} and -@code{_Complex long double} with the built-in type descriptors -@code{ffi_type_complex_float}, @code{ffi_type_complex_double} and -@code{ffi_type_complex_longdouble}. - -Custom complex types like @code{_Complex int} can also be used. -An @code{ffi_type} object has to be defined to describe the -complex type to @samp{libffi}. - -@tindex ffi_type -@deftp {Data type} ffi_type -@table @code -@item size_t size -This must be manually set to the size of the complex type. - -@item unsigned short alignment -This must be manually set to the alignment of the complex type. - -@item unsigned short type -For a complex type, this must be set to @code{FFI_TYPE_COMPLEX}. - -@item ffi_type **elements - -This is a @samp{NULL}-terminated array of pointers to -@code{ffi_type} objects. The first element is set to the -@code{ffi_type} of the complex's base type. The second element -must be set to @code{NULL}. -@end table -@end deftp - -The section @ref{Complex Type Example} shows a way to determine -the @code{size} and @code{alignment} members in a platform -independent way. - -For platforms that have no complex support in @code{libffi} yet, -the functions @code{ffi_prep_cif} and @code{ffi_prep_args} abort -the program if they encounter a complex type. - -@node Complex Type Example -@subsection Complex Type Example - -This example demonstrates how to use complex types: - -@example -#include -#include -#include - -void complex_fn(_Complex float cf, - _Complex double cd, - _Complex long double cld) -@{ - printf("cf=%f+%fi\ncd=%f+%fi\ncld=%f+%fi\n", - (float)creal (cf), (float)cimag (cf), - (float)creal (cd), (float)cimag (cd), - (float)creal (cld), (float)cimag (cld)); -@} - -int main() -@{ - ffi_cif cif; - ffi_type *args[3]; - void *values[3]; - _Complex float cf; - _Complex double cd; - _Complex long double cld; - - /* Initialize the argument info vectors */ - args[0] = &ffi_type_complex_float; - args[1] = &ffi_type_complex_double; - args[2] = &ffi_type_complex_longdouble; - values[0] = &cf; - values[1] = &cd; - values[2] = &cld; - - /* Initialize the cif */ - if (ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3, - &ffi_type_void, args) == FFI_OK) - @{ - cf = 1.0 + 20.0 * I; - cd = 300.0 + 4000.0 * I; - cld = 50000.0 + 600000.0 * I; - /* Call the function */ - ffi_call(&cif, (void (*)(void))complex_fn, 0, values); - @} - - return 0; -@} -@end example - -This is an example for defining a custom complex type descriptor -for compilers that support them: - -@example -/* - * This macro can be used to define new complex type descriptors - * in a platform independent way. - * - * name: Name of the new descriptor is ffi_type_complex_. - * type: The C base type of the complex type. - */ -#define FFI_COMPLEX_TYPEDEF(name, type, ffitype) \ - static ffi_type *ffi_elements_complex_##name [2] = @{ \ - (ffi_type *)(&ffitype), NULL \ - @}; \ - struct struct_align_complex_##name @{ \ - char c; \ - _Complex type x; \ - @}; \ - ffi_type ffi_type_complex_##name = @{ \ - sizeof(_Complex type), \ - offsetof(struct struct_align_complex_##name, x), \ - FFI_TYPE_COMPLEX, \ - (ffi_type **)ffi_elements_complex_##name \ - @} - -/* Define new complex type descriptors using the macro: */ -/* ffi_type_complex_sint */ -FFI_COMPLEX_TYPEDEF(sint, int, ffi_type_sint); -/* ffi_type_complex_uchar */ -FFI_COMPLEX_TYPEDEF(uchar, unsigned char, ffi_type_uint8); -@end example - -The new type descriptors can then be used like one of the built-in -type descriptors in the previous example. - -@node Multiple ABIs -@section Multiple ABIs - -A given platform may provide multiple different ABIs at once. For -instance, the x86 platform has both @samp{stdcall} and @samp{fastcall} -functions. - -@code{libffi} provides some support for this. However, this is -necessarily platform-specific. - -@c FIXME: document the platforms - -@node The Closure API -@section The Closure API - -@code{libffi} also provides a way to write a generic function -- a -function that can accept and decode any combination of arguments. -This can be useful when writing an interpreter, or to provide wrappers -for arbitrary functions. - -This facility is called the @dfn{closure API}. Closures are not -supported on all platforms; you can check the @code{FFI_CLOSURES} -define to determine whether they are supported on the current -platform. -@cindex closures -@cindex closure API -@findex FFI_CLOSURES - -Because closures work by assembling a tiny function at runtime, they -require special allocation on platforms that have a non-executable -heap. Memory management for closures is handled by a pair of -functions: - -@findex ffi_closure_alloc -@defun void *ffi_closure_alloc (size_t @var{size}, void **@var{code}) -Allocate a chunk of memory holding @var{size} bytes. This returns a -pointer to the writable address, and sets *@var{code} to the -corresponding executable address. - -@var{size} should be sufficient to hold a @code{ffi_closure} object. -@end defun - -@findex ffi_closure_free -@defun void ffi_closure_free (void *@var{writable}) -Free memory allocated using @code{ffi_closure_alloc}. The argument is -the writable address that was returned. -@end defun - - -Once you have allocated the memory for a closure, you must construct a -@code{ffi_cif} describing the function call. Finally you can prepare -the closure function: - -@findex ffi_prep_closure_loc -@defun ffi_status ffi_prep_closure_loc (ffi_closure *@var{closure}, ffi_cif *@var{cif}, void (*@var{fun}) (ffi_cif *@var{cif}, void *@var{ret}, void **@var{args}, void *@var{user_data}), void *@var{user_data}, void *@var{codeloc}) -Prepare a closure function. The arguments to -@code{ffi_prep_closure_loc} are: - -@table @var -@item closure -The address of a @code{ffi_closure} object; this is the writable -address returned by @code{ffi_closure_alloc}. - -@item cif -The @code{ffi_cif} describing the function parameters. Note that this -object, and the types to which it refers, must be kept alive until the -closure itself is freed. - -@item user_data -An arbitrary datum that is passed, uninterpreted, to your closure -function. - -@item codeloc -The executable address returned by @code{ffi_closure_alloc}. - -@item fun -The function which will be called when the closure is invoked. It is -called with the arguments: - -@table @var -@item cif -The @code{ffi_cif} passed to @code{ffi_prep_closure_loc}. - -@item ret -A pointer to the memory used for the function's return value. - -If the function is declared as returning @code{void}, then this value -is garbage and should not be used. - -Otherwise, @var{fun} must fill the object to which this points, -following the same special promotion behavior as @code{ffi_call}. -That is, in most cases, @var{ret} points to an object of exactly the -size of the type specified when @var{cif} was constructed. However, -integral types narrower than the system register size are widened. In -these cases your program may assume that @var{ret} points to an -@code{ffi_arg} object. - -@item args -A vector of pointers to memory holding the arguments to the function. - -@item user_data -The same @var{user_data} that was passed to -@code{ffi_prep_closure_loc}. -@end table -@end table - -@code{ffi_prep_closure_loc} will return @code{FFI_OK} if everything -went ok, and one of the other @code{ffi_status} values on error. - -After calling @code{ffi_prep_closure_loc}, you can cast @var{codeloc} -to the appropriate pointer-to-function type. -@end defun - -You may see old code referring to @code{ffi_prep_closure}. This -function is deprecated, as it cannot handle the need for separate -writable and executable addresses. - -@node Closure Example -@section Closure Example - -A trivial example that creates a new @code{puts} by binding -@code{fputs} with @code{stdout}. - -@example -#include -#include - -/* Acts like puts with the file given at time of enclosure. */ -void puts_binding(ffi_cif *cif, void *ret, void* args[], - void *stream) -@{ - *(ffi_arg *)ret = fputs(*(char **)args[0], (FILE *)stream); -@} - -typedef int (*puts_t)(char *); - -int main() -@{ - ffi_cif cif; - ffi_type *args[1]; - ffi_closure *closure; - - void *bound_puts; - int rc; - - /* Allocate closure and bound_puts */ - closure = ffi_closure_alloc(sizeof(ffi_closure), &bound_puts); - - if (closure) - @{ - /* Initialize the argument info vectors */ - args[0] = &ffi_type_pointer; - - /* Initialize the cif */ - if (ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, - &ffi_type_sint, args) == FFI_OK) - @{ - /* Initialize the closure, setting stream to stdout */ - if (ffi_prep_closure_loc(closure, &cif, puts_binding, - stdout, bound_puts) == FFI_OK) - @{ - rc = ((puts_t)bound_puts)("Hello World!"); - /* rc now holds the result of the call to fputs */ - @} - @} - @} - - /* Deallocate both closure, and bound_puts */ - ffi_closure_free(closure); - - return 0; -@} - -@end example - -@node Thread Safety -@section Thread Safety - -@code{libffi} is not completely thread-safe. However, many parts are, -and if you follow some simple rules, you can use it safely in a -multi-threaded program. - -@itemize @bullet -@item -@code{ffi_prep_cif} may modify the @code{ffi_type} objects passed to -it. It is best to ensure that only a single thread prepares a given -@code{ffi_cif} at a time. - -@item -On some platforms, @code{ffi_prep_cif} may modify the size and -alignment of some types, depending on the chosen ABI. On these -platforms, if you switch between ABIs, you must ensure that there is -only one call to @code{ffi_prep_cif} at a time. - -Currently the only affected platform is PowerPC and the only affected -type is @code{long double}. -@end itemize - -@node Missing Features -@chapter Missing Features - -@code{libffi} is missing a few features. We welcome patches to add -support for these. - -@itemize @bullet -@item -Variadic closures. - -@item -There is no support for bit fields in structures. - -@item -The ``raw'' API is undocumented. -@c anything else? - -@item -The Go API is undocumented. -@end itemize - -Note that variadic support is very new and tested on a relatively -small number of platforms. - -@node Index -@unnumbered Index - -@printindex cp - -@bye diff --git a/doc/mdate-sh b/doc/mdate-sh deleted file mode 100755 index 8c7a590..0000000 --- a/doc/mdate-sh +++ /dev/null @@ -1,228 +0,0 @@ -#!/bin/sh -# Get modification time of a file or directory and pretty-print it. - -scriptversion=2018-03-07.03; # UTC - -# Copyright (C) 1995-2018 Free Software Foundation, Inc. -# written by Ulrich Drepper , June 1995 -# -# 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, see . - -# 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 -# . - -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -fi - -case $1 in - '') - echo "$0: No file. Try '$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: mdate-sh [--help] [--version] FILE - -Pretty-print the modification day of FILE, in the format: -1 January 1970 - -Report bugs to . -EOF - exit $? - ;; - -v | --v*) - echo "mdate-sh $scriptversion" - exit $? - ;; -esac - -error () -{ - echo "$0: $1" >&2 - exit 1 -} - - -# Prevent date giving response in another language. -LANG=C -export LANG -LC_ALL=C -export LC_ALL -LC_TIME=C -export LC_TIME - -# Use UTC to get reproducible result. -TZ=UTC0 -export TZ - -# GNU ls changes its time format in response to the TIME_STYLE -# variable. Since we cannot assume 'unset' works, revert this -# variable to its documented default. -if test "${TIME_STYLE+set}" = set; then - TIME_STYLE=posix-long-iso - export TIME_STYLE -fi - -save_arg1=$1 - -# Find out how to get the extended ls output of a file or directory. -if ls -L /dev/null 1>/dev/null 2>&1; then - ls_command='ls -L -l -d' -else - ls_command='ls -l -d' -fi -# Avoid user/group names that might have spaces, when possible. -if ls -n /dev/null 1>/dev/null 2>&1; then - ls_command="$ls_command -n" -fi - -# A 'ls -l' line looks as follows on OS/2. -# drwxrwx--- 0 Aug 11 2001 foo -# This differs from Unix, which adds ownership information. -# drwxrwx--- 2 root root 4096 Aug 11 2001 foo -# -# To find the date, we split the line on spaces and iterate on words -# until we find a month. This cannot work with files whose owner is a -# user named "Jan", or "Feb", etc. However, it's unlikely that '/' -# will be owned by a user whose name is a month. So we first look at -# the extended ls output of the root directory to decide how many -# words should be skipped to get the date. - -# On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below. -set x`$ls_command /` - -# Find which argument is the month. -month= -command= -until test $month -do - test $# -gt 0 || error "failed parsing '$ls_command /' output" - shift - # Add another shift to the command. - command="$command shift;" - case $1 in - Jan) month=January; nummonth=1;; - Feb) month=February; nummonth=2;; - Mar) month=March; nummonth=3;; - Apr) month=April; nummonth=4;; - May) month=May; nummonth=5;; - Jun) month=June; nummonth=6;; - Jul) month=July; nummonth=7;; - Aug) month=August; nummonth=8;; - Sep) month=September; nummonth=9;; - Oct) month=October; nummonth=10;; - Nov) month=November; nummonth=11;; - Dec) month=December; nummonth=12;; - esac -done - -test -n "$month" || error "failed parsing '$ls_command /' output" - -# Get the extended ls output of the file or directory. -set dummy x`eval "$ls_command \"\\\$save_arg1\""` - -# Remove all preceding arguments -eval $command - -# Because of the dummy argument above, month is in $2. -# -# On a POSIX system, we should have -# -# $# = 5 -# $1 = file size -# $2 = month -# $3 = day -# $4 = year or time -# $5 = filename -# -# On Darwin 7.7.0 and 7.6.0, we have -# -# $# = 4 -# $1 = day -# $2 = month -# $3 = year or time -# $4 = filename - -# Get the month. -case $2 in - Jan) month=January; nummonth=1;; - Feb) month=February; nummonth=2;; - Mar) month=March; nummonth=3;; - Apr) month=April; nummonth=4;; - May) month=May; nummonth=5;; - Jun) month=June; nummonth=6;; - Jul) month=July; nummonth=7;; - Aug) month=August; nummonth=8;; - Sep) month=September; nummonth=9;; - Oct) month=October; nummonth=10;; - Nov) month=November; nummonth=11;; - Dec) month=December; nummonth=12;; -esac - -case $3 in - ???*) day=$1;; - *) day=$3; shift;; -esac - -# Here we have to deal with the problem that the ls output gives either -# the time of day or the year. -case $3 in - *:*) set `date`; eval year=\$$# - case $2 in - Jan) nummonthtod=1;; - Feb) nummonthtod=2;; - Mar) nummonthtod=3;; - Apr) nummonthtod=4;; - May) nummonthtod=5;; - Jun) nummonthtod=6;; - Jul) nummonthtod=7;; - Aug) nummonthtod=8;; - Sep) nummonthtod=9;; - Oct) nummonthtod=10;; - Nov) nummonthtod=11;; - Dec) nummonthtod=12;; - esac - # For the first six month of the year the time notation can also - # be used for files modified in the last year. - if (expr $nummonth \> $nummonthtod) > /dev/null; - then - year=`expr $year - 1` - fi;; - *) year=$3;; -esac - -# The result. -echo $day $month $year - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'before-save-hook 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC0" -# time-stamp-end: "; # UTC" -# End: diff --git a/doc/stamp-vti b/doc/stamp-vti deleted file mode 100644 index d9d5094..0000000 --- a/doc/stamp-vti +++ /dev/null @@ -1,4 +0,0 @@ -@set UPDATED 22 November 2019 -@set UPDATED-MONTH November 2019 -@set EDITION 3.3 -@set VERSION 3.3 diff --git a/doc/texinfo.tex b/doc/texinfo.tex deleted file mode 100644 index ac5c1d9..0000000 --- a/doc/texinfo.tex +++ /dev/null @@ -1,11727 +0,0 @@ -% texinfo.tex -- TeX macros to handle Texinfo files. -% -% Load plain if necessary, i.e., if running under initex. -\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi -% -\def\texinfoversion{2018-02-12.17} -% -% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, -% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, -% 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 -% Free Software Foundation, Inc. -% -% This texinfo.tex 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 3 of the -% License, or (at your option) any later version. -% -% This texinfo.tex file 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 . -% -% As a special exception, when this file is read by TeX when processing -% a Texinfo source document, you may use the result without -% restriction. This Exception is an additional permission under section 7 -% of the GNU General Public License, version 3 ("GPLv3"). -% -% Please try the latest version of texinfo.tex before submitting bug -% reports; you can get the latest version from: -% https://ftp.gnu.org/gnu/texinfo/ (the Texinfo release area), or -% https://ftpmirror.gnu.org/texinfo/ (same, via a mirror), or -% https://www.gnu.org/software/texinfo/ (the Texinfo home page) -% The texinfo.tex in any given distribution could well be out -% of date, so if that's what you're using, please check. -% -% Send bug reports to bug-texinfo@gnu.org. Please include including a -% complete document in each bug report with which we can reproduce the -% problem. Patches are, of course, greatly appreciated. -% -% To process a Texinfo manual with TeX, it's most reliable to use the -% texi2dvi shell script that comes with the distribution. For a simple -% manual foo.texi, however, you can get away with this: -% tex foo.texi -% texindex foo.?? -% tex foo.texi -% tex foo.texi -% dvips foo.dvi -o # or whatever; this makes foo.ps. -% The extra TeX runs get the cross-reference information correct. -% Sometimes one run after texindex suffices, and sometimes you need more -% than two; texi2dvi does it as many times as necessary. -% -% It is possible to adapt texinfo.tex for other languages, to some -% extent. You can get the existing language-specific files from the -% full Texinfo distribution. -% -% The GNU Texinfo home page is https://www.gnu.org/software/texinfo. - - -\message{Loading texinfo [version \texinfoversion]:} - -% If in a .fmt file, print the version number -% and turn on active characters that we couldn't do earlier because -% they might have appeared in the input file name. -\everyjob{\message{[Texinfo version \texinfoversion]}% - \catcode`+=\active \catcode`\_=\active} - -% LaTeX's \typeout. This ensures that the messages it is used for -% are identical in format to the corresponding ones from latex/pdflatex. -\def\typeout{\immediate\write17}% - -\chardef\other=12 - -% We never want plain's \outer definition of \+ in Texinfo. -% For @tex, we can use \tabalign. -\let\+ = \relax - -% Save some plain tex macros whose names we will redefine. -\let\ptexb=\b -\let\ptexbullet=\bullet -\let\ptexc=\c -\let\ptexcomma=\, -\let\ptexdot=\. -\let\ptexdots=\dots -\let\ptexend=\end -\let\ptexequiv=\equiv -\let\ptexexclam=\! -\let\ptexfootnote=\footnote -\let\ptexgtr=> -\let\ptexhat=^ -\let\ptexi=\i -\let\ptexindent=\indent -\let\ptexinsert=\insert -\let\ptexlbrace=\{ -\let\ptexless=< -\let\ptexnewwrite\newwrite -\let\ptexnoindent=\noindent -\let\ptexplus=+ -\let\ptexraggedright=\raggedright -\let\ptexrbrace=\} -\let\ptexslash=\/ -\let\ptexsp=\sp -\let\ptexstar=\* -\let\ptexsup=\sup -\let\ptext=\t -\let\ptextop=\top -{\catcode`\'=\active \global\let\ptexquoteright'}% active in plain's math mode - -% If this character appears in an error message or help string, it -% starts a new line in the output. -\newlinechar = `^^J - -% Use TeX 3.0's \inputlineno to get the line number, for better error -% messages, but if we're using an old version of TeX, don't do anything. -% -\ifx\inputlineno\thisisundefined - \let\linenumber = \empty % Pre-3.0. -\else - \def\linenumber{l.\the\inputlineno:\space} -\fi - -% Set up fixed words for English if not already set. -\ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi -\ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi -\ifx\putworderror\undefined \gdef\putworderror{error}\fi -\ifx\putwordfile\undefined \gdef\putwordfile{file}\fi -\ifx\putwordin\undefined \gdef\putwordin{in}\fi -\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi -\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi -\ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi -\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi -\ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi -\ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi -\ifx\putwordof\undefined \gdef\putwordof{of}\fi -\ifx\putwordon\undefined \gdef\putwordon{on}\fi -\ifx\putwordpage\undefined \gdef\putwordpage{page}\fi -\ifx\putwordsection\undefined \gdef\putwordsection{section}\fi -\ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi -\ifx\putwordsee\undefined \gdef\putwordsee{see}\fi -\ifx\putwordSee\undefined \gdef\putwordSee{See}\fi -\ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi -\ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi -% -\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi -\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi -\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi -\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi -\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi -\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi -\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi -\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi -\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi -\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi -\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi -\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi -% -\ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi -\ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi -\ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi -\ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi -\ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi - -% Give the space character the catcode for a space. -\def\spaceisspace{\catcode`\ =10\relax} - -% Likewise for ^^M, the end of line character. -\def\endlineisspace{\catcode13=10\relax} - -\chardef\dashChar = `\- -\chardef\slashChar = `\/ -\chardef\underChar = `\_ - -% Ignore a token. -% -\def\gobble#1{} - -% The following is used inside several \edef's. -\def\makecsname#1{\expandafter\noexpand\csname#1\endcsname} - -% Hyphenation fixes. -\hyphenation{ - Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script - auto-ma-ti-cal-ly ap-pen-dix bit-map bit-maps - data-base data-bases eshell fall-ing half-way long-est man-u-script - man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm - par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces - spell-ing spell-ings - stand-alone strong-est time-stamp time-stamps which-ever white-space - wide-spread wrap-around -} - -% Sometimes it is convenient to have everything in the transcript file -% and nothing on the terminal. We don't just call \tracingall here, -% since that produces some useless output on the terminal. We also make -% some effort to order the tracing commands to reduce output in the log -% file; cf. trace.sty in LaTeX. -% -\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}% -\def\loggingall{% - \tracingstats2 - \tracingpages1 - \tracinglostchars2 % 2 gives us more in etex - \tracingparagraphs1 - \tracingoutput1 - \tracingmacros2 - \tracingrestores1 - \showboxbreadth\maxdimen \showboxdepth\maxdimen - \ifx\eTeXversion\thisisundefined\else % etex gives us more logging - \tracingscantokens1 - \tracingifs1 - \tracinggroups1 - \tracingnesting2 - \tracingassigns1 - \fi - \tracingcommands3 % 3 gives us more in etex - \errorcontextlines16 -}% - -% @errormsg{MSG}. Do the index-like expansions on MSG, but if things -% aren't perfect, it's not the end of the world, being an error message, -% after all. -% -\def\errormsg{\begingroup \indexnofonts \doerrormsg} -\def\doerrormsg#1{\errmessage{#1}} - -% add check for \lastpenalty to plain's definitions. If the last thing -% we did was a \nobreak, we don't want to insert more space. -% -\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount - \removelastskip\penalty-50\smallskip\fi\fi} -\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount - \removelastskip\penalty-100\medskip\fi\fi} -\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount - \removelastskip\penalty-200\bigskip\fi\fi} - -% Output routine -% - -% For a final copy, take out the rectangles -% that mark overfull boxes (in case you have decided -% that the text looks ok even though it passes the margin). -% -\def\finalout{\overfullrule=0pt } - -% Do @cropmarks to get crop marks. -% -\newif\ifcropmarks -\let\cropmarks = \cropmarkstrue -% -% Dimensions to add cropmarks at corners. -% Added by P. A. MacKay, 12 Nov. 1986 -% -\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines -\newdimen\cornerlong \cornerlong=1pc -\newdimen\cornerthick \cornerthick=.3pt -\newdimen\topandbottommargin \topandbottommargin=.75in - -% Output a mark which sets \thischapter, \thissection and \thiscolor. -% We dump everything together because we only have one kind of mark. -% This works because we only use \botmark / \topmark, not \firstmark. -% -% A mark contains a subexpression of the \ifcase ... \fi construct. -% \get*marks macros below extract the needed part using \ifcase. -% -% Another complication is to let the user choose whether \thischapter -% (\thissection) refers to the chapter (section) in effect at the top -% of a page, or that at the bottom of a page. - -% \domark is called twice inside \chapmacro, to add one -% mark before the section break, and one after. -% In the second call \prevchapterdefs is the same as \lastchapterdefs, -% and \prevsectiondefs is the same as \lastsectiondefs. -% Then if the page is not broken at the mark, some of the previous -% section appears on the page, and we can get the name of this section -% from \firstmark for @everyheadingmarks top. -% @everyheadingmarks bottom uses \botmark. -% -% See page 260 of The TeXbook. -\def\domark{% - \toks0=\expandafter{\lastchapterdefs}% - \toks2=\expandafter{\lastsectiondefs}% - \toks4=\expandafter{\prevchapterdefs}% - \toks6=\expandafter{\prevsectiondefs}% - \toks8=\expandafter{\lastcolordefs}% - \mark{% - \the\toks0 \the\toks2 % 0: marks for @everyheadingmarks top - \noexpand\or \the\toks4 \the\toks6 % 1: for @everyheadingmarks bottom - \noexpand\else \the\toks8 % 2: color marks - }% -} - -% \gettopheadingmarks, \getbottomheadingmarks, -% \getcolormarks - extract needed part of mark. -% -% \topmark doesn't work for the very first chapter (after the title -% page or the contents), so we use \firstmark there -- this gets us -% the mark with the chapter defs, unless the user sneaks in, e.g., -% @setcolor (or @url, or @link, etc.) between @contents and the very -% first @chapter. -\def\gettopheadingmarks{% - \ifcase0\topmark\fi - \ifx\thischapter\empty \ifcase0\firstmark\fi \fi -} -\def\getbottomheadingmarks{\ifcase1\botmark\fi} -\def\getcolormarks{\ifcase2\topmark\fi} - -% Avoid "undefined control sequence" errors. -\def\lastchapterdefs{} -\def\lastsectiondefs{} -\def\lastsection{} -\def\prevchapterdefs{} -\def\prevsectiondefs{} -\def\lastcolordefs{} - -% Margin to add to right of even pages, to left of odd pages. -\newdimen\bindingoffset -\newdimen\normaloffset -\newdimen\txipagewidth \newdimen\txipageheight - -% Main output routine. -% -\chardef\PAGE = 255 -\output = {\onepageout{\pagecontents\PAGE}} - -\newbox\headlinebox -\newbox\footlinebox - -% \onepageout takes a vbox as an argument. -% \shipout a vbox for a single page, adding an optional header, footer, -% cropmarks, and footnote. This also causes index entries for this page -% to be written to the auxiliary files. -% -\def\onepageout#1{% - \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi - % - \ifodd\pageno \advance\hoffset by \bindingoffset - \else \advance\hoffset by -\bindingoffset\fi - % - % Common context changes for both heading and footing. - % Do this outside of the \shipout so @code etc. will be expanded in - % the headline as they should be, not taken literally (outputting ''code). - \def\commmonheadfootline{\let\hsize=\txipagewidth \texinfochars} - % - % Retrieve the information for the headings from the marks in the page, - % and call Plain TeX's \makeheadline and \makefootline, which use the - % values in \headline and \footline. - % - % This is used to check if we are on the first page of a chapter. - \ifcase1\topmark\fi - \let\prevchaptername\thischaptername - \ifcase0\firstmark\fi - \let\curchaptername\thischaptername - % - \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi - \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi - % - \ifx\curchaptername\prevchaptername - \let\thischapterheading\thischapter - \else - % \thischapterheading is the same as \thischapter except it is blank - % for the first page of a chapter. This is to prevent the chapter name - % being shown twice. - \def\thischapterheading{}% - \fi - % - \global\setbox\headlinebox = \vbox{\commmonheadfootline \makeheadline}% - \global\setbox\footlinebox = \vbox{\commmonheadfootline \makefootline}% - % - {% - % Set context for writing to auxiliary files like index files. - % Have to do this stuff outside the \shipout because we want it to - % take effect in \write's, yet the group defined by the \vbox ends - % before the \shipout runs. - % - \indexdummies % don't expand commands in the output. - \normalturnoffactive % \ in index entries must not stay \, e.g., if - % the page break happens to be in the middle of an example. - % We don't want .vr (or whatever) entries like this: - % \entry{{\indexbackslash }acronym}{32}{\code {\acronym}} - % "\acronym" won't work when it's read back in; - % it needs to be - % {\code {{\backslashcurfont }acronym} - \shipout\vbox{% - % Do this early so pdf references go to the beginning of the page. - \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi - % - \ifcropmarks \vbox to \outervsize\bgroup - \hsize = \outerhsize - \vskip-\topandbottommargin - \vtop to0pt{% - \line{\ewtop\hfil\ewtop}% - \nointerlineskip - \line{% - \vbox{\moveleft\cornerthick\nstop}% - \hfill - \vbox{\moveright\cornerthick\nstop}% - }% - \vss}% - \vskip\topandbottommargin - \line\bgroup - \hfil % center the page within the outer (page) hsize. - \ifodd\pageno\hskip\bindingoffset\fi - \vbox\bgroup - \fi - % - \unvbox\headlinebox - \pagebody{#1}% - \ifdim\ht\footlinebox > 0pt - % Only leave this space if the footline is nonempty. - % (We lessened \vsize for it in \oddfootingyyy.) - % The \baselineskip=24pt in plain's \makefootline has no effect. - \vskip 24pt - \unvbox\footlinebox - \fi - % - \ifcropmarks - \egroup % end of \vbox\bgroup - \hfil\egroup % end of (centering) \line\bgroup - \vskip\topandbottommargin plus1fill minus1fill - \boxmaxdepth = \cornerthick - \vbox to0pt{\vss - \line{% - \vbox{\moveleft\cornerthick\nsbot}% - \hfill - \vbox{\moveright\cornerthick\nsbot}% - }% - \nointerlineskip - \line{\ewbot\hfil\ewbot}% - }% - \egroup % \vbox from first cropmarks clause - \fi - }% end of \shipout\vbox - }% end of group with \indexdummies - \advancepageno - \ifnum\outputpenalty>-20000 \else\dosupereject\fi -} - -\newinsert\margin \dimen\margin=\maxdimen - -% Main part of page, including any footnotes -\def\pagebody#1{\vbox to\txipageheight{\boxmaxdepth=\maxdepth #1}} -{\catcode`\@ =11 -\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi -% marginal hacks, juha@viisa.uucp (Juha Takala) -\ifvoid\margin\else % marginal info is present - \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi -\dimen@=\dp#1\relax \unvbox#1\relax -\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi -\ifr@ggedbottom \kern-\dimen@ \vfil \fi} -} - -% Here are the rules for the cropmarks. Note that they are -% offset so that the space between them is truly \outerhsize or \outervsize -% (P. A. MacKay, 12 November, 1986) -% -\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong} -\def\nstop{\vbox - {\hrule height\cornerthick depth\cornerlong width\cornerthick}} -\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong} -\def\nsbot{\vbox - {\hrule height\cornerlong depth\cornerthick width\cornerthick}} - - -% Argument parsing - -% Parse an argument, then pass it to #1. The argument is the rest of -% the input line (except we remove a trailing comment). #1 should be a -% macro which expects an ordinary undelimited TeX argument. -% For example, \def\foo{\parsearg\fooxxx}. -% -\def\parsearg{\parseargusing{}} -\def\parseargusing#1#2{% - \def\argtorun{#2}% - \begingroup - \obeylines - \spaceisspace - #1% - \parseargline\empty% Insert the \empty token, see \finishparsearg below. -} - -{\obeylines % - \gdef\parseargline#1^^M{% - \endgroup % End of the group started in \parsearg. - \argremovecomment #1\comment\ArgTerm% - }% -} - -% First remove any @comment, then any @c comment. Also remove a @texinfoc -% comment (see \scanmacro for details). Pass the result on to \argcheckspaces. -\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm} -\def\argremovec#1\c#2\ArgTerm{\argremovetexinfoc #1\texinfoc\ArgTerm} -\def\argremovetexinfoc#1\texinfoc#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm} - -% Each occurrence of `\^^M' or `\^^M' is replaced by a single space. -% -% \argremovec might leave us with trailing space, e.g., -% @end itemize @c foo -% This space token undergoes the same procedure and is eventually removed -% by \finishparsearg. -% -\def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M} -\def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M} -\def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{% - \def\temp{#3}% - \ifx\temp\empty - % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp: - \let\temp\finishparsearg - \else - \let\temp\argcheckspaces - \fi - % Put the space token in: - \temp#1 #3\ArgTerm -} - -% If a _delimited_ argument is enclosed in braces, they get stripped; so -% to get _exactly_ the rest of the line, we had to prevent such situation. -% We prepended an \empty token at the very beginning and we expand it now, -% just before passing the control to \argtorun. -% (Similarly, we have to think about #3 of \argcheckspacesY above: it is -% either the null string, or it ends with \^^M---thus there is no danger -% that a pair of braces would be stripped. -% -% But first, we have to remove the trailing space token. -% -\def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}} - - -% \parseargdef - define a command taking an argument on the line -% -% \parseargdef\foo{...} -% is roughly equivalent to -% \def\foo{\parsearg\Xfoo} -% \def\Xfoo#1{...} -\def\parseargdef#1{% - \expandafter \doparseargdef \csname\string#1\endcsname #1% -} -\def\doparseargdef#1#2{% - \def#2{\parsearg#1}% - \def#1##1% -} - -% Several utility definitions with active space: -{ - \obeyspaces - \gdef\obeyedspace{ } - - % Make each space character in the input produce a normal interword - % space in the output. Don't allow a line break at this space, as this - % is used only in environments like @example, where each line of input - % should produce a line of output anyway. - % - \gdef\sepspaces{\obeyspaces\let =\tie} - - % If an index command is used in an @example environment, any spaces - % therein should become regular spaces in the raw index file, not the - % expansion of \tie (\leavevmode \penalty \@M \ ). - \gdef\unsepspaces{\let =\space} -} - - -\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next} - -% Define the framework for environments in texinfo.tex. It's used like this: -% -% \envdef\foo{...} -% \def\Efoo{...} -% -% It's the responsibility of \envdef to insert \begingroup before the -% actual body; @end closes the group after calling \Efoo. \envdef also -% defines \thisenv, so the current environment is known; @end checks -% whether the environment name matches. The \checkenv macro can also be -% used to check whether the current environment is the one expected. -% -% Non-false conditionals (@iftex, @ifset) don't fit into this, so they -% are not treated as environments; they don't open a group. (The -% implementation of @end takes care not to call \endgroup in this -% special case.) - - -% At run-time, environments start with this: -\def\startenvironment#1{\begingroup\def\thisenv{#1}} -% initialize -\let\thisenv\empty - -% ... but they get defined via ``\envdef\foo{...}'': -\long\def\envdef#1#2{\def#1{\startenvironment#1#2}} -\def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}} - -% Check whether we're in the right environment: -\def\checkenv#1{% - \def\temp{#1}% - \ifx\thisenv\temp - \else - \badenverr - \fi -} - -% Environment mismatch, #1 expected: -\def\badenverr{% - \errhelp = \EMsimple - \errmessage{This command can appear only \inenvironment\temp, - not \inenvironment\thisenv}% -} -\def\inenvironment#1{% - \ifx#1\empty - outside of any environment% - \else - in environment \expandafter\string#1% - \fi -} - -% @end foo executes the definition of \Efoo. -% But first, it executes a specialized version of \checkenv -% -\parseargdef\end{% - \if 1\csname iscond.#1\endcsname - \else - % The general wording of \badenverr may not be ideal. - \expandafter\checkenv\csname#1\endcsname - \csname E#1\endcsname - \endgroup - \fi -} - -\newhelp\EMsimple{Press RETURN to continue.} - - -% Be sure we're in horizontal mode when doing a tie, since we make space -% equivalent to this in @example-like environments. Otherwise, a space -% at the beginning of a line will start with \penalty -- and -% since \penalty is valid in vertical mode, we'd end up putting the -% penalty on the vertical list instead of in the new paragraph. -{\catcode`@ = 11 - % Avoid using \@M directly, because that causes trouble - % if the definition is written into an index file. - \global\let\tiepenalty = \@M - \gdef\tie{\leavevmode\penalty\tiepenalty\ } -} - -% @: forces normal size whitespace following. -\def\:{\spacefactor=1000 } - -% @* forces a line break. -\def\*{\unskip\hfil\break\hbox{}\ignorespaces} - -% @/ allows a line break. -\let\/=\allowbreak - -% @. is an end-of-sentence period. -\def\.{.\spacefactor=\endofsentencespacefactor\space} - -% @! is an end-of-sentence bang. -\def\!{!\spacefactor=\endofsentencespacefactor\space} - -% @? is an end-of-sentence query. -\def\?{?\spacefactor=\endofsentencespacefactor\space} - -% @frenchspacing on|off says whether to put extra space after punctuation. -% -\def\onword{on} -\def\offword{off} -% -\parseargdef\frenchspacing{% - \def\temp{#1}% - \ifx\temp\onword \plainfrenchspacing - \else\ifx\temp\offword \plainnonfrenchspacing - \else - \errhelp = \EMsimple - \errmessage{Unknown @frenchspacing option `\temp', must be on|off}% - \fi\fi -} - -% @w prevents a word break. Without the \leavevmode, @w at the -% beginning of a paragraph, when TeX is still in vertical mode, would -% produce a whole line of output instead of starting the paragraph. -\def\w#1{\leavevmode\hbox{#1}} - -% @group ... @end group forces ... to be all on one page, by enclosing -% it in a TeX vbox. We use \vtop instead of \vbox to construct the box -% to keep its height that of a normal line. According to the rules for -% \topskip (p.114 of the TeXbook), the glue inserted is -% max (\topskip - \ht (first item), 0). If that height is large, -% therefore, no glue is inserted, and the space between the headline and -% the text is small, which looks bad. -% -% Another complication is that the group might be very large. This can -% cause the glue on the previous page to be unduly stretched, because it -% does not have much material. In this case, it's better to add an -% explicit \vfill so that the extra space is at the bottom. The -% threshold for doing this is if the group is more than \vfilllimit -% percent of a page (\vfilllimit can be changed inside of @tex). -% -\newbox\groupbox -\def\vfilllimit{0.7} -% -\envdef\group{% - \ifnum\catcode`\^^M=\active \else - \errhelp = \groupinvalidhelp - \errmessage{@group invalid in context where filling is enabled}% - \fi - \startsavinginserts - % - \setbox\groupbox = \vtop\bgroup - % Do @comment since we are called inside an environment such as - % @example, where each end-of-line in the input causes an - % end-of-line in the output. We don't want the end-of-line after - % the `@group' to put extra space in the output. Since @group - % should appear on a line by itself (according to the Texinfo - % manual), we don't worry about eating any user text. - \comment -} -% -% The \vtop produces a box with normal height and large depth; thus, TeX puts -% \baselineskip glue before it, and (when the next line of text is done) -% \lineskip glue after it. Thus, space below is not quite equal to space -% above. But it's pretty close. -\def\Egroup{% - % To get correct interline space between the last line of the group - % and the first line afterwards, we have to propagate \prevdepth. - \endgraf % Not \par, as it may have been set to \lisppar. - \global\dimen1 = \prevdepth - \egroup % End the \vtop. - \addgroupbox - \prevdepth = \dimen1 - \checkinserts -} - -\def\addgroupbox{ - % \dimen0 is the vertical size of the group's box. - \dimen0 = \ht\groupbox \advance\dimen0 by \dp\groupbox - % \dimen2 is how much space is left on the page (more or less). - \dimen2 = \txipageheight \advance\dimen2 by -\pagetotal - % if the group doesn't fit on the current page, and it's a big big - % group, force a page break. - \ifdim \dimen0 > \dimen2 - \ifdim \pagetotal < \vfilllimit\txipageheight - \page - \fi - \fi - \box\groupbox -} - -% -% TeX puts in an \escapechar (i.e., `@') at the beginning of the help -% message, so this ends up printing `@group can only ...'. -% -\newhelp\groupinvalidhelp{% -group can only be used in environments such as @example,^^J% -where each line of input produces a line of output.} - -% @need space-in-mils -% forces a page break if there is not space-in-mils remaining. - -\newdimen\mil \mil=0.001in - -\parseargdef\need{% - % Ensure vertical mode, so we don't make a big box in the middle of a - % paragraph. - \par - % - % If the @need value is less than one line space, it's useless. - \dimen0 = #1\mil - \dimen2 = \ht\strutbox - \advance\dimen2 by \dp\strutbox - \ifdim\dimen0 > \dimen2 - % - % Do a \strut just to make the height of this box be normal, so the - % normal leading is inserted relative to the preceding line. - % And a page break here is fine. - \vtop to #1\mil{\strut\vfil}% - % - % TeX does not even consider page breaks if a penalty added to the - % main vertical list is 10000 or more. But in order to see if the - % empty box we just added fits on the page, we must make it consider - % page breaks. On the other hand, we don't want to actually break the - % page after the empty box. So we use a penalty of 9999. - % - % There is an extremely small chance that TeX will actually break the - % page at this \penalty, if there are no other feasible breakpoints in - % sight. (If the user is using lots of big @group commands, which - % almost-but-not-quite fill up a page, TeX will have a hard time doing - % good page breaking, for example.) However, I could not construct an - % example where a page broke at this \penalty; if it happens in a real - % document, then we can reconsider our strategy. - \penalty9999 - % - % Back up by the size of the box, whether we did a page break or not. - \kern -#1\mil - % - % Do not allow a page break right after this kern. - \nobreak - \fi -} - -% @br forces paragraph break (and is undocumented). - -\let\br = \par - -% @page forces the start of a new page. -% -\def\page{\par\vfill\supereject} - -% @exdent text.... -% outputs text on separate line in roman font, starting at standard page margin - -% This records the amount of indent in the innermost environment. -% That's how much \exdent should take out. -\newskip\exdentamount - -% This defn is used inside fill environments such as @defun. -\parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break} - -% This defn is used inside nofill environments such as @example. -\parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount - \leftline{\hskip\leftskip{\rm#1}}}} - -% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current -% paragraph. For more general purposes, use the \margin insertion -% class. WHICH is `l' or `r'. Not documented, written for gawk manual. -% -\newskip\inmarginspacing \inmarginspacing=1cm -\def\strutdepth{\dp\strutbox} -% -\def\doinmargin#1#2{\strut\vadjust{% - \nobreak - \kern-\strutdepth - \vtop to \strutdepth{% - \baselineskip=\strutdepth - \vss - % if you have multiple lines of stuff to put here, you'll need to - % make the vbox yourself of the appropriate size. - \ifx#1l% - \llap{\ignorespaces #2\hskip\inmarginspacing}% - \else - \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}% - \fi - \null - }% -}} -\def\inleftmargin{\doinmargin l} -\def\inrightmargin{\doinmargin r} -% -% @inmargin{TEXT [, RIGHT-TEXT]} -% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right; -% else use TEXT for both). -% -\def\inmargin#1{\parseinmargin #1,,\finish} -\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing. - \setbox0 = \hbox{\ignorespaces #2}% - \ifdim\wd0 > 0pt - \def\lefttext{#1}% have both texts - \def\righttext{#2}% - \else - \def\lefttext{#1}% have only one text - \def\righttext{#1}% - \fi - % - \ifodd\pageno - \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin - \else - \def\temp{\inleftmargin\lefttext}% - \fi - \temp -} - -% @include FILE -- \input text of FILE. -% -\def\include{\parseargusing\filenamecatcodes\includezzz} -\def\includezzz#1{% - \pushthisfilestack - \def\thisfile{#1}% - {% - \makevalueexpandable % we want to expand any @value in FILE. - \turnoffactive % and allow special characters in the expansion - \indexnofonts % Allow `@@' and other weird things in file names. - \wlog{texinfo.tex: doing @include of #1^^J}% - \edef\temp{\noexpand\input #1 }% - % - % This trickery is to read FILE outside of a group, in case it makes - % definitions, etc. - \expandafter - }\temp - \popthisfilestack -} -\def\filenamecatcodes{% - \catcode`\\=\other - \catcode`~=\other - \catcode`^=\other - \catcode`_=\other - \catcode`|=\other - \catcode`<=\other - \catcode`>=\other - \catcode`+=\other - \catcode`-=\other - \catcode`\`=\other - \catcode`\'=\other -} - -\def\pushthisfilestack{% - \expandafter\pushthisfilestackX\popthisfilestack\StackTerm -} -\def\pushthisfilestackX{% - \expandafter\pushthisfilestackY\thisfile\StackTerm -} -\def\pushthisfilestackY #1\StackTerm #2\StackTerm {% - \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}% -} - -\def\popthisfilestack{\errthisfilestackempty} -\def\errthisfilestackempty{\errmessage{Internal error: - the stack of filenames is empty.}} -% -\def\thisfile{} - -% @center line -% outputs that line, centered. -% -\parseargdef\center{% - \ifhmode - \let\centersub\centerH - \else - \let\centersub\centerV - \fi - \centersub{\hfil \ignorespaces#1\unskip \hfil}% - \let\centersub\relax % don't let the definition persist, just in case -} -\def\centerH#1{{% - \hfil\break - \advance\hsize by -\leftskip - \advance\hsize by -\rightskip - \line{#1}% - \break -}} -% -\newcount\centerpenalty -\def\centerV#1{% - % The idea here is the same as in \startdefun, \cartouche, etc.: if - % @center is the first thing after a section heading, we need to wipe - % out the negative parskip inserted by \sectionheading, but still - % prevent a page break here. - \centerpenalty = \lastpenalty - \ifnum\centerpenalty>10000 \vskip\parskip \fi - \ifnum\centerpenalty>9999 \penalty\centerpenalty \fi - \line{\kern\leftskip #1\kern\rightskip}% -} - -% @sp n outputs n lines of vertical space -% -\parseargdef\sp{\vskip #1\baselineskip} - -% @comment ...line which is ignored... -% @c is the same as @comment -% @ignore ... @end ignore is another way to write a comment - - -\def\c{\begingroup \catcode`\^^M=\active% -\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other% -\cxxx} -{\catcode`\^^M=\active \gdef\cxxx#1^^M{\endgroup}} -% -\let\comment\c - -% @paragraphindent NCHARS -% We'll use ems for NCHARS, close enough. -% NCHARS can also be the word `asis' or `none'. -% We cannot feasibly implement @paragraphindent asis, though. -% -\def\asisword{asis} % no translation, these are keywords -\def\noneword{none} -% -\parseargdef\paragraphindent{% - \def\temp{#1}% - \ifx\temp\asisword - \else - \ifx\temp\noneword - \defaultparindent = 0pt - \else - \defaultparindent = #1em - \fi - \fi - \parindent = \defaultparindent -} - -% @exampleindent NCHARS -% We'll use ems for NCHARS like @paragraphindent. -% It seems @exampleindent asis isn't necessary, but -% I preserve it to make it similar to @paragraphindent. -\parseargdef\exampleindent{% - \def\temp{#1}% - \ifx\temp\asisword - \else - \ifx\temp\noneword - \lispnarrowing = 0pt - \else - \lispnarrowing = #1em - \fi - \fi -} - -% @firstparagraphindent WORD -% If WORD is `none', then suppress indentation of the first paragraph -% after a section heading. If WORD is `insert', then do indent at such -% paragraphs. -% -% The paragraph indentation is suppressed or not by calling -% \suppressfirstparagraphindent, which the sectioning commands do. -% We switch the definition of this back and forth according to WORD. -% By default, we suppress indentation. -% -\def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent} -\def\insertword{insert} -% -\parseargdef\firstparagraphindent{% - \def\temp{#1}% - \ifx\temp\noneword - \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent - \else\ifx\temp\insertword - \let\suppressfirstparagraphindent = \relax - \else - \errhelp = \EMsimple - \errmessage{Unknown @firstparagraphindent option `\temp'}% - \fi\fi -} - -% Here is how we actually suppress indentation. Redefine \everypar to -% \kern backwards by \parindent, and then reset itself to empty. -% -% We also make \indent itself not actually do anything until the next -% paragraph. -% -\gdef\dosuppressfirstparagraphindent{% - \gdef\indent {\restorefirstparagraphindent \indent}% - \gdef\noindent{\restorefirstparagraphindent \noindent}% - \global\everypar = {\kern -\parindent \restorefirstparagraphindent}% -} -% -\gdef\restorefirstparagraphindent{% - \global\let\indent = \ptexindent - \global\let\noindent = \ptexnoindent - \global\everypar = {}% -} - - -% @refill is a no-op. -\let\refill=\relax - -% @setfilename INFO-FILENAME - ignored -\let\setfilename=\comment - -% @bye. -\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} - - -\message{pdf,} -% adobe `portable' document format -\newcount\tempnum -\newcount\lnkcount -\newtoks\filename -\newcount\filenamelength -\newcount\pgn -\newtoks\toksA -\newtoks\toksB -\newtoks\toksC -\newtoks\toksD -\newbox\boxA -\newbox\boxB -\newcount\countA -\newif\ifpdf -\newif\ifpdfmakepagedest - -% -% For LuaTeX -% - -\newif\iftxiuseunicodedestname -\txiuseunicodedestnamefalse % For pdfTeX etc. - -\ifx\luatexversion\thisisundefined -\else - % Use Unicode destination names - \txiuseunicodedestnametrue - % Escape PDF strings with converting UTF-16 from UTF-8 - \begingroup - \catcode`\%=12 - \directlua{ - function UTF16oct(str) - tex.sprint(string.char(0x5c) .. '376' .. string.char(0x5c) .. '377') - for c in string.utfvalues(str) do - if c < 0x10000 then - tex.sprint( - string.format(string.char(0x5c) .. string.char(0x25) .. '03o' .. - string.char(0x5c) .. string.char(0x25) .. '03o', - (c / 256), (c % 256))) - else - c = c - 0x10000 - local c_hi = c / 1024 + 0xd800 - local c_lo = c % 1024 + 0xdc00 - tex.sprint( - string.format(string.char(0x5c) .. string.char(0x25) .. '03o' .. - string.char(0x5c) .. string.char(0x25) .. '03o' .. - string.char(0x5c) .. string.char(0x25) .. '03o' .. - string.char(0x5c) .. string.char(0x25) .. '03o', - (c_hi / 256), (c_hi % 256), - (c_lo / 256), (c_lo % 256))) - end - end - end - } - \endgroup - \def\pdfescapestrutfsixteen#1{\directlua{UTF16oct('\luaescapestring{#1}')}} - % Escape PDF strings without converting - \begingroup - \directlua{ - function PDFescstr(str) - for c in string.bytes(str) do - if c <= 0x20 or c >= 0x80 or c == 0x28 or c == 0x29 or c == 0x5c then - tex.sprint( - string.format(string.char(0x5c) .. string.char(0x25) .. '03o', - c)) - else - tex.sprint(string.char(c)) - end - end - end - } - \endgroup - \def\pdfescapestring#1{\directlua{PDFescstr('\luaescapestring{#1}')}} - \ifnum\luatexversion>84 - % For LuaTeX >= 0.85 - \def\pdfdest{\pdfextension dest} - \let\pdfoutput\outputmode - \def\pdfliteral{\pdfextension literal} - \def\pdfcatalog{\pdfextension catalog} - \def\pdftexversion{\numexpr\pdffeedback version\relax} - \let\pdfximage\saveimageresource - \let\pdfrefximage\useimageresource - \let\pdflastximage\lastsavedimageresourceindex - \def\pdfendlink{\pdfextension endlink\relax} - \def\pdfoutline{\pdfextension outline} - \def\pdfstartlink{\pdfextension startlink} - \def\pdffontattr{\pdfextension fontattr} - \def\pdfobj{\pdfextension obj} - \def\pdflastobj{\numexpr\pdffeedback lastobj\relax} - \let\pdfpagewidth\pagewidth - \let\pdfpageheight\pageheight - \edef\pdfhorigin{\pdfvariable horigin} - \edef\pdfvorigin{\pdfvariable vorigin} - \fi -\fi - -% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1 -% can be set). So we test for \relax and 0 as well as being undefined. -\ifx\pdfoutput\thisisundefined -\else - \ifx\pdfoutput\relax - \else - \ifcase\pdfoutput - \else - \pdftrue - \fi - \fi -\fi - -% PDF uses PostScript string constants for the names of xref targets, -% for display in the outlines, and in other places. Thus, we have to -% double any backslashes. Otherwise, a name like "\node" will be -% interpreted as a newline (\n), followed by o, d, e. Not good. -% -% See http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html and -% related messages. The final outcome is that it is up to the TeX user -% to double the backslashes and otherwise make the string valid, so -% that's what we do. pdftex 1.30.0 (ca.2005) introduced a primitive to -% do this reliably, so we use it. - -% #1 is a control sequence in which to do the replacements, -% which we \xdef. -\def\txiescapepdf#1{% - \ifx\pdfescapestring\thisisundefined - % No primitive available; should we give a warning or log? - % Many times it won't matter. - \xdef#1{#1}% - \else - % The expandable \pdfescapestring primitive escapes parentheses, - % backslashes, and other special chars. - \xdef#1{\pdfescapestring{#1}}% - \fi -} -\def\txiescapepdfutfsixteen#1{% - \ifx\pdfescapestrutfsixteen\thisisundefined - % No UTF-16 converting macro available. - \txiescapepdf{#1}% - \else - \xdef#1{\pdfescapestrutfsixteen{#1}}% - \fi -} - -\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images -with PDF output, and none of those formats could be found. (.eps cannot -be supported due to the design of the PDF format; use regular TeX (DVI -output) for that.)} - -\ifpdf - % - % Color manipulation macros using ideas from pdfcolor.tex, - % except using rgb instead of cmyk; the latter is said to render as a - % very dark gray on-screen and a very dark halftone in print, instead - % of actual black. The dark red here is dark enough to print on paper as - % nearly black, but still distinguishable for online viewing. We use - % black by default, though. - \def\rgbDarkRed{0.50 0.09 0.12} - \def\rgbBlack{0 0 0} - % - % rg sets the color for filling (usual text, etc.); - % RG sets the color for stroking (thin rules, e.g., normal _'s). - \def\pdfsetcolor#1{\pdfliteral{#1 rg #1 RG}} - % - % Set color, and create a mark which defines \thiscolor accordingly, - % so that \makeheadline knows which color to restore. - \def\setcolor#1{% - \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}% - \domark - \pdfsetcolor{#1}% - } - % - \def\maincolor{\rgbBlack} - \pdfsetcolor{\maincolor} - \edef\thiscolor{\maincolor} - \def\lastcolordefs{} - % - \def\makefootline{% - \baselineskip24pt - \line{\pdfsetcolor{\maincolor}\the\footline}% - } - % - \def\makeheadline{% - \vbox to 0pt{% - \vskip-22.5pt - \line{% - \vbox to8.5pt{}% - % Extract \thiscolor definition from the marks. - \getcolormarks - % Typeset the headline with \maincolor, then restore the color. - \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}% - }% - \vss - }% - \nointerlineskip - } - % - % - \pdfcatalog{/PageMode /UseOutlines} - % - % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto). - \def\dopdfimage#1#2#3{% - \def\pdfimagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}% - \def\pdfimageheight{#3}\setbox2 = \hbox{\ignorespaces #3}% - % - % pdftex (and the PDF format) support .pdf, .png, .jpg (among - % others). Let's try in that order, PDF first since if - % someone has a scalable image, presumably better to use that than a - % bitmap. - \let\pdfimgext=\empty - \begingroup - \openin 1 #1.pdf \ifeof 1 - \openin 1 #1.PDF \ifeof 1 - \openin 1 #1.png \ifeof 1 - \openin 1 #1.jpg \ifeof 1 - \openin 1 #1.jpeg \ifeof 1 - \openin 1 #1.JPG \ifeof 1 - \errhelp = \nopdfimagehelp - \errmessage{Could not find image file #1 for pdf}% - \else \gdef\pdfimgext{JPG}% - \fi - \else \gdef\pdfimgext{jpeg}% - \fi - \else \gdef\pdfimgext{jpg}% - \fi - \else \gdef\pdfimgext{png}% - \fi - \else \gdef\pdfimgext{PDF}% - \fi - \else \gdef\pdfimgext{pdf}% - \fi - \closein 1 - \endgroup - % - % without \immediate, ancient pdftex seg faults when the same image is - % included twice. (Version 3.14159-pre-1.0-unofficial-20010704.) - \ifnum\pdftexversion < 14 - \immediate\pdfimage - \else - \immediate\pdfximage - \fi - \ifdim \wd0 >0pt width \pdfimagewidth \fi - \ifdim \wd2 >0pt height \pdfimageheight \fi - \ifnum\pdftexversion<13 - #1.\pdfimgext - \else - {#1.\pdfimgext}% - \fi - \ifnum\pdftexversion < 14 \else - \pdfrefximage \pdflastximage - \fi} - % - \def\setpdfdestname#1{{% - % We have to set dummies so commands such as @code, and characters - % such as \, aren't expanded when present in a section title. - \indexnofonts - \makevalueexpandable - \turnoffactive - \iftxiuseunicodedestname - \ifx \declaredencoding \latone - % Pass through Latin-1 characters. - % LuaTeX with byte wise I/O converts Latin-1 characters to Unicode. - \else - \ifx \declaredencoding \utfeight - % Pass through Unicode characters. - \else - % Use ASCII approximations in destination names. - \passthroughcharsfalse - \fi - \fi - \else - % Use ASCII approximations in destination names. - \passthroughcharsfalse - \fi - \def\pdfdestname{#1}% - \txiescapepdf\pdfdestname - }} - % - \def\setpdfoutlinetext#1{{% - \indexnofonts - \makevalueexpandable - \turnoffactive - \ifx \declaredencoding \latone - % The PDF format can use an extended form of Latin-1 in bookmark - % strings. See Appendix D of the PDF Reference, Sixth Edition, for - % the "PDFDocEncoding". - \passthroughcharstrue - % Pass through Latin-1 characters. - % LuaTeX: Convert to Unicode - % pdfTeX: Use Latin-1 as PDFDocEncoding - \def\pdfoutlinetext{#1}% - \else - \ifx \declaredencoding \utfeight - \ifx\luatexversion\thisisundefined - % For pdfTeX with UTF-8. - % TODO: the PDF format can use UTF-16 in bookmark strings, - % but the code for this isn't done yet. - % Use ASCII approximations. - \passthroughcharsfalse - \def\pdfoutlinetext{#1}% - \else - % For LuaTeX with UTF-8. - % Pass through Unicode characters for title texts. - \passthroughcharstrue - \def\pdfoutlinetext{#1}% - \fi - \else - % For non-Latin-1 or non-UTF-8 encodings. - % Use ASCII approximations. - \passthroughcharsfalse - \def\pdfoutlinetext{#1}% - \fi - \fi - % LuaTeX: Convert to UTF-16 - % pdfTeX: Use Latin-1 as PDFDocEncoding - \txiescapepdfutfsixteen\pdfoutlinetext - }} - % - \def\pdfmkdest#1{% - \setpdfdestname{#1}% - \safewhatsit{\pdfdest name{\pdfdestname} xyz}% - } - % - % used to mark target names; must be expandable. - \def\pdfmkpgn#1{#1} - % - % by default, use black for everything. - \def\urlcolor{\rgbBlack} - \def\linkcolor{\rgbBlack} - \def\endlink{\setcolor{\maincolor}\pdfendlink} - % - % Adding outlines to PDF; macros for calculating structure of outlines - % come from Petr Olsak - \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0% - \else \csname#1\endcsname \fi} - \def\advancenumber#1{\tempnum=\expnumber{#1}\relax - \advance\tempnum by 1 - \expandafter\xdef\csname#1\endcsname{\the\tempnum}} - % - % #1 is the section text, which is what will be displayed in the - % outline by the pdf viewer. #2 is the pdf expression for the number - % of subentries (or empty, for subsubsections). #3 is the node text, - % which might be empty if this toc entry had no corresponding node. - % #4 is the page number - % - \def\dopdfoutline#1#2#3#4{% - % Generate a link to the node text if that exists; else, use the - % page number. We could generate a destination for the section - % text in the case where a section has no node, but it doesn't - % seem worth the trouble, since most documents are normally structured. - \setpdfoutlinetext{#1} - \setpdfdestname{#3} - \ifx\pdfdestname\empty - \def\pdfdestname{#4}% - \fi - % - \pdfoutline goto name{\pdfmkpgn{\pdfdestname}}#2{\pdfoutlinetext}% - } - % - \def\pdfmakeoutlines{% - \begingroup - % Read toc silently, to get counts of subentries for \pdfoutline. - \def\partentry##1##2##3##4{}% ignore parts in the outlines - \def\numchapentry##1##2##3##4{% - \def\thischapnum{##2}% - \def\thissecnum{0}% - \def\thissubsecnum{0}% - }% - \def\numsecentry##1##2##3##4{% - \advancenumber{chap\thischapnum}% - \def\thissecnum{##2}% - \def\thissubsecnum{0}% - }% - \def\numsubsecentry##1##2##3##4{% - \advancenumber{sec\thissecnum}% - \def\thissubsecnum{##2}% - }% - \def\numsubsubsecentry##1##2##3##4{% - \advancenumber{subsec\thissubsecnum}% - }% - \def\thischapnum{0}% - \def\thissecnum{0}% - \def\thissubsecnum{0}% - % - % use \def rather than \let here because we redefine \chapentry et - % al. a second time, below. - \def\appentry{\numchapentry}% - \def\appsecentry{\numsecentry}% - \def\appsubsecentry{\numsubsecentry}% - \def\appsubsubsecentry{\numsubsubsecentry}% - \def\unnchapentry{\numchapentry}% - \def\unnsecentry{\numsecentry}% - \def\unnsubsecentry{\numsubsecentry}% - \def\unnsubsubsecentry{\numsubsubsecentry}% - \readdatafile{toc}% - % - % Read toc second time, this time actually producing the outlines. - % The `-' means take the \expnumber as the absolute number of - % subentries, which we calculated on our first read of the .toc above. - % - % We use the node names as the destinations. - \def\numchapentry##1##2##3##4{% - \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}% - \def\numsecentry##1##2##3##4{% - \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}% - \def\numsubsecentry##1##2##3##4{% - \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}% - \def\numsubsubsecentry##1##2##3##4{% count is always zero - \dopdfoutline{##1}{}{##3}{##4}}% - % - % PDF outlines are displayed using system fonts, instead of - % document fonts. Therefore we cannot use special characters, - % since the encoding is unknown. For example, the eogonek from - % Latin 2 (0xea) gets translated to a | character. Info from - % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100. - % - % TODO this right, we have to translate 8-bit characters to - % their "best" equivalent, based on the @documentencoding. Too - % much work for too little return. Just use the ASCII equivalents - % we use for the index sort strings. - % - \indexnofonts - \setupdatafile - % We can have normal brace characters in the PDF outlines, unlike - % Texinfo index files. So set that up. - \def\{{\lbracecharliteral}% - \def\}{\rbracecharliteral}% - \catcode`\\=\active \otherbackslash - \input \tocreadfilename - \endgroup - } - {\catcode`[=1 \catcode`]=2 - \catcode`{=\other \catcode`}=\other - \gdef\lbracecharliteral[{]% - \gdef\rbracecharliteral[}]% - ] - % - \def\skipspaces#1{\def\PP{#1}\def\D{|}% - \ifx\PP\D\let\nextsp\relax - \else\let\nextsp\skipspaces - \addtokens{\filename}{\PP}% - \advance\filenamelength by 1 - \fi - \nextsp} - \def\getfilename#1{% - \filenamelength=0 - % If we don't expand the argument now, \skipspaces will get - % snagged on things like "@value{foo}". - \edef\temp{#1}% - \expandafter\skipspaces\temp|\relax - } - \ifnum\pdftexversion < 14 - \let \startlink \pdfannotlink - \else - \let \startlink \pdfstartlink - \fi - % make a live url in pdf output. - \def\pdfurl#1{% - \begingroup - % it seems we really need yet another set of dummies; have not - % tried to figure out what each command should do in the context - % of @url. for now, just make @/ a no-op, that's the only one - % people have actually reported a problem with. - % - \normalturnoffactive - \def\@{@}% - \let\/=\empty - \makevalueexpandable - % do we want to go so far as to use \indexnofonts instead of just - % special-casing \var here? - \def\var##1{##1}% - % - \leavevmode\setcolor{\urlcolor}% - \startlink attr{/Border [0 0 0]}% - user{/Subtype /Link /A << /S /URI /URI (#1) >>}% - \endgroup} - \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}} - \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} - \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks} - \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}} - \def\maketoks{% - \expandafter\poptoks\the\toksA|ENDTOKS|\relax - \ifx\first0\adn0 - \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3 - \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6 - \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9 - \else - \ifnum0=\countA\else\makelink\fi - \ifx\first.\let\next=\done\else - \let\next=\maketoks - \addtokens{\toksB}{\the\toksD} - \ifx\first,\addtokens{\toksB}{\space}\fi - \fi - \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi - \next} - \def\makelink{\addtokens{\toksB}% - {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} - \def\pdflink#1{% - \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}} - \setcolor{\linkcolor}#1\endlink} - \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} -\else - % non-pdf mode - \let\pdfmkdest = \gobble - \let\pdfurl = \gobble - \let\endlink = \relax - \let\setcolor = \gobble - \let\pdfsetcolor = \gobble - \let\pdfmakeoutlines = \relax -\fi % \ifx\pdfoutput - -% -% For XeTeX -% -\ifx\XeTeXrevision\thisisundefined -\else - % - % XeTeX version check - % - \ifnum\strcmp{\the\XeTeXversion\XeTeXrevision}{0.99996}>-1 - % TeX Live 2016 contains XeTeX 0.99996 and xdvipdfmx 20160307. - % It can use the `dvipdfmx:config' special (from TeX Live SVN r40941). - % For avoiding PDF destination name replacement, we use this special - % instead of xdvipdfmx's command line option `-C 0x0010'. - \special{dvipdfmx:config C 0x0010} - % XeTeX 0.99995+ comes with xdvipdfmx 20160307+. - % It can handle Unicode destination names for PDF. - \txiuseunicodedestnametrue - \else - % XeTeX < 0.99996 (TeX Live < 2016) cannot use the - % `dvipdfmx:config' special. - % So for avoiding PDF destination name replacement, - % xdvipdfmx's command line option `-C 0x0010' is necessary. - % - % XeTeX < 0.99995 can not handle Unicode destination names for PDF - % because xdvipdfmx 20150315 has a UTF-16 conversion issue. - % It is fixed by xdvipdfmx 20160106 (TeX Live SVN r39753). - \txiuseunicodedestnamefalse - \fi - % - % Color support - % - \def\rgbDarkRed{0.50 0.09 0.12} - \def\rgbBlack{0 0 0} - % - \def\pdfsetcolor#1{\special{pdf:scolor [#1]}} - % - % Set color, and create a mark which defines \thiscolor accordingly, - % so that \makeheadline knows which color to restore. - \def\setcolor#1{% - \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}% - \domark - \pdfsetcolor{#1}% - } - % - \def\maincolor{\rgbBlack} - \pdfsetcolor{\maincolor} - \edef\thiscolor{\maincolor} - \def\lastcolordefs{} - % - \def\makefootline{% - \baselineskip24pt - \line{\pdfsetcolor{\maincolor}\the\footline}% - } - % - \def\makeheadline{% - \vbox to 0pt{% - \vskip-22.5pt - \line{% - \vbox to8.5pt{}% - % Extract \thiscolor definition from the marks. - \getcolormarks - % Typeset the headline with \maincolor, then restore the color. - \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}% - }% - \vss - }% - \nointerlineskip - } - % - % PDF outline support - % - % Emulate pdfTeX primitive - \def\pdfdest name#1 xyz{% - \special{pdf:dest (#1) [@thispage /XYZ @xpos @ypos null]}% - } - % - \def\setpdfdestname#1{{% - % We have to set dummies so commands such as @code, and characters - % such as \, aren't expanded when present in a section title. - \indexnofonts - \makevalueexpandable - \turnoffactive - \iftxiuseunicodedestname - % Pass through Unicode characters. - \else - % Use ASCII approximations in destination names. - \passthroughcharsfalse - \fi - \def\pdfdestname{#1}% - \txiescapepdf\pdfdestname - }} - % - \def\setpdfoutlinetext#1{{% - \turnoffactive - % Always use Unicode characters in title texts. - \def\pdfoutlinetext{#1}% - % For XeTeX, xdvipdfmx converts to UTF-16. - % So we do not convert. - \txiescapepdf\pdfoutlinetext - }} - % - \def\pdfmkdest#1{% - \setpdfdestname{#1}% - \safewhatsit{\pdfdest name{\pdfdestname} xyz}% - } - % - % by default, use black for everything. - \def\urlcolor{\rgbBlack} - \def\linkcolor{\rgbBlack} - \def\endlink{\setcolor{\maincolor}\pdfendlink} - % - \def\dopdfoutline#1#2#3#4{% - \setpdfoutlinetext{#1} - \setpdfdestname{#3} - \ifx\pdfdestname\empty - \def\pdfdestname{#4}% - \fi - % - \special{pdf:out [-] #2 << /Title (\pdfoutlinetext) /A - << /S /GoTo /D (\pdfdestname) >> >> }% - } - % - \def\pdfmakeoutlines{% - \begingroup - % - % For XeTeX, counts of subentries are not necessary. - % Therefore, we read toc only once. - % - % We use node names as destinations. - \def\partentry##1##2##3##4{}% ignore parts in the outlines - \def\numchapentry##1##2##3##4{% - \dopdfoutline{##1}{1}{##3}{##4}}% - \def\numsecentry##1##2##3##4{% - \dopdfoutline{##1}{2}{##3}{##4}}% - \def\numsubsecentry##1##2##3##4{% - \dopdfoutline{##1}{3}{##3}{##4}}% - \def\numsubsubsecentry##1##2##3##4{% - \dopdfoutline{##1}{4}{##3}{##4}}% - % - \let\appentry\numchapentry% - \let\appsecentry\numsecentry% - \let\appsubsecentry\numsubsecentry% - \let\appsubsubsecentry\numsubsubsecentry% - \let\unnchapentry\numchapentry% - \let\unnsecentry\numsecentry% - \let\unnsubsecentry\numsubsecentry% - \let\unnsubsubsecentry\numsubsubsecentry% - % - % For XeTeX, xdvipdfmx converts strings to UTF-16. - % Therefore, the encoding and the language may not be considered. - % - \indexnofonts - \setupdatafile - % We can have normal brace characters in the PDF outlines, unlike - % Texinfo index files. So set that up. - \def\{{\lbracecharliteral}% - \def\}{\rbracecharliteral}% - \catcode`\\=\active \otherbackslash - \input \tocreadfilename - \endgroup - } - {\catcode`[=1 \catcode`]=2 - \catcode`{=\other \catcode`}=\other - \gdef\lbracecharliteral[{]% - \gdef\rbracecharliteral[}]% - ] - - \special{pdf:docview << /PageMode /UseOutlines >> } - % ``\special{pdf:tounicode ...}'' is not necessary - % because xdvipdfmx converts strings from UTF-8 to UTF-16 without it. - % However, due to a UTF-16 conversion issue of xdvipdfmx 20150315, - % ``\special{pdf:dest ...}'' cannot handle non-ASCII strings. - % It is fixed by xdvipdfmx 20160106 (TeX Live SVN r39753). -% - \def\skipspaces#1{\def\PP{#1}\def\D{|}% - \ifx\PP\D\let\nextsp\relax - \else\let\nextsp\skipspaces - \addtokens{\filename}{\PP}% - \advance\filenamelength by 1 - \fi - \nextsp} - \def\getfilename#1{% - \filenamelength=0 - % If we don't expand the argument now, \skipspaces will get - % snagged on things like "@value{foo}". - \edef\temp{#1}% - \expandafter\skipspaces\temp|\relax - } - % make a live url in pdf output. - \def\pdfurl#1{% - \begingroup - % it seems we really need yet another set of dummies; have not - % tried to figure out what each command should do in the context - % of @url. for now, just make @/ a no-op, that's the only one - % people have actually reported a problem with. - % - \normalturnoffactive - \def\@{@}% - \let\/=\empty - \makevalueexpandable - % do we want to go so far as to use \indexnofonts instead of just - % special-casing \var here? - \def\var##1{##1}% - % - \leavevmode\setcolor{\urlcolor}% - \special{pdf:bann << /Border [0 0 0] - /Subtype /Link /A << /S /URI /URI (#1) >> >>}% - \endgroup} - \def\endlink{\setcolor{\maincolor}\special{pdf:eann}} - \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}} - \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} - \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks} - \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}} - \def\maketoks{% - \expandafter\poptoks\the\toksA|ENDTOKS|\relax - \ifx\first0\adn0 - \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3 - \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6 - \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9 - \else - \ifnum0=\countA\else\makelink\fi - \ifx\first.\let\next=\done\else - \let\next=\maketoks - \addtokens{\toksB}{\the\toksD} - \ifx\first,\addtokens{\toksB}{\space}\fi - \fi - \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi - \next} - \def\makelink{\addtokens{\toksB}% - {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} - \def\pdflink#1{% - \special{pdf:bann << /Border [0 0 0] - /Type /Annot /Subtype /Link /A << /S /GoTo /D (#1) >> >>}% - \setcolor{\linkcolor}#1\endlink} - \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} -% - % - % @image support - % - % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto). - \def\doxeteximage#1#2#3{% - \def\xeteximagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}% - \def\xeteximageheight{#3}\setbox2 = \hbox{\ignorespaces #3}% - % - % XeTeX (and the PDF format) supports .pdf, .png, .jpg (among - % others). Let's try in that order, PDF first since if - % someone has a scalable image, presumably better to use that than a - % bitmap. - \let\xeteximgext=\empty - \begingroup - \openin 1 #1.pdf \ifeof 1 - \openin 1 #1.PDF \ifeof 1 - \openin 1 #1.png \ifeof 1 - \openin 1 #1.jpg \ifeof 1 - \openin 1 #1.jpeg \ifeof 1 - \openin 1 #1.JPG \ifeof 1 - \errmessage{Could not find image file #1 for XeTeX}% - \else \gdef\xeteximgext{JPG}% - \fi - \else \gdef\xeteximgext{jpeg}% - \fi - \else \gdef\xeteximgext{jpg}% - \fi - \else \gdef\xeteximgext{png}% - \fi - \else \gdef\xeteximgext{PDF}% - \fi - \else \gdef\xeteximgext{pdf}% - \fi - \closein 1 - \endgroup - % - \def\xetexpdfext{pdf}% - \ifx\xeteximgext\xetexpdfext - \XeTeXpdffile "#1".\xeteximgext "" - \else - \def\xetexpdfext{PDF}% - \ifx\xeteximgext\xetexpdfext - \XeTeXpdffile "#1".\xeteximgext "" - \else - \XeTeXpicfile "#1".\xeteximgext "" - \fi - \fi - \ifdim \wd0 >0pt width \xeteximagewidth \fi - \ifdim \wd2 >0pt height \xeteximageheight \fi \relax - } -\fi - - -% -\message{fonts,} - -% Set the baselineskip to #1, and the lineskip and strut size -% correspondingly. There is no deep meaning behind these magic numbers -% used as factors; they just match (closely enough) what Knuth defined. -% -\def\lineskipfactor{.08333} -\def\strutheightpercent{.70833} -\def\strutdepthpercent {.29167} -% -% can get a sort of poor man's double spacing by redefining this. -\def\baselinefactor{1} -% -\newdimen\textleading -\def\setleading#1{% - \dimen0 = #1\relax - \normalbaselineskip = \baselinefactor\dimen0 - \normallineskip = \lineskipfactor\normalbaselineskip - \normalbaselines - \setbox\strutbox =\hbox{% - \vrule width0pt height\strutheightpercent\baselineskip - depth \strutdepthpercent \baselineskip - }% -} - -% PDF CMaps. See also LaTeX's t1.cmap. -% -% do nothing with this by default. -\expandafter\let\csname cmapOT1\endcsname\gobble -\expandafter\let\csname cmapOT1IT\endcsname\gobble -\expandafter\let\csname cmapOT1TT\endcsname\gobble - -% if we are producing pdf, and we have \pdffontattr, then define cmaps. -% (\pdffontattr was introduced many years ago, but people still run -% older pdftex's; it's easy to conditionalize, so we do.) -\ifpdf \ifx\pdffontattr\thisisundefined \else - \begingroup - \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. - \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap -%%DocumentNeededResources: ProcSet (CIDInit) -%%IncludeResource: ProcSet (CIDInit) -%%BeginResource: CMap (TeX-OT1-0) -%%Title: (TeX-OT1-0 TeX OT1 0) -%%Version: 1.000 -%%EndComments -/CIDInit /ProcSet findresource begin -12 dict begin -begincmap -/CIDSystemInfo -<< /Registry (TeX) -/Ordering (OT1) -/Supplement 0 ->> def -/CMapName /TeX-OT1-0 def -/CMapType 2 def -1 begincodespacerange -<00> <7F> -endcodespacerange -8 beginbfrange -<00> <01> <0393> -<09> <0A> <03A8> -<23> <26> <0023> -<28> <3B> <0028> -<3F> <5B> <003F> -<5D> <5E> <005D> -<61> <7A> <0061> -<7B> <7C> <2013> -endbfrange -40 beginbfchar -<02> <0398> -<03> <039B> -<04> <039E> -<05> <03A0> -<06> <03A3> -<07> <03D2> -<08> <03A6> -<0B> <00660066> -<0C> <00660069> -<0D> <0066006C> -<0E> <006600660069> -<0F> <00660066006C> -<10> <0131> -<11> <0237> -<12> <0060> -<13> <00B4> -<14> <02C7> -<15> <02D8> -<16> <00AF> -<17> <02DA> -<18> <00B8> -<19> <00DF> -<1A> <00E6> -<1B> <0153> -<1C> <00F8> -<1D> <00C6> -<1E> <0152> -<1F> <00D8> -<21> <0021> -<22> <201D> -<27> <2019> -<3C> <00A1> -<3D> <003D> -<3E> <00BF> -<5C> <201C> -<5F> <02D9> -<60> <2018> -<7D> <02DD> -<7E> <007E> -<7F> <00A8> -endbfchar -endcmap -CMapName currentdict /CMap defineresource pop -end -end -%%EndResource -%%EOF - }\endgroup - \expandafter\edef\csname cmapOT1\endcsname#1{% - \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% - }% -% -% \cmapOT1IT - \begingroup - \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. - \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap -%%DocumentNeededResources: ProcSet (CIDInit) -%%IncludeResource: ProcSet (CIDInit) -%%BeginResource: CMap (TeX-OT1IT-0) -%%Title: (TeX-OT1IT-0 TeX OT1IT 0) -%%Version: 1.000 -%%EndComments -/CIDInit /ProcSet findresource begin -12 dict begin -begincmap -/CIDSystemInfo -<< /Registry (TeX) -/Ordering (OT1IT) -/Supplement 0 ->> def -/CMapName /TeX-OT1IT-0 def -/CMapType 2 def -1 begincodespacerange -<00> <7F> -endcodespacerange -8 beginbfrange -<00> <01> <0393> -<09> <0A> <03A8> -<25> <26> <0025> -<28> <3B> <0028> -<3F> <5B> <003F> -<5D> <5E> <005D> -<61> <7A> <0061> -<7B> <7C> <2013> -endbfrange -42 beginbfchar -<02> <0398> -<03> <039B> -<04> <039E> -<05> <03A0> -<06> <03A3> -<07> <03D2> -<08> <03A6> -<0B> <00660066> -<0C> <00660069> -<0D> <0066006C> -<0E> <006600660069> -<0F> <00660066006C> -<10> <0131> -<11> <0237> -<12> <0060> -<13> <00B4> -<14> <02C7> -<15> <02D8> -<16> <00AF> -<17> <02DA> -<18> <00B8> -<19> <00DF> -<1A> <00E6> -<1B> <0153> -<1C> <00F8> -<1D> <00C6> -<1E> <0152> -<1F> <00D8> -<21> <0021> -<22> <201D> -<23> <0023> -<24> <00A3> -<27> <2019> -<3C> <00A1> -<3D> <003D> -<3E> <00BF> -<5C> <201C> -<5F> <02D9> -<60> <2018> -<7D> <02DD> -<7E> <007E> -<7F> <00A8> -endbfchar -endcmap -CMapName currentdict /CMap defineresource pop -end -end -%%EndResource -%%EOF - }\endgroup - \expandafter\edef\csname cmapOT1IT\endcsname#1{% - \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% - }% -% -% \cmapOT1TT - \begingroup - \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. - \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap -%%DocumentNeededResources: ProcSet (CIDInit) -%%IncludeResource: ProcSet (CIDInit) -%%BeginResource: CMap (TeX-OT1TT-0) -%%Title: (TeX-OT1TT-0 TeX OT1TT 0) -%%Version: 1.000 -%%EndComments -/CIDInit /ProcSet findresource begin -12 dict begin -begincmap -/CIDSystemInfo -<< /Registry (TeX) -/Ordering (OT1TT) -/Supplement 0 ->> def -/CMapName /TeX-OT1TT-0 def -/CMapType 2 def -1 begincodespacerange -<00> <7F> -endcodespacerange -5 beginbfrange -<00> <01> <0393> -<09> <0A> <03A8> -<21> <26> <0021> -<28> <5F> <0028> -<61> <7E> <0061> -endbfrange -32 beginbfchar -<02> <0398> -<03> <039B> -<04> <039E> -<05> <03A0> -<06> <03A3> -<07> <03D2> -<08> <03A6> -<0B> <2191> -<0C> <2193> -<0D> <0027> -<0E> <00A1> -<0F> <00BF> -<10> <0131> -<11> <0237> -<12> <0060> -<13> <00B4> -<14> <02C7> -<15> <02D8> -<16> <00AF> -<17> <02DA> -<18> <00B8> -<19> <00DF> -<1A> <00E6> -<1B> <0153> -<1C> <00F8> -<1D> <00C6> -<1E> <0152> -<1F> <00D8> -<20> <2423> -<27> <2019> -<60> <2018> -<7F> <00A8> -endbfchar -endcmap -CMapName currentdict /CMap defineresource pop -end -end -%%EndResource -%%EOF - }\endgroup - \expandafter\edef\csname cmapOT1TT\endcsname#1{% - \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% - }% -\fi\fi - - -% Set the font macro #1 to the font named \fontprefix#2. -% #3 is the font's design size, #4 is a scale factor, #5 is the CMap -% encoding (only OT1, OT1IT and OT1TT are allowed, or empty to omit). -% Example: -% #1 = \textrm -% #2 = \rmshape -% #3 = 10 -% #4 = \mainmagstep -% #5 = OT1 -% -\def\setfont#1#2#3#4#5{% - \font#1=\fontprefix#2#3 scaled #4 - \csname cmap#5\endcsname#1% -} -% This is what gets called when #5 of \setfont is empty. -\let\cmap\gobble -% -% (end of cmaps) - -% Use cm as the default font prefix. -% To specify the font prefix, you must define \fontprefix -% before you read in texinfo.tex. -\ifx\fontprefix\thisisundefined -\def\fontprefix{cm} -\fi -% Support font families that don't use the same naming scheme as CM. -\def\rmshape{r} -\def\rmbshape{bx} % where the normal face is bold -\def\bfshape{b} -\def\bxshape{bx} -\def\ttshape{tt} -\def\ttbshape{tt} -\def\ttslshape{sltt} -\def\itshape{ti} -\def\itbshape{bxti} -\def\slshape{sl} -\def\slbshape{bxsl} -\def\sfshape{ss} -\def\sfbshape{ss} -\def\scshape{csc} -\def\scbshape{csc} - -% Definitions for a main text size of 11pt. (The default in Texinfo.) -% -\def\definetextfontsizexi{% -% Text fonts (11.2pt, magstep1). -\def\textnominalsize{11pt} -\edef\mainmagstep{\magstephalf} -\setfont\textrm\rmshape{10}{\mainmagstep}{OT1} -\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} -\setfont\textbf\bfshape{10}{\mainmagstep}{OT1} -\setfont\textit\itshape{10}{\mainmagstep}{OT1IT} -\setfont\textsl\slshape{10}{\mainmagstep}{OT1} -\setfont\textsf\sfshape{10}{\mainmagstep}{OT1} -\setfont\textsc\scshape{10}{\mainmagstep}{OT1} -\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} -\font\texti=cmmi10 scaled \mainmagstep -\font\textsy=cmsy10 scaled \mainmagstep -\def\textecsize{1095} - -% A few fonts for @defun names and args. -\setfont\defbf\bfshape{10}{\magstep1}{OT1} -\setfont\deftt\ttshape{10}{\magstep1}{OT1TT} -\setfont\defsl\slshape{10}{\magstep1}{OT1TT} -\setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT} -\def\df{\let\ttfont=\deftt \let\bffont = \defbf -\let\ttslfont=\defttsl \let\slfont=\defsl \bf} - -% Fonts for indices, footnotes, small examples (9pt). -\def\smallnominalsize{9pt} -\setfont\smallrm\rmshape{9}{1000}{OT1} -\setfont\smalltt\ttshape{9}{1000}{OT1TT} -\setfont\smallbf\bfshape{10}{900}{OT1} -\setfont\smallit\itshape{9}{1000}{OT1IT} -\setfont\smallsl\slshape{9}{1000}{OT1} -\setfont\smallsf\sfshape{9}{1000}{OT1} -\setfont\smallsc\scshape{10}{900}{OT1} -\setfont\smallttsl\ttslshape{10}{900}{OT1TT} -\font\smalli=cmmi9 -\font\smallsy=cmsy9 -\def\smallecsize{0900} - -% Fonts for small examples (8pt). -\def\smallernominalsize{8pt} -\setfont\smallerrm\rmshape{8}{1000}{OT1} -\setfont\smallertt\ttshape{8}{1000}{OT1TT} -\setfont\smallerbf\bfshape{10}{800}{OT1} -\setfont\smallerit\itshape{8}{1000}{OT1IT} -\setfont\smallersl\slshape{8}{1000}{OT1} -\setfont\smallersf\sfshape{8}{1000}{OT1} -\setfont\smallersc\scshape{10}{800}{OT1} -\setfont\smallerttsl\ttslshape{10}{800}{OT1TT} -\font\smalleri=cmmi8 -\font\smallersy=cmsy8 -\def\smallerecsize{0800} - -% Fonts for math mode superscripts (7pt). -\def\sevennominalsize{7pt} -\setfont\sevenrm\rmshape{7}{1000}{OT1} -\setfont\seventt\ttshape{10}{700}{OT1TT} -\setfont\sevenbf\bfshape{10}{700}{OT1} -\setfont\sevenit\itshape{7}{1000}{OT1IT} -\setfont\sevensl\slshape{10}{700}{OT1} -\setfont\sevensf\sfshape{10}{700}{OT1} -\setfont\sevensc\scshape{10}{700}{OT1} -\setfont\seventtsl\ttslshape{10}{700}{OT1TT} -\font\seveni=cmmi7 -\font\sevensy=cmsy7 -\def\sevenecsize{0700} - -% Fonts for title page (20.4pt): -\def\titlenominalsize{20pt} -\setfont\titlerm\rmbshape{12}{\magstep3}{OT1} -\setfont\titleit\itbshape{10}{\magstep4}{OT1IT} -\setfont\titlesl\slbshape{10}{\magstep4}{OT1} -\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} -\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} -\setfont\titlesf\sfbshape{17}{\magstep1}{OT1} -\let\titlebf=\titlerm -\setfont\titlesc\scbshape{10}{\magstep4}{OT1} -\font\titlei=cmmi12 scaled \magstep3 -\font\titlesy=cmsy10 scaled \magstep4 -\def\titleecsize{2074} - -% Chapter (and unnumbered) fonts (17.28pt). -\def\chapnominalsize{17pt} -\setfont\chaprm\rmbshape{12}{\magstep2}{OT1} -\setfont\chapit\itbshape{10}{\magstep3}{OT1IT} -\setfont\chapsl\slbshape{10}{\magstep3}{OT1} -\setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT} -\setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT} -\setfont\chapsf\sfbshape{17}{1000}{OT1} -\let\chapbf=\chaprm -\setfont\chapsc\scbshape{10}{\magstep3}{OT1} -\font\chapi=cmmi12 scaled \magstep2 -\font\chapsy=cmsy10 scaled \magstep3 -\def\chapecsize{1728} - -% Section fonts (14.4pt). -\def\secnominalsize{14pt} -\setfont\secrm\rmbshape{12}{\magstep1}{OT1} -\setfont\secrmnotbold\rmshape{12}{\magstep1}{OT1} -\setfont\secit\itbshape{10}{\magstep2}{OT1IT} -\setfont\secsl\slbshape{10}{\magstep2}{OT1} -\setfont\sectt\ttbshape{12}{\magstep1}{OT1TT} -\setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT} -\setfont\secsf\sfbshape{12}{\magstep1}{OT1} -\let\secbf\secrm -\setfont\secsc\scbshape{10}{\magstep2}{OT1} -\font\seci=cmmi12 scaled \magstep1 -\font\secsy=cmsy10 scaled \magstep2 -\def\sececsize{1440} - -% Subsection fonts (13.15pt). -\def\ssecnominalsize{13pt} -\setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1} -\setfont\ssecit\itbshape{10}{1315}{OT1IT} -\setfont\ssecsl\slbshape{10}{1315}{OT1} -\setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT} -\setfont\ssecttsl\ttslshape{10}{1315}{OT1TT} -\setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1} -\let\ssecbf\ssecrm -\setfont\ssecsc\scbshape{10}{1315}{OT1} -\font\sseci=cmmi12 scaled \magstephalf -\font\ssecsy=cmsy10 scaled 1315 -\def\ssececsize{1200} - -% Reduced fonts for @acronym in text (10pt). -\def\reducednominalsize{10pt} -\setfont\reducedrm\rmshape{10}{1000}{OT1} -\setfont\reducedtt\ttshape{10}{1000}{OT1TT} -\setfont\reducedbf\bfshape{10}{1000}{OT1} -\setfont\reducedit\itshape{10}{1000}{OT1IT} -\setfont\reducedsl\slshape{10}{1000}{OT1} -\setfont\reducedsf\sfshape{10}{1000}{OT1} -\setfont\reducedsc\scshape{10}{1000}{OT1} -\setfont\reducedttsl\ttslshape{10}{1000}{OT1TT} -\font\reducedi=cmmi10 -\font\reducedsy=cmsy10 -\def\reducedecsize{1000} - -\textleading = 13.2pt % line spacing for 11pt CM -\textfonts % reset the current fonts -\rm -} % end of 11pt text font size definitions, \definetextfontsizexi - - -% Definitions to make the main text be 10pt Computer Modern, with -% section, chapter, etc., sizes following suit. This is for the GNU -% Press printing of the Emacs 22 manual. Maybe other manuals in the -% future. Used with @smallbook, which sets the leading to 12pt. -% -\def\definetextfontsizex{% -% Text fonts (10pt). -\def\textnominalsize{10pt} -\edef\mainmagstep{1000} -\setfont\textrm\rmshape{10}{\mainmagstep}{OT1} -\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} -\setfont\textbf\bfshape{10}{\mainmagstep}{OT1} -\setfont\textit\itshape{10}{\mainmagstep}{OT1IT} -\setfont\textsl\slshape{10}{\mainmagstep}{OT1} -\setfont\textsf\sfshape{10}{\mainmagstep}{OT1} -\setfont\textsc\scshape{10}{\mainmagstep}{OT1} -\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} -\font\texti=cmmi10 scaled \mainmagstep -\font\textsy=cmsy10 scaled \mainmagstep -\def\textecsize{1000} - -% A few fonts for @defun names and args. -\setfont\defbf\bfshape{10}{\magstephalf}{OT1} -\setfont\deftt\ttshape{10}{\magstephalf}{OT1TT} -\setfont\defsl\slshape{10}{\magstephalf}{OT1TT} -\setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT} -\def\df{\let\ttfont=\deftt \let\bffont = \defbf -\let\slfont=\defsl \let\ttslfont=\defttsl \bf} - -% Fonts for indices, footnotes, small examples (9pt). -\def\smallnominalsize{9pt} -\setfont\smallrm\rmshape{9}{1000}{OT1} -\setfont\smalltt\ttshape{9}{1000}{OT1TT} -\setfont\smallbf\bfshape{10}{900}{OT1} -\setfont\smallit\itshape{9}{1000}{OT1IT} -\setfont\smallsl\slshape{9}{1000}{OT1} -\setfont\smallsf\sfshape{9}{1000}{OT1} -\setfont\smallsc\scshape{10}{900}{OT1} -\setfont\smallttsl\ttslshape{10}{900}{OT1TT} -\font\smalli=cmmi9 -\font\smallsy=cmsy9 -\def\smallecsize{0900} - -% Fonts for small examples (8pt). -\def\smallernominalsize{8pt} -\setfont\smallerrm\rmshape{8}{1000}{OT1} -\setfont\smallertt\ttshape{8}{1000}{OT1TT} -\setfont\smallerbf\bfshape{10}{800}{OT1} -\setfont\smallerit\itshape{8}{1000}{OT1IT} -\setfont\smallersl\slshape{8}{1000}{OT1} -\setfont\smallersf\sfshape{8}{1000}{OT1} -\setfont\smallersc\scshape{10}{800}{OT1} -\setfont\smallerttsl\ttslshape{10}{800}{OT1TT} -\font\smalleri=cmmi8 -\font\smallersy=cmsy8 -\def\smallerecsize{0800} - -% Fonts for math mode superscripts (7pt). -\def\sevennominalsize{7pt} -\setfont\sevenrm\rmshape{7}{1000}{OT1} -\setfont\seventt\ttshape{10}{700}{OT1TT} -\setfont\sevenbf\bfshape{10}{700}{OT1} -\setfont\sevenit\itshape{7}{1000}{OT1IT} -\setfont\sevensl\slshape{10}{700}{OT1} -\setfont\sevensf\sfshape{10}{700}{OT1} -\setfont\sevensc\scshape{10}{700}{OT1} -\setfont\seventtsl\ttslshape{10}{700}{OT1TT} -\font\seveni=cmmi7 -\font\sevensy=cmsy7 -\def\sevenecsize{0700} - -% Fonts for title page (20.4pt): -\def\titlenominalsize{20pt} -\setfont\titlerm\rmbshape{12}{\magstep3}{OT1} -\setfont\titleit\itbshape{10}{\magstep4}{OT1IT} -\setfont\titlesl\slbshape{10}{\magstep4}{OT1} -\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} -\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} -\setfont\titlesf\sfbshape{17}{\magstep1}{OT1} -\let\titlebf=\titlerm -\setfont\titlesc\scbshape{10}{\magstep4}{OT1} -\font\titlei=cmmi12 scaled \magstep3 -\font\titlesy=cmsy10 scaled \magstep4 -\def\titleecsize{2074} - -% Chapter fonts (14.4pt). -\def\chapnominalsize{14pt} -\setfont\chaprm\rmbshape{12}{\magstep1}{OT1} -\setfont\chapit\itbshape{10}{\magstep2}{OT1IT} -\setfont\chapsl\slbshape{10}{\magstep2}{OT1} -\setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT} -\setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT} -\setfont\chapsf\sfbshape{12}{\magstep1}{OT1} -\let\chapbf\chaprm -\setfont\chapsc\scbshape{10}{\magstep2}{OT1} -\font\chapi=cmmi12 scaled \magstep1 -\font\chapsy=cmsy10 scaled \magstep2 -\def\chapecsize{1440} - -% Section fonts (12pt). -\def\secnominalsize{12pt} -\setfont\secrm\rmbshape{12}{1000}{OT1} -\setfont\secit\itbshape{10}{\magstep1}{OT1IT} -\setfont\secsl\slbshape{10}{\magstep1}{OT1} -\setfont\sectt\ttbshape{12}{1000}{OT1TT} -\setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT} -\setfont\secsf\sfbshape{12}{1000}{OT1} -\let\secbf\secrm -\setfont\secsc\scbshape{10}{\magstep1}{OT1} -\font\seci=cmmi12 -\font\secsy=cmsy10 scaled \magstep1 -\def\sececsize{1200} - -% Subsection fonts (10pt). -\def\ssecnominalsize{10pt} -\setfont\ssecrm\rmbshape{10}{1000}{OT1} -\setfont\ssecit\itbshape{10}{1000}{OT1IT} -\setfont\ssecsl\slbshape{10}{1000}{OT1} -\setfont\ssectt\ttbshape{10}{1000}{OT1TT} -\setfont\ssecttsl\ttslshape{10}{1000}{OT1TT} -\setfont\ssecsf\sfbshape{10}{1000}{OT1} -\let\ssecbf\ssecrm -\setfont\ssecsc\scbshape{10}{1000}{OT1} -\font\sseci=cmmi10 -\font\ssecsy=cmsy10 -\def\ssececsize{1000} - -% Reduced fonts for @acronym in text (9pt). -\def\reducednominalsize{9pt} -\setfont\reducedrm\rmshape{9}{1000}{OT1} -\setfont\reducedtt\ttshape{9}{1000}{OT1TT} -\setfont\reducedbf\bfshape{10}{900}{OT1} -\setfont\reducedit\itshape{9}{1000}{OT1IT} -\setfont\reducedsl\slshape{9}{1000}{OT1} -\setfont\reducedsf\sfshape{9}{1000}{OT1} -\setfont\reducedsc\scshape{10}{900}{OT1} -\setfont\reducedttsl\ttslshape{10}{900}{OT1TT} -\font\reducedi=cmmi9 -\font\reducedsy=cmsy9 -\def\reducedecsize{0900} - -\divide\parskip by 2 % reduce space between paragraphs -\textleading = 12pt % line spacing for 10pt CM -\textfonts % reset the current fonts -\rm -} % end of 10pt text font size definitions, \definetextfontsizex - -% Fonts for short table of contents. -\setfont\shortcontrm\rmshape{12}{1000}{OT1} -\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1} % no cmb12 -\setfont\shortcontsl\slshape{12}{1000}{OT1} -\setfont\shortconttt\ttshape{12}{1000}{OT1TT} - - -% We provide the user-level command -% @fonttextsize 10 -% (or 11) to redefine the text font size. pt is assumed. -% -\def\xiword{11} -\def\xword{10} -\def\xwordpt{10pt} -% -\parseargdef\fonttextsize{% - \def\textsizearg{#1}% - %\wlog{doing @fonttextsize \textsizearg}% - % - % Set \globaldefs so that documents can use this inside @tex, since - % makeinfo 4.8 does not support it, but we need it nonetheless. - % - \begingroup \globaldefs=1 - \ifx\textsizearg\xword \definetextfontsizex - \else \ifx\textsizearg\xiword \definetextfontsizexi - \else - \errhelp=\EMsimple - \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'} - \fi\fi - \endgroup -} - -% -% Change the current font style to #1, remembering it in \curfontstyle. -% For now, we do not accumulate font styles: @b{@i{foo}} prints foo in -% italics, not bold italics. -% -\def\setfontstyle#1{% - \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd. - \csname #1font\endcsname % change the current font -} - -\def\rm{\fam=0 \setfontstyle{rm}} -\def\it{\fam=\itfam \setfontstyle{it}} -\def\sl{\fam=\slfam \setfontstyle{sl}} -\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf} -\def\tt{\fam=\ttfam \setfontstyle{tt}} - -% Texinfo sort of supports the sans serif font style, which plain TeX does not. -% So we set up a \sf. -\newfam\sffam -\def\sf{\fam=\sffam \setfontstyle{sf}} - -% We don't need math for this font style. -\def\ttsl{\setfontstyle{ttsl}} - - -% In order for the font changes to affect most math symbols and letters, -% we have to define the \textfont of the standard families. -% We don't bother to reset \scriptscriptfont; awaiting user need. -% -\def\resetmathfonts{% - \textfont0=\rmfont \textfont1=\ifont \textfont2=\syfont - \textfont\itfam=\itfont \textfont\slfam=\slfont \textfont\bffam=\bffont - \textfont\ttfam=\ttfont \textfont\sffam=\sffont - % - % Fonts for superscript. Note that the 7pt fonts are used regardless - % of the current font size. - \scriptfont0=\sevenrm \scriptfont1=\seveni \scriptfont2=\sevensy - \scriptfont\itfam=\sevenit \scriptfont\slfam=\sevensl - \scriptfont\bffam=\sevenbf \scriptfont\ttfam=\seventt - \scriptfont\sffam=\sevensf -} - -% - -% The font-changing commands (all called \...fonts) redefine the meanings -% of \STYLEfont, instead of just \STYLE. We do this because \STYLE needs -% to also set the current \fam for math mode. Our \STYLE (e.g., \rm) -% commands hardwire \STYLEfont to set the current font. -% -% The fonts used for \ifont are for "math italics" (\itfont is for italics -% in regular text). \syfont is also used in math mode only. -% -% Each font-changing command also sets the names \lsize (one size lower) -% and \lllsize (three sizes lower). These relative commands are used -% in, e.g., the LaTeX logo and acronyms. -% -% This all needs generalizing, badly. -% - -\def\assignfonts#1{% - \expandafter\let\expandafter\rmfont\csname #1rm\endcsname - \expandafter\let\expandafter\itfont\csname #1it\endcsname - \expandafter\let\expandafter\slfont\csname #1sl\endcsname - \expandafter\let\expandafter\bffont\csname #1bf\endcsname - \expandafter\let\expandafter\ttfont\csname #1tt\endcsname - \expandafter\let\expandafter\smallcaps\csname #1sc\endcsname - \expandafter\let\expandafter\sffont \csname #1sf\endcsname - \expandafter\let\expandafter\ifont \csname #1i\endcsname - \expandafter\let\expandafter\syfont \csname #1sy\endcsname - \expandafter\let\expandafter\ttslfont\csname #1ttsl\endcsname -} - -\newif\ifrmisbold - -% Select smaller font size with the current style. Used to change font size -% in, e.g., the LaTeX logo and acronyms. If we are using bold fonts for -% normal roman text, also use bold fonts for roman text in the smaller size. -\def\switchtolllsize{% - \expandafter\assignfonts\expandafter{\lllsize}% - \ifrmisbold - \let\rmfont\bffont - \fi - \csname\curfontstyle\endcsname -}% - -\def\switchtolsize{% - \expandafter\assignfonts\expandafter{\lsize}% - \ifrmisbold - \let\rmfont\bffont - \fi - \csname\curfontstyle\endcsname -}% - -\def\definefontsetatsize#1#2#3#4#5{% -\expandafter\def\csname #1fonts\endcsname{% - \def\curfontsize{#1}% - \def\lsize{#2}\def\lllsize{#3}% - \csname rmisbold#5\endcsname - \assignfonts{#1}% - \resetmathfonts - \setleading{#4}% -}} - -\definefontsetatsize{text} {reduced}{smaller}{\textleading}{false} -\definefontsetatsize{title} {chap} {subsec} {27pt} {true} -\definefontsetatsize{chap} {sec} {text} {19pt} {true} -\definefontsetatsize{sec} {subsec} {reduced}{17pt} {true} -\definefontsetatsize{ssec} {text} {small} {15pt} {true} -\definefontsetatsize{reduced}{small} {smaller}{10.5pt}{false} -\definefontsetatsize{small} {smaller}{smaller}{10.5pt}{false} -\definefontsetatsize{smaller}{smaller}{smaller}{9.5pt} {false} - -\def\titlefont#1{{\titlefonts\rm #1}} -\let\subsecfonts = \ssecfonts -\let\subsubsecfonts = \ssecfonts - -% Define these just so they can be easily changed for other fonts. -\def\angleleft{$\langle$} -\def\angleright{$\rangle$} - -% Set the fonts to use with the @small... environments. -\let\smallexamplefonts = \smallfonts - -% About \smallexamplefonts. If we use \smallfonts (9pt), @smallexample -% can fit this many characters: -% 8.5x11=86 smallbook=72 a4=90 a5=69 -% If we use \scriptfonts (8pt), then we can fit this many characters: -% 8.5x11=90+ smallbook=80 a4=90+ a5=77 -% For me, subjectively, the few extra characters that fit aren't worth -% the additional smallness of 8pt. So I'm making the default 9pt. -% -% By the way, for comparison, here's what fits with @example (10pt): -% 8.5x11=71 smallbook=60 a4=75 a5=58 -% --karl, 24jan03. - -% Set up the default fonts, so we can use them for creating boxes. -% -\definetextfontsizexi - - -\message{markup,} - -% Check if we are currently using a typewriter font. Since all the -% Computer Modern typewriter fonts have zero interword stretch (and -% shrink), and it is reasonable to expect all typewriter fonts to have -% this property, we can check that font parameter. -% -\def\ifmonospace{\ifdim\fontdimen3\font=0pt } - -% Markup style infrastructure. \defmarkupstylesetup\INITMACRO will -% define and register \INITMACRO to be called on markup style changes. -% \INITMACRO can check \currentmarkupstyle for the innermost -% style. - -\let\currentmarkupstyle\empty - -\def\setupmarkupstyle#1{% - \def\currentmarkupstyle{#1}% - \markupstylesetup -} - -\let\markupstylesetup\empty - -\def\defmarkupstylesetup#1{% - \expandafter\def\expandafter\markupstylesetup - \expandafter{\markupstylesetup #1}% - \def#1% -} - -% Markup style setup for left and right quotes. -\defmarkupstylesetup\markupsetuplq{% - \expandafter\let\expandafter \temp - \csname markupsetuplq\currentmarkupstyle\endcsname - \ifx\temp\relax \markupsetuplqdefault \else \temp \fi -} - -\defmarkupstylesetup\markupsetuprq{% - \expandafter\let\expandafter \temp - \csname markupsetuprq\currentmarkupstyle\endcsname - \ifx\temp\relax \markupsetuprqdefault \else \temp \fi -} - -{ -\catcode`\'=\active -\catcode`\`=\active - -\gdef\markupsetuplqdefault{\let`\lq} -\gdef\markupsetuprqdefault{\let'\rq} - -\gdef\markupsetcodequoteleft{\let`\codequoteleft} -\gdef\markupsetcodequoteright{\let'\codequoteright} -} - -\let\markupsetuplqcode \markupsetcodequoteleft -\let\markupsetuprqcode \markupsetcodequoteright -% -\let\markupsetuplqexample \markupsetcodequoteleft -\let\markupsetuprqexample \markupsetcodequoteright -% -\let\markupsetuplqkbd \markupsetcodequoteleft -\let\markupsetuprqkbd \markupsetcodequoteright -% -\let\markupsetuplqsamp \markupsetcodequoteleft -\let\markupsetuprqsamp \markupsetcodequoteright -% -\let\markupsetuplqverb \markupsetcodequoteleft -\let\markupsetuprqverb \markupsetcodequoteright -% -\let\markupsetuplqverbatim \markupsetcodequoteleft -\let\markupsetuprqverbatim \markupsetcodequoteright - -% Allow an option to not use regular directed right quote/apostrophe -% (char 0x27), but instead the undirected quote from cmtt (char 0x0d). -% The undirected quote is ugly, so don't make it the default, but it -% works for pasting with more pdf viewers (at least evince), the -% lilypond developers report. xpdf does work with the regular 0x27. -% -\def\codequoteright{% - \ifmonospace - \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax - \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax - '% - \else \char'15 \fi - \else \char'15 \fi - \else - '% - \fi -} -% -% and a similar option for the left quote char vs. a grave accent. -% Modern fonts display ASCII 0x60 as a grave accent, so some people like -% the code environments to do likewise. -% -\def\codequoteleft{% - \ifmonospace - \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax - \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax - % [Knuth] pp. 380,381,391 - % \relax disables Spanish ligatures ?` and !` of \tt font. - \relax`% - \else \char'22 \fi - \else \char'22 \fi - \else - \relax`% - \fi -} - -% Commands to set the quote options. -% -\parseargdef\codequoteundirected{% - \def\temp{#1}% - \ifx\temp\onword - \expandafter\let\csname SETtxicodequoteundirected\endcsname - = t% - \else\ifx\temp\offword - \expandafter\let\csname SETtxicodequoteundirected\endcsname - = \relax - \else - \errhelp = \EMsimple - \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}% - \fi\fi -} -% -\parseargdef\codequotebacktick{% - \def\temp{#1}% - \ifx\temp\onword - \expandafter\let\csname SETtxicodequotebacktick\endcsname - = t% - \else\ifx\temp\offword - \expandafter\let\csname SETtxicodequotebacktick\endcsname - = \relax - \else - \errhelp = \EMsimple - \errmessage{Unknown @codequotebacktick value `\temp', must be on|off}% - \fi\fi -} - -% [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font. -\def\noligaturesquoteleft{\relax\lq} - -% Count depth in font-changes, for error checks -\newcount\fontdepth \fontdepth=0 - -% Font commands. - -% #1 is the font command (\sl or \it), #2 is the text to slant. -% If we are in a monospaced environment, however, 1) always use \ttsl, -% and 2) do not add an italic correction. -\def\dosmartslant#1#2{% - \ifusingtt - {{\ttsl #2}\let\next=\relax}% - {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}% - \next -} -\def\smartslanted{\dosmartslant\sl} -\def\smartitalic{\dosmartslant\it} - -% Output an italic correction unless \next (presumed to be the following -% character) is such as not to need one. -\def\smartitaliccorrection{% - \ifx\next,% - \else\ifx\next-% - \else\ifx\next.% - \else\ifx\next\.% - \else\ifx\next\comma% - \else\ptexslash - \fi\fi\fi\fi\fi - \aftersmartic -} - -% Unconditional use \ttsl, and no ic. @var is set to this for defuns. -\def\ttslanted#1{{\ttsl #1}} - -% @cite is like \smartslanted except unconditionally use \sl. We never want -% ttsl for book titles, do we? -\def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection} - -\def\aftersmartic{} -\def\var#1{% - \let\saveaftersmartic = \aftersmartic - \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}% - \smartslanted{#1}% -} - -\let\i=\smartitalic -\let\slanted=\smartslanted -\let\dfn=\smartslanted -\let\emph=\smartitalic - -% Explicit font changes: @r, @sc, undocumented @ii. -\def\r#1{{\rm #1}} % roman font -\def\sc#1{{\smallcaps#1}} % smallcaps font -\def\ii#1{{\it #1}} % italic font - -% @b, explicit bold. Also @strong. -\def\b#1{{\bf #1}} -\let\strong=\b - -% @sansserif, explicit sans. -\def\sansserif#1{{\sf #1}} - -% We can't just use \exhyphenpenalty, because that only has effect at -% the end of a paragraph. Restore normal hyphenation at the end of the -% group within which \nohyphenation is presumably called. -% -\def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation} -\def\restorehyphenation{\hyphenchar\font = `- } - -% Set sfcode to normal for the chars that usually have another value. -% Can't use plain's \frenchspacing because it uses the `\x notation, and -% sometimes \x has an active definition that messes things up. -% -\catcode`@=11 - \def\plainfrenchspacing{% - \sfcode`\.=\@m \sfcode`\?=\@m \sfcode`\!=\@m - \sfcode`\:=\@m \sfcode`\;=\@m \sfcode`\,=\@m - \def\endofsentencespacefactor{1000}% for @. and friends - } - \def\plainnonfrenchspacing{% - \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000 - \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250 - \def\endofsentencespacefactor{3000}% for @. and friends - } -\catcode`@=\other -\def\endofsentencespacefactor{3000}% default - -% @t, explicit typewriter. -\def\t#1{% - {\tt \rawbackslash \plainfrenchspacing #1}% - \null -} - -% @samp. -\def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}} - -% @indicateurl is \samp, that is, with quotes. -\let\indicateurl=\samp - -% @code (and similar) prints in typewriter, but with spaces the same -% size as normal in the surrounding text, without hyphenation, etc. -% This is a subroutine for that. -\def\tclose#1{% - {% - % Change normal interword space to be same as for the current font. - \spaceskip = \fontdimen2\font - % - % Switch to typewriter. - \tt - % - % But `\ ' produces the large typewriter interword space. - \def\ {{\spaceskip = 0pt{} }}% - % - % Turn off hyphenation. - \nohyphenation - % - \rawbackslash - \plainfrenchspacing - #1% - }% - \null % reset spacefactor to 1000 -} - -% We *must* turn on hyphenation at `-' and `_' in @code. -% (But see \codedashfinish below.) -% Otherwise, it is too hard to avoid overfull hboxes -% in the Emacs manual, the Library manual, etc. -% -% Unfortunately, TeX uses one parameter (\hyphenchar) to control -% both hyphenation at - and hyphenation within words. -% We must therefore turn them both off (\tclose does that) -% and arrange explicitly to hyphenate at a dash. -- rms. -{ - \catcode`\-=\active \catcode`\_=\active - \catcode`\'=\active \catcode`\`=\active - \global\let'=\rq \global\let`=\lq % default definitions - % - \global\def\code{\begingroup - \setupmarkupstyle{code}% - % The following should really be moved into \setupmarkupstyle handlers. - \catcode\dashChar=\active \catcode\underChar=\active - \ifallowcodebreaks - \let-\codedash - \let_\codeunder - \else - \let-\normaldash - \let_\realunder - \fi - % Given -foo (with a single dash), we do not want to allow a break - % after the hyphen. - \global\let\codedashprev=\codedash - % - \codex - } - % - \gdef\codedash{\futurelet\next\codedashfinish} - \gdef\codedashfinish{% - \normaldash % always output the dash character itself. - % - % Now, output a discretionary to allow a line break, unless - % (a) the next character is a -, or - % (b) the preceding character is a -. - % E.g., given --posix, we do not want to allow a break after either -. - % Given --foo-bar, we do want to allow a break between the - and the b. - \ifx\next\codedash \else - \ifx\codedashprev\codedash - \else \discretionary{}{}{}\fi - \fi - % we need the space after the = for the case when \next itself is a - % space token; it would get swallowed otherwise. As in @code{- a}. - \global\let\codedashprev= \next - } -} -\def\normaldash{-} -% -\def\codex #1{\tclose{#1}\endgroup} - -\def\codeunder{% - % this is all so @math{@code{var_name}+1} can work. In math mode, _ - % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.) - % will therefore expand the active definition of _, which is us - % (inside @code that is), therefore an endless loop. - \ifusingtt{\ifmmode - \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_. - \else\normalunderscore \fi - \discretionary{}{}{}}% - {\_}% -} - -% An additional complication: the above will allow breaks after, e.g., -% each of the four underscores in __typeof__. This is bad. -% @allowcodebreaks provides a document-level way to turn breaking at - -% and _ on and off. -% -\newif\ifallowcodebreaks \allowcodebreakstrue - -\def\keywordtrue{true} -\def\keywordfalse{false} - -\parseargdef\allowcodebreaks{% - \def\txiarg{#1}% - \ifx\txiarg\keywordtrue - \allowcodebreakstrue - \else\ifx\txiarg\keywordfalse - \allowcodebreaksfalse - \else - \errhelp = \EMsimple - \errmessage{Unknown @allowcodebreaks option `\txiarg', must be true|false}% - \fi\fi -} - -% For @command, @env, @file, @option quotes seem unnecessary, -% so use \code rather than \samp. -\let\command=\code -\let\env=\code -\let\file=\code -\let\option=\code - -% @uref (abbreviation for `urlref') aka @url takes an optional -% (comma-separated) second argument specifying the text to display and -% an optional third arg as text to display instead of (rather than in -% addition to) the url itself. First (mandatory) arg is the url. - -% TeX-only option to allow changing PDF output to show only the second -% arg (if given), and not the url (which is then just the link target). -\newif\ifurefurlonlylink - -% The main macro is \urefbreak, which allows breaking at expected -% places within the url. (There used to be another version, which -% didn't support automatic breaking.) -\def\urefbreak{\begingroup \urefcatcodes \dourefbreak} -\let\uref=\urefbreak -% -\def\dourefbreak#1{\urefbreakfinish #1,,,\finish} -\def\urefbreakfinish#1,#2,#3,#4\finish{% doesn't work in @example - \unsepspaces - \pdfurl{#1}% - \setbox0 = \hbox{\ignorespaces #3}% - \ifdim\wd0 > 0pt - \unhbox0 % third arg given, show only that - \else - \setbox0 = \hbox{\ignorespaces #2}% look for second arg - \ifdim\wd0 > 0pt - \ifpdf - % For pdfTeX and LuaTeX - \ifurefurlonlylink - % PDF plus option to not display url, show just arg - \unhbox0 - \else - % PDF, normally display both arg and url for consistency, - % visibility, if the pdf is eventually used to print, etc. - \unhbox0\ (\urefcode{#1})% - \fi - \else - \ifx\XeTeXrevision\thisisundefined - \unhbox0\ (\urefcode{#1})% DVI, always show arg and url - \else - % For XeTeX - \ifurefurlonlylink - % PDF plus option to not display url, show just arg - \unhbox0 - \else - % PDF, normally display both arg and url for consistency, - % visibility, if the pdf is eventually used to print, etc. - \unhbox0\ (\urefcode{#1})% - \fi - \fi - \fi - \else - \urefcode{#1}% only url given, so show it - \fi - \fi - \endlink -\endgroup} - -% Allow line breaks around only a few characters (only). -\def\urefcatcodes{% - \catcode`\&=\active \catcode`\.=\active - \catcode`\#=\active \catcode`\?=\active - \catcode`\/=\active -} -{ - \urefcatcodes - % - \global\def\urefcode{\begingroup - \setupmarkupstyle{code}% - \urefcatcodes - \let&\urefcodeamp - \let.\urefcodedot - \let#\urefcodehash - \let?\urefcodequest - \let/\urefcodeslash - \codex - } - % - % By default, they are just regular characters. - \global\def&{\normalamp} - \global\def.{\normaldot} - \global\def#{\normalhash} - \global\def?{\normalquest} - \global\def/{\normalslash} -} - -% we put a little stretch before and after the breakable chars, to help -% line breaking of long url's. The unequal skips make look better in -% cmtt at least, especially for dots. -\def\urefprestretchamount{.13em} -\def\urefpoststretchamount{.1em} -\def\urefprestretch{\urefprebreak \hskip0pt plus\urefprestretchamount\relax} -\def\urefpoststretch{\urefpostbreak \hskip0pt plus\urefprestretchamount\relax} -% -\def\urefcodeamp{\urefprestretch \&\urefpoststretch} -\def\urefcodedot{\urefprestretch .\urefpoststretch} -\def\urefcodehash{\urefprestretch \#\urefpoststretch} -\def\urefcodequest{\urefprestretch ?\urefpoststretch} -\def\urefcodeslash{\futurelet\next\urefcodeslashfinish} -{ - \catcode`\/=\active - \global\def\urefcodeslashfinish{% - \urefprestretch \slashChar - % Allow line break only after the final / in a sequence of - % slashes, to avoid line break between the slashes in http://. - \ifx\next/\else \urefpoststretch \fi - } -} - -% One more complication: by default we'll break after the special -% characters, but some people like to break before the special chars, so -% allow that. Also allow no breaking at all, for manual control. -% -\parseargdef\urefbreakstyle{% - \def\txiarg{#1}% - \ifx\txiarg\wordnone - \def\urefprebreak{\nobreak}\def\urefpostbreak{\nobreak} - \else\ifx\txiarg\wordbefore - \def\urefprebreak{\allowbreak}\def\urefpostbreak{\nobreak} - \else\ifx\txiarg\wordafter - \def\urefprebreak{\nobreak}\def\urefpostbreak{\allowbreak} - \else - \errhelp = \EMsimple - \errmessage{Unknown @urefbreakstyle setting `\txiarg'}% - \fi\fi\fi -} -\def\wordafter{after} -\def\wordbefore{before} -\def\wordnone{none} - -\urefbreakstyle after - -% @url synonym for @uref, since that's how everyone uses it. -% -\let\url=\uref - -% rms does not like angle brackets --karl, 17may97. -% So now @email is just like @uref, unless we are pdf. -% -%\def\email#1{\angleleft{\tt #1}\angleright} -\ifpdf - \def\email#1{\doemail#1,,\finish} - \def\doemail#1,#2,#3\finish{\begingroup - \unsepspaces - \pdfurl{mailto:#1}% - \setbox0 = \hbox{\ignorespaces #2}% - \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi - \endlink - \endgroup} -\else - \ifx\XeTeXrevision\thisisundefined - \let\email=\uref - \else - \def\email#1{\doemail#1,,\finish} - \def\doemail#1,#2,#3\finish{\begingroup - \unsepspaces - \pdfurl{mailto:#1}% - \setbox0 = \hbox{\ignorespaces #2}% - \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi - \endlink - \endgroup} - \fi -\fi - -% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), -% `example' (@kbd uses ttsl only inside of @example and friends), -% or `code' (@kbd uses normal tty font always). -\parseargdef\kbdinputstyle{% - \def\txiarg{#1}% - \ifx\txiarg\worddistinct - \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}% - \else\ifx\txiarg\wordexample - \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}% - \else\ifx\txiarg\wordcode - \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}% - \else - \errhelp = \EMsimple - \errmessage{Unknown @kbdinputstyle setting `\txiarg'}% - \fi\fi\fi -} -\def\worddistinct{distinct} -\def\wordexample{example} -\def\wordcode{code} - -% Default is `distinct'. -\kbdinputstyle distinct - -% @kbd is like @code, except that if the argument is just one @key command, -% then @kbd has no effect. -\def\kbd#1{{\def\look{#1}\expandafter\kbdsub\look??\par}} - -\def\xkey{\key} -\def\kbdsub#1#2#3\par{% - \def\one{#1}\def\three{#3}\def\threex{??}% - \ifx\one\xkey\ifx\threex\three \key{#2}% - \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi - \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi -} - -% definition of @key that produces a lozenge. Doesn't adjust to text size. -%\setfont\keyrm\rmshape{8}{1000}{OT1} -%\font\keysy=cmsy9 -%\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{% -% \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% -% \vbox{\hrule\kern-0.4pt -% \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% -% \kern-0.4pt\hrule}% -% \kern-.06em\raise0.4pt\hbox{\angleright}}}} - -% definition of @key with no lozenge. If the current font is already -% monospace, don't change it; that way, we respect @kbdinputstyle. But -% if it isn't monospace, then use \tt. -% -\def\key#1{{\setupmarkupstyle{key}% - \nohyphenation - \ifmonospace\else\tt\fi - #1}\null} - -% @clicksequence{File @click{} Open ...} -\def\clicksequence#1{\begingroup #1\endgroup} - -% @clickstyle @arrow (by default) -\parseargdef\clickstyle{\def\click{#1}} -\def\click{\arrow} - -% Typeset a dimension, e.g., `in' or `pt'. The only reason for the -% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt. -% -\def\dmn#1{\thinspace #1} - -% @acronym for "FBI", "NATO", and the like. -% We print this one point size smaller, since it's intended for -% all-uppercase. -% -\def\acronym#1{\doacronym #1,,\finish} -\def\doacronym#1,#2,#3\finish{% - {\switchtolsize #1}% - \def\temp{#2}% - \ifx\temp\empty \else - \space ({\unsepspaces \ignorespaces \temp \unskip})% - \fi - \null % reset \spacefactor=1000 -} - -% @abbr for "Comput. J." and the like. -% No font change, but don't do end-of-sentence spacing. -% -\def\abbr#1{\doabbr #1,,\finish} -\def\doabbr#1,#2,#3\finish{% - {\plainfrenchspacing #1}% - \def\temp{#2}% - \ifx\temp\empty \else - \space ({\unsepspaces \ignorespaces \temp \unskip})% - \fi - \null % reset \spacefactor=1000 -} - -% @asis just yields its argument. Used with @table, for example. -% -\def\asis#1{#1} - -% @math outputs its argument in math mode. -% -% One complication: _ usually means subscripts, but it could also mean -% an actual _ character, as in @math{@var{some_variable} + 1}. So make -% _ active, and distinguish by seeing if the current family is \slfam, -% which is what @var uses. -{ - \catcode`\_ = \active - \gdef\mathunderscore{% - \catcode`\_=\active - \def_{\ifnum\fam=\slfam \_\else\sb\fi}% - } -} -% Another complication: we want \\ (and @\) to output a math (or tt) \. -% FYI, plain.tex uses \\ as a temporary control sequence (for no -% particular reason), but this is not advertised and we don't care. -% -% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\. -\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi} -% -\def\math{% - \ifmmode\else % only go into math if not in math mode already - \tex - \mathunderscore - \let\\ = \mathbackslash - \mathactive - % make the texinfo accent commands work in math mode - \let\"=\ddot - \let\'=\acute - \let\==\bar - \let\^=\hat - \let\`=\grave - \let\u=\breve - \let\v=\check - \let\~=\tilde - \let\dotaccent=\dot - % have to provide another name for sup operator - \let\mathopsup=\sup - $\expandafter\finishmath\fi -} -\def\finishmath#1{#1$\endgroup} % Close the group opened by \tex. - -% Some active characters (such as <) are spaced differently in math. -% We have to reset their definitions in case the @math was an argument -% to a command which sets the catcodes (such as @item or @section). -% -{ - \catcode`^ = \active - \catcode`< = \active - \catcode`> = \active - \catcode`+ = \active - \catcode`' = \active - \gdef\mathactive{% - \let^ = \ptexhat - \let< = \ptexless - \let> = \ptexgtr - \let+ = \ptexplus - \let' = \ptexquoteright - } -} - -% for @sub and @sup, if in math mode, just do a normal sub/superscript. -% If in text, use math to place as sub/superscript, but switch -% into text mode, with smaller fonts. This is a different font than the -% one used for real math sub/superscripts (8pt vs. 7pt), but let's not -% fix it (significant additions to font machinery) until someone notices. -% -\def\sub{\ifmmode \expandafter\sb \else \expandafter\finishsub\fi} -\def\finishsub#1{$\sb{\hbox{\switchtolllsize #1}}$}% -% -\def\sup{\ifmmode \expandafter\ptexsp \else \expandafter\finishsup\fi} -\def\finishsup#1{$\ptexsp{\hbox{\switchtolllsize #1}}$}% - -% @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}. -% Ignore unless FMTNAME == tex; then it is like @iftex and @tex, -% except specified as a normal braced arg, so no newlines to worry about. -% -\def\outfmtnametex{tex} -% -\long\def\inlinefmt#1{\doinlinefmt #1,\finish} -\long\def\doinlinefmt#1,#2,\finish{% - \def\inlinefmtname{#1}% - \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi -} -% -% @inlinefmtifelse{FMTNAME,THEN-TEXT,ELSE-TEXT} expands THEN-TEXT if -% FMTNAME is tex, else ELSE-TEXT. -\long\def\inlinefmtifelse#1{\doinlinefmtifelse #1,,,\finish} -\long\def\doinlinefmtifelse#1,#2,#3,#4,\finish{% - \def\inlinefmtname{#1}% - \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\else \ignorespaces #3\fi -} -% -% For raw, must switch into @tex before parsing the argument, to avoid -% setting catcodes prematurely. Doing it this way means that, for -% example, @inlineraw{html, foo{bar} gets a parse error instead of being -% ignored. But this isn't important because if people want a literal -% *right* brace they would have to use a command anyway, so they may as -% well use a command to get a left brace too. We could re-use the -% delimiter character idea from \verb, but it seems like overkill. -% -\long\def\inlineraw{\tex \doinlineraw} -\long\def\doinlineraw#1{\doinlinerawtwo #1,\finish} -\def\doinlinerawtwo#1,#2,\finish{% - \def\inlinerawname{#1}% - \ifx\inlinerawname\outfmtnametex \ignorespaces #2\fi - \endgroup % close group opened by \tex. -} - -% @inlineifset{VAR, TEXT} expands TEXT if VAR is @set. -% -\long\def\inlineifset#1{\doinlineifset #1,\finish} -\long\def\doinlineifset#1,#2,\finish{% - \def\inlinevarname{#1}% - \expandafter\ifx\csname SET\inlinevarname\endcsname\relax - \else\ignorespaces#2\fi -} - -% @inlineifclear{VAR, TEXT} expands TEXT if VAR is not @set. -% -\long\def\inlineifclear#1{\doinlineifclear #1,\finish} -\long\def\doinlineifclear#1,#2,\finish{% - \def\inlinevarname{#1}% - \expandafter\ifx\csname SET\inlinevarname\endcsname\relax \ignorespaces#2\fi -} - - -\message{glyphs,} -% and logos. - -% @@ prints an @, as does @atchar{}. -\def\@{\char64 } -\let\atchar=\@ - -% @{ @} @lbracechar{} @rbracechar{} all generate brace characters. -\def\lbracechar{{\ifmonospace\char123\else\ensuremath\lbrace\fi}} -\def\rbracechar{{\ifmonospace\char125\else\ensuremath\rbrace\fi}} -\let\{=\lbracechar -\let\}=\rbracechar - -% @comma{} to avoid , parsing problems. -\let\comma = , - -% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent -% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H. -\let\, = \ptexc -\let\dotaccent = \ptexdot -\def\ringaccent#1{{\accent23 #1}} -\let\tieaccent = \ptext -\let\ubaraccent = \ptexb -\let\udotaccent = \d - -% Other special characters: @questiondown @exclamdown @ordf @ordm -% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss. -\def\questiondown{?`} -\def\exclamdown{!`} -\def\ordf{\leavevmode\raise1ex\hbox{\switchtolllsize \underbar{a}}} -\def\ordm{\leavevmode\raise1ex\hbox{\switchtolllsize \underbar{o}}} - -% Dotless i and dotless j, used for accents. -\def\imacro{i} -\def\jmacro{j} -\def\dotless#1{% - \def\temp{#1}% - \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi - \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi - \else \errmessage{@dotless can be used only with i or j}% - \fi\fi -} - -% The \TeX{} logo, as in plain, but resetting the spacing so that a -% period following counts as ending a sentence. (Idea found in latex.) -% -\edef\TeX{\TeX \spacefactor=1000 } - -% @LaTeX{} logo. Not quite the same results as the definition in -% latex.ltx, since we use a different font for the raised A; it's most -% convenient for us to use an explicitly smaller font, rather than using -% the \scriptstyle font (since we don't reset \scriptstyle and -% \scriptscriptstyle). -% -\def\LaTeX{% - L\kern-.36em - {\setbox0=\hbox{T}% - \vbox to \ht0{\hbox{% - \ifx\textnominalsize\xwordpt - % for 10pt running text, lllsize (8pt) is too small for the A in LaTeX. - % Revert to plain's \scriptsize, which is 7pt. - \count255=\the\fam $\fam\count255 \scriptstyle A$% - \else - % For 11pt, we can use our lllsize. - \switchtolllsize A% - \fi - }% - \vss - }}% - \kern-.15em - \TeX -} - -% Some math mode symbols. Define \ensuremath to switch into math mode -% unless we are already there. Expansion tricks may not be needed here, -% but safer, and can't hurt. -\def\ensuremath{\ifmmode \expandafter\asis \else\expandafter\ensuredmath \fi} -\def\ensuredmath#1{$\relax#1$} -% -\def\bullet{\ensuremath\ptexbullet} -\def\geq{\ensuremath\ge} -\def\leq{\ensuremath\le} -\def\minus{\ensuremath-} - -% @dots{} outputs an ellipsis using the current font. -% We do .5em per period so that it has the same spacing in the cm -% typewriter fonts as three actual period characters; on the other hand, -% in other typewriter fonts three periods are wider than 1.5em. So do -% whichever is larger. -% -\def\dots{% - \leavevmode - \setbox0=\hbox{...}% get width of three periods - \ifdim\wd0 > 1.5em - \dimen0 = \wd0 - \else - \dimen0 = 1.5em - \fi - \hbox to \dimen0{% - \hskip 0pt plus.25fil - .\hskip 0pt plus1fil - .\hskip 0pt plus1fil - .\hskip 0pt plus.5fil - }% -} - -% @enddots{} is an end-of-sentence ellipsis. -% -\def\enddots{% - \dots - \spacefactor=\endofsentencespacefactor -} - -% @point{}, @result{}, @expansion{}, @print{}, @equiv{}. -% -% Since these characters are used in examples, they should be an even number of -% \tt widths. Each \tt character is 1en, so two makes it 1em. -% -\def\point{$\star$} -\def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}} -\def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} -\def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}} -\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} -\def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}} - -% The @error{} command. -% Adapted from the TeXbook's \boxit. -% -\newbox\errorbox -% -{\ttfont \global\dimen0 = 3em}% Width of the box. -\dimen2 = .55pt % Thickness of rules -% The text. (`r' is open on the right, `e' somewhat less so on the left.) -\setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt} -% -\setbox\errorbox=\hbox to \dimen0{\hfil - \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. - \advance\hsize by -2\dimen2 % Rules. - \vbox{% - \hrule height\dimen2 - \hbox{\vrule width\dimen2 \kern3pt % Space to left of text. - \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below. - \kern3pt\vrule width\dimen2}% Space to right. - \hrule height\dimen2} - \hfil} -% -\def\error{\leavevmode\lower.7ex\copy\errorbox} - -% @pounds{} is a sterling sign, which Knuth put in the CM italic font. -% -\def\pounds{{\it\$}} - -% @euro{} comes from a separate font, depending on the current style. -% We use the free feym* fonts from the eurosym package by Henrik -% Theiling, which support regular, slanted, bold and bold slanted (and -% "outlined" (blackboard board, sort of) versions, which we don't need). -% It is available from http://www.ctan.org/tex-archive/fonts/eurosym. -% -% Although only regular is the truly official Euro symbol, we ignore -% that. The Euro is designed to be slightly taller than the regular -% font height. -% -% feymr - regular -% feymo - slanted -% feybr - bold -% feybo - bold slanted -% -% There is no good (free) typewriter version, to my knowledge. -% A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide. -% Hmm. -% -% Also doesn't work in math. Do we need to do math with euro symbols? -% Hope not. -% -% -\def\euro{{\eurofont e}} -\def\eurofont{% - % We set the font at each command, rather than predefining it in - % \textfonts and the other font-switching commands, so that - % installations which never need the symbol don't have to have the - % font installed. - % - % There is only one designed size (nominal 10pt), so we always scale - % that to the current nominal size. - % - % By the way, simply using "at 1em" works for cmr10 and the like, but - % does not work for cmbx10 and other extended/shrunken fonts. - % - \def\eurosize{\csname\curfontsize nominalsize\endcsname}% - % - \ifx\curfontstyle\bfstylename - % bold: - \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize - \else - % regular: - \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize - \fi - \thiseurofont -} - -% Glyphs from the EC fonts. We don't use \let for the aliases, because -% sometimes we redefine the original macro, and the alias should reflect -% the redefinition. -% -% Use LaTeX names for the Icelandic letters. -\def\DH{{\ecfont \char"D0}} % Eth -\def\dh{{\ecfont \char"F0}} % eth -\def\TH{{\ecfont \char"DE}} % Thorn -\def\th{{\ecfont \char"FE}} % thorn -% -\def\guillemetleft{{\ecfont \char"13}} -\def\guillemotleft{\guillemetleft} -\def\guillemetright{{\ecfont \char"14}} -\def\guillemotright{\guillemetright} -\def\guilsinglleft{{\ecfont \char"0E}} -\def\guilsinglright{{\ecfont \char"0F}} -\def\quotedblbase{{\ecfont \char"12}} -\def\quotesinglbase{{\ecfont \char"0D}} -% -% This positioning is not perfect (see the ogonek LaTeX package), but -% we have the precomposed glyphs for the most common cases. We put the -% tests to use those glyphs in the single \ogonek macro so we have fewer -% dummy definitions to worry about for index entries, etc. -% -% ogonek is also used with other letters in Lithuanian (IOU), but using -% the precomposed glyphs for those is not so easy since they aren't in -% the same EC font. -\def\ogonek#1{{% - \def\temp{#1}% - \ifx\temp\macrocharA\Aogonek - \else\ifx\temp\macrochara\aogonek - \else\ifx\temp\macrocharE\Eogonek - \else\ifx\temp\macrochare\eogonek - \else - \ecfont \setbox0=\hbox{#1}% - \ifdim\ht0=1ex\accent"0C #1% - \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}% - \fi - \fi\fi\fi\fi - }% -} -\def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A} -\def\aogonek{{\ecfont \char"A1}}\def\macrochara{a} -\def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E} -\def\eogonek{{\ecfont \char"A6}}\def\macrochare{e} -% -% Use the European Computer Modern fonts (cm-super in outline format) -% for non-CM glyphs. That is ec* for regular text and tc* for the text -% companion symbols (LaTeX TS1 encoding). Both are part of the ec -% package and follow the same conventions. -% -\def\ecfont{\etcfont{e}} -\def\tcfont{\etcfont{t}} -% -\def\etcfont#1{% - % We can't distinguish serif/sans and italic/slanted, but this - % is used for crude hacks anyway (like adding French and German - % quotes to documents typeset with CM, where we lose kerning), so - % hopefully nobody will notice/care. - \edef\ecsize{\csname\curfontsize ecsize\endcsname}% - \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}% - \ifmonospace - % typewriter: - \font\thisecfont = #1ctt\ecsize \space at \nominalsize - \else - \ifx\curfontstyle\bfstylename - % bold: - \font\thisecfont = #1cb\ifusingit{i}{x}\ecsize \space at \nominalsize - \else - % regular: - \font\thisecfont = #1c\ifusingit{ti}{rm}\ecsize \space at \nominalsize - \fi - \fi - \thisecfont -} - -% @registeredsymbol - R in a circle. The font for the R should really -% be smaller yet, but lllsize is the best we can do for now. -% Adapted from the plain.tex definition of \copyright. -% -\def\registeredsymbol{% - $^{{\ooalign{\hfil\raise.07ex\hbox{\switchtolllsize R}% - \hfil\crcr\Orb}}% - }$% -} - -% @textdegree - the normal degrees sign. -% -\def\textdegree{$^\circ$} - -% Laurent Siebenmann reports \Orb undefined with: -% Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38 -% so we'll define it if necessary. -% -\ifx\Orb\thisisundefined -\def\Orb{\mathhexbox20D} -\fi - -% Quotes. -\chardef\quotedblleft="5C -\chardef\quotedblright=`\" -\chardef\quoteleft=`\` -\chardef\quoteright=`\' - - -\message{page headings,} - -\newskip\titlepagetopglue \titlepagetopglue = 1.5in -\newskip\titlepagebottomglue \titlepagebottomglue = 2pc - -% First the title page. Must do @settitle before @titlepage. -\newif\ifseenauthor -\newif\iffinishedtitlepage - -% @setcontentsaftertitlepage used to do an implicit @contents or -% @shortcontents after @end titlepage, but it is now obsolete. -\def\setcontentsaftertitlepage{% - \errmessage{@setcontentsaftertitlepage has been removed as a Texinfo - command; move your @contents command if you want the contents - after the title page.}}% -\def\setshortcontentsaftertitlepage{% - \errmessage{@setshortcontentsaftertitlepage has been removed as a Texinfo - command; move your @shortcontents and @contents commands if you - want the contents after the title page.}}% - -\parseargdef\shorttitlepage{% - \begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}% - \endgroup\page\hbox{}\page} - -\envdef\titlepage{% - % Open one extra group, as we want to close it in the middle of \Etitlepage. - \begingroup - \parindent=0pt \textfonts - % Leave some space at the very top of the page. - \vglue\titlepagetopglue - % No rule at page bottom unless we print one at the top with @title. - \finishedtitlepagetrue - % - % Most title ``pages'' are actually two pages long, with space - % at the top of the second. We don't want the ragged left on the second. - \let\oldpage = \page - \def\page{% - \iffinishedtitlepage\else - \finishtitlepage - \fi - \let\page = \oldpage - \page - \null - }% -} - -\def\Etitlepage{% - \iffinishedtitlepage\else - \finishtitlepage - \fi - % It is important to do the page break before ending the group, - % because the headline and footline are only empty inside the group. - % If we use the new definition of \page, we always get a blank page - % after the title page, which we certainly don't want. - \oldpage - \endgroup - % - % Need this before the \...aftertitlepage checks so that if they are - % in effect the toc pages will come out with page numbers. - \HEADINGSon -} - -\def\finishtitlepage{% - \vskip4pt \hrule height 2pt width \hsize - \vskip\titlepagebottomglue - \finishedtitlepagetrue -} - -% Settings used for typesetting titles: no hyphenation, no indentation, -% don't worry much about spacing, ragged right. This should be used -% inside a \vbox, and fonts need to be set appropriately first. \par should -% be specified before the end of the \vbox, since a vbox is a group. -% -\def\raggedtitlesettings{% - \rm - \hyphenpenalty=10000 - \parindent=0pt - \tolerance=5000 - \ptexraggedright -} - -% Macros to be used within @titlepage: - -\let\subtitlerm=\rmfont -\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines} - -\parseargdef\title{% - \checkenv\titlepage - \vbox{\titlefonts \raggedtitlesettings #1\par}% - % print a rule at the page bottom also. - \finishedtitlepagefalse - \vskip4pt \hrule height 4pt width \hsize \vskip4pt -} - -\parseargdef\subtitle{% - \checkenv\titlepage - {\subtitlefont \rightline{#1}}% -} - -% @author should come last, but may come many times. -% It can also be used inside @quotation. -% -\parseargdef\author{% - \def\temp{\quotation}% - \ifx\thisenv\temp - \def\quotationauthor{#1}% printed in \Equotation. - \else - \checkenv\titlepage - \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi - {\secfonts\rm \leftline{#1}}% - \fi -} - - -% Set up page headings and footings. - -\let\thispage=\folio - -\newtoks\evenheadline % headline on even pages -\newtoks\oddheadline % headline on odd pages -\newtoks\evenfootline % footline on even pages -\newtoks\oddfootline % footline on odd pages - -% Now make \makeheadline and \makefootline in Plain TeX use those variables -\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline - \else \the\evenheadline \fi}} -\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline - \else \the\evenfootline \fi}\HEADINGShook} -\let\HEADINGShook=\relax - -% Commands to set those variables. -% For example, this is what @headings on does -% @evenheading @thistitle|@thispage|@thischapter -% @oddheading @thischapter|@thispage|@thistitle -% @evenfooting @thisfile|| -% @oddfooting ||@thisfile - - -\def\evenheading{\parsearg\evenheadingxxx} -\def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish} -\def\evenheadingyyy #1\|#2\|#3\|#4\finish{% -\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} - -\def\oddheading{\parsearg\oddheadingxxx} -\def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish} -\def\oddheadingyyy #1\|#2\|#3\|#4\finish{% -\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} - -\parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}% - -\def\evenfooting{\parsearg\evenfootingxxx} -\def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish} -\def\evenfootingyyy #1\|#2\|#3\|#4\finish{% -\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} - -\def\oddfooting{\parsearg\oddfootingxxx} -\def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish} -\def\oddfootingyyy #1\|#2\|#3\|#4\finish{% - \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}% - % - % Leave some space for the footline. Hopefully ok to assume - % @evenfooting will not be used by itself. - \global\advance\txipageheight by -12pt - \global\advance\vsize by -12pt -} - -\parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}} - -% @evenheadingmarks top \thischapter <- chapter at the top of a page -% @evenheadingmarks bottom \thischapter <- chapter at the bottom of a page -% -% The same set of arguments for: -% -% @oddheadingmarks -% @evenfootingmarks -% @oddfootingmarks -% @everyheadingmarks -% @everyfootingmarks - -% These define \getoddheadingmarks, \getevenheadingmarks, -% \getoddfootingmarks, and \getevenfootingmarks, each to one of -% \gettopheadingmarks, \getbottomheadingmarks. -% -\def\evenheadingmarks{\headingmarks{even}{heading}} -\def\oddheadingmarks{\headingmarks{odd}{heading}} -\def\evenfootingmarks{\headingmarks{even}{footing}} -\def\oddfootingmarks{\headingmarks{odd}{footing}} -\parseargdef\everyheadingmarks{\headingmarks{even}{heading}{#1} - \headingmarks{odd}{heading}{#1} } -\parseargdef\everyfootingmarks{\headingmarks{even}{footing}{#1} - \headingmarks{odd}{footing}{#1} } -% #1 = even/odd, #2 = heading/footing, #3 = top/bottom. -\def\headingmarks#1#2#3 {% - \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname - \global\expandafter\let\csname get#1#2marks\endcsname \temp -} - -\everyheadingmarks bottom -\everyfootingmarks bottom - -% @headings double turns headings on for double-sided printing. -% @headings single turns headings on for single-sided printing. -% @headings off turns them off. -% @headings on same as @headings double, retained for compatibility. -% @headings after turns on double-sided headings after this page. -% @headings doubleafter turns on double-sided headings after this page. -% @headings singleafter turns on single-sided headings after this page. -% By default, they are off at the start of a document, -% and turned `on' after @end titlepage. - -\parseargdef\headings{\csname HEADINGS#1\endcsname} - -\def\headingsoff{% non-global headings elimination - \evenheadline={\hfil}\evenfootline={\hfil}% - \oddheadline={\hfil}\oddfootline={\hfil}% -} - -\def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting -\HEADINGSoff % it's the default - -% When we turn headings on, set the page number to 1. -% For double-sided printing, put current file name in lower left corner, -% chapter name on inside top of right hand pages, document -% title on inside top of left hand pages, and page numbers on outside top -% edge of all pages. -\def\HEADINGSdouble{% -\global\pageno=1 -\global\evenfootline={\hfil} -\global\oddfootline={\hfil} -\global\evenheadline={\line{\folio\hfil\thistitle}} -\global\oddheadline={\line{\thischapterheading\hfil\folio}} -\global\let\contentsalignmacro = \chapoddpage -} -\let\contentsalignmacro = \chappager - -% For single-sided printing, chapter title goes across top left of page, -% page number on top right. -\def\HEADINGSsingle{% -\global\pageno=1 -\global\evenfootline={\hfil} -\global\oddfootline={\hfil} -\global\evenheadline={\line{\thischapterheading\hfil\folio}} -\global\oddheadline={\line{\thischapterheading\hfil\folio}} -\global\let\contentsalignmacro = \chappager -} -\def\HEADINGSon{\HEADINGSdouble} - -\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex} -\let\HEADINGSdoubleafter=\HEADINGSafter -\def\HEADINGSdoublex{% -\global\evenfootline={\hfil} -\global\oddfootline={\hfil} -\global\evenheadline={\line{\folio\hfil\thistitle}} -\global\oddheadline={\line{\thischapterheading\hfil\folio}} -\global\let\contentsalignmacro = \chapoddpage -} - -\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex} -\def\HEADINGSsinglex{% -\global\evenfootline={\hfil} -\global\oddfootline={\hfil} -\global\evenheadline={\line{\thischapterheading\hfil\folio}} -\global\oddheadline={\line{\thischapterheading\hfil\folio}} -\global\let\contentsalignmacro = \chappager -} - -% Subroutines used in generating headings -% This produces Day Month Year style of output. -% Only define if not already defined, in case a txi-??.tex file has set -% up a different format (e.g., txi-cs.tex does this). -\ifx\today\thisisundefined -\def\today{% - \number\day\space - \ifcase\month - \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr - \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug - \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec - \fi - \space\number\year} -\fi - -% @settitle line... specifies the title of the document, for headings. -% It generates no output of its own. -\def\thistitle{\putwordNoTitle} -\def\settitle{\parsearg{\gdef\thistitle}} - - -\message{tables,} -% Tables -- @table, @ftable, @vtable, @item(x). - -% default indentation of table text -\newdimen\tableindent \tableindent=.8in -% default indentation of @itemize and @enumerate text -\newdimen\itemindent \itemindent=.3in -% margin between end of table item and start of table text. -\newdimen\itemmargin \itemmargin=.1in - -% used internally for \itemindent minus \itemmargin -\newdimen\itemmax - -% Note @table, @ftable, and @vtable define @item, @itemx, etc., with -% these defs. -% They also define \itemindex -% to index the item name in whatever manner is desired (perhaps none). - -\newif\ifitemxneedsnegativevskip - -\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi} - -\def\internalBitem{\smallbreak \parsearg\itemzzz} -\def\internalBitemx{\itemxpar \parsearg\itemzzz} - -\def\itemzzz #1{\begingroup % - \advance\hsize by -\rightskip - \advance\hsize by -\tableindent - \setbox0=\hbox{\itemindicate{#1}}% - \itemindex{#1}% - \nobreak % This prevents a break before @itemx. - % - % If the item text does not fit in the space we have, put it on a line - % by itself, and do not allow a page break either before or after that - % line. We do not start a paragraph here because then if the next - % command is, e.g., @kindex, the whatsit would get put into the - % horizontal list on a line by itself, resulting in extra blank space. - \ifdim \wd0>\itemmax - % - % Make this a paragraph so we get the \parskip glue and wrapping, - % but leave it ragged-right. - \begingroup - \advance\leftskip by-\tableindent - \advance\hsize by\tableindent - \advance\rightskip by0pt plus1fil\relax - \leavevmode\unhbox0\par - \endgroup - % - % We're going to be starting a paragraph, but we don't want the - % \parskip glue -- logically it's part of the @item we just started. - \nobreak \vskip-\parskip - % - % Stop a page break at the \parskip glue coming up. However, if - % what follows is an environment such as @example, there will be no - % \parskip glue; then the negative vskip we just inserted would - % cause the example and the item to crash together. So we use this - % bizarre value of 10001 as a signal to \aboveenvbreak to insert - % \parskip glue after all. Section titles are handled this way also. - % - \penalty 10001 - \endgroup - \itemxneedsnegativevskipfalse - \else - % The item text fits into the space. Start a paragraph, so that the - % following text (if any) will end up on the same line. - \noindent - % Do this with kerns and \unhbox so that if there is a footnote in - % the item text, it can migrate to the main vertical list and - % eventually be printed. - \nobreak\kern-\tableindent - \dimen0 = \itemmax \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0 - \unhbox0 - \nobreak\kern\dimen0 - \endgroup - \itemxneedsnegativevskiptrue - \fi -} - -\def\item{\errmessage{@item while not in a list environment}} -\def\itemx{\errmessage{@itemx while not in a list environment}} - -% @table, @ftable, @vtable. -\envdef\table{% - \let\itemindex\gobble - \tablecheck{table}% -} -\envdef\ftable{% - \def\itemindex ##1{\doind {fn}{\code{##1}}}% - \tablecheck{ftable}% -} -\envdef\vtable{% - \def\itemindex ##1{\doind {vr}{\code{##1}}}% - \tablecheck{vtable}% -} -\def\tablecheck#1{% - \ifnum \the\catcode`\^^M=\active - \endgroup - \errmessage{This command won't work in this context; perhaps the problem is - that we are \inenvironment\thisenv}% - \def\next{\doignore{#1}}% - \else - \let\next\tablex - \fi - \next -} -\def\tablex#1{% - \def\itemindicate{#1}% - \parsearg\tabley -} -\def\tabley#1{% - {% - \makevalueexpandable - \edef\temp{\noexpand\tablez #1\space\space\space}% - \expandafter - }\temp \endtablez -} -\def\tablez #1 #2 #3 #4\endtablez{% - \aboveenvbreak - \ifnum 0#1>0 \advance \leftskip by #1\mil \fi - \ifnum 0#2>0 \tableindent=#2\mil \fi - \ifnum 0#3>0 \advance \rightskip by #3\mil \fi - \itemmax=\tableindent - \advance \itemmax by -\itemmargin - \advance \leftskip by \tableindent - \exdentamount=\tableindent - \parindent = 0pt - \parskip = \smallskipamount - \ifdim \parskip=0pt \parskip=2pt \fi - \let\item = \internalBitem - \let\itemx = \internalBitemx -} -\def\Etable{\endgraf\afterenvbreak} -\let\Eftable\Etable -\let\Evtable\Etable -\let\Eitemize\Etable -\let\Eenumerate\Etable - -% This is the counter used by @enumerate, which is really @itemize - -\newcount \itemno - -\envdef\itemize{\parsearg\doitemize} - -\def\doitemize#1{% - \aboveenvbreak - \itemmax=\itemindent - \advance\itemmax by -\itemmargin - \advance\leftskip by \itemindent - \exdentamount=\itemindent - \parindent=0pt - \parskip=\smallskipamount - \ifdim\parskip=0pt \parskip=2pt \fi - % - % Try typesetting the item mark so that if the document erroneously says - % something like @itemize @samp (intending @table), there's an error - % right away at the @itemize. It's not the best error message in the - % world, but it's better than leaving it to the @item. This means if - % the user wants an empty mark, they have to say @w{} not just @w. - \def\itemcontents{#1}% - \setbox0 = \hbox{\itemcontents}% - % - % @itemize with no arg is equivalent to @itemize @bullet. - \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi - % - \let\item=\itemizeitem -} - -% Definition of @item while inside @itemize and @enumerate. -% -\def\itemizeitem{% - \advance\itemno by 1 % for enumerations - {\let\par=\endgraf \smallbreak}% reasonable place to break - {% - % If the document has an @itemize directly after a section title, a - % \nobreak will be last on the list, and \sectionheading will have - % done a \vskip-\parskip. In that case, we don't want to zero - % parskip, or the item text will crash with the heading. On the - % other hand, when there is normal text preceding the item (as there - % usually is), we do want to zero parskip, or there would be too much - % space. In that case, we won't have a \nobreak before. At least - % that's the theory. - \ifnum\lastpenalty<10000 \parskip=0in \fi - \noindent - \hbox to 0pt{\hss \itemcontents \kern\itemmargin}% - % - \ifinner\else - \vadjust{\penalty 1200}% not good to break after first line of item. - \fi - % We can be in inner vertical mode in a footnote, although an - % @itemize looks awful there. - }% - \flushcr -} - -% \splitoff TOKENS\endmark defines \first to be the first token in -% TOKENS, and \rest to be the remainder. -% -\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}% - -% Allow an optional argument of an uppercase letter, lowercase letter, -% or number, to specify the first label in the enumerated list. No -% argument is the same as `1'. -% -\envparseargdef\enumerate{\enumeratey #1 \endenumeratey} -\def\enumeratey #1 #2\endenumeratey{% - % If we were given no argument, pretend we were given `1'. - \def\thearg{#1}% - \ifx\thearg\empty \def\thearg{1}\fi - % - % Detect if the argument is a single token. If so, it might be a - % letter. Otherwise, the only valid thing it can be is a number. - % (We will always have one token, because of the test we just made. - % This is a good thing, since \splitoff doesn't work given nothing at - % all -- the first parameter is undelimited.) - \expandafter\splitoff\thearg\endmark - \ifx\rest\empty - % Only one token in the argument. It could still be anything. - % A ``lowercase letter'' is one whose \lccode is nonzero. - % An ``uppercase letter'' is one whose \lccode is both nonzero, and - % not equal to itself. - % Otherwise, we assume it's a number. - % - % We need the \relax at the end of the \ifnum lines to stop TeX from - % continuing to look for a . - % - \ifnum\lccode\expandafter`\thearg=0\relax - \numericenumerate % a number (we hope) - \else - % It's a letter. - \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax - \lowercaseenumerate % lowercase letter - \else - \uppercaseenumerate % uppercase letter - \fi - \fi - \else - % Multiple tokens in the argument. We hope it's a number. - \numericenumerate - \fi -} - -% An @enumerate whose labels are integers. The starting integer is -% given in \thearg. -% -\def\numericenumerate{% - \itemno = \thearg - \startenumeration{\the\itemno}% -} - -% The starting (lowercase) letter is in \thearg. -\def\lowercaseenumerate{% - \itemno = \expandafter`\thearg - \startenumeration{% - % Be sure we're not beyond the end of the alphabet. - \ifnum\itemno=0 - \errmessage{No more lowercase letters in @enumerate; get a bigger - alphabet}% - \fi - \char\lccode\itemno - }% -} - -% The starting (uppercase) letter is in \thearg. -\def\uppercaseenumerate{% - \itemno = \expandafter`\thearg - \startenumeration{% - % Be sure we're not beyond the end of the alphabet. - \ifnum\itemno=0 - \errmessage{No more uppercase letters in @enumerate; get a bigger - alphabet} - \fi - \char\uccode\itemno - }% -} - -% Call \doitemize, adding a period to the first argument and supplying the -% common last two arguments. Also subtract one from the initial value in -% \itemno, since @item increments \itemno. -% -\def\startenumeration#1{% - \advance\itemno by -1 - \doitemize{#1.}\flushcr -} - -% @alphaenumerate and @capsenumerate are abbreviations for giving an arg -% to @enumerate. -% -\def\alphaenumerate{\enumerate{a}} -\def\capsenumerate{\enumerate{A}} -\def\Ealphaenumerate{\Eenumerate} -\def\Ecapsenumerate{\Eenumerate} - - -% @multitable macros -% Amy Hendrickson, 8/18/94, 3/6/96 -% -% @multitable ... @end multitable will make as many columns as desired. -% Contents of each column will wrap at width given in preamble. Width -% can be specified either with sample text given in a template line, -% or in percent of \hsize, the current width of text on page. - -% Table can continue over pages but will only break between lines. - -% To make preamble: -% -% Either define widths of columns in terms of percent of \hsize: -% @multitable @columnfractions .25 .3 .45 -% @item ... -% -% Numbers following @columnfractions are the percent of the total -% current hsize to be used for each column. You may use as many -% columns as desired. - - -% Or use a template: -% @multitable {Column 1 template} {Column 2 template} {Column 3 template} -% @item ... -% using the widest term desired in each column. - -% Each new table line starts with @item, each subsequent new column -% starts with @tab. Empty columns may be produced by supplying @tab's -% with nothing between them for as many times as empty columns are needed, -% ie, @tab@tab@tab will produce two empty columns. - -% @item, @tab do not need to be on their own lines, but it will not hurt -% if they are. - -% Sample multitable: - -% @multitable {Column 1 template} {Column 2 template} {Column 3 template} -% @item first col stuff @tab second col stuff @tab third col -% @item -% first col stuff -% @tab -% second col stuff -% @tab -% third col -% @item first col stuff @tab second col stuff -% @tab Many paragraphs of text may be used in any column. -% -% They will wrap at the width determined by the template. -% @item@tab@tab This will be in third column. -% @end multitable - -% Default dimensions may be reset by user. -% @multitableparskip is vertical space between paragraphs in table. -% @multitableparindent is paragraph indent in table. -% @multitablecolmargin is horizontal space to be left between columns. -% @multitablelinespace is space to leave between table items, baseline -% to baseline. -% 0pt means it depends on current normal line spacing. -% -\newskip\multitableparskip -\newskip\multitableparindent -\newdimen\multitablecolspace -\newskip\multitablelinespace -\multitableparskip=0pt -\multitableparindent=6pt -\multitablecolspace=12pt -\multitablelinespace=0pt - -% Macros used to set up halign preamble: -% -\let\endsetuptable\relax -\def\xendsetuptable{\endsetuptable} -\let\columnfractions\relax -\def\xcolumnfractions{\columnfractions} -\newif\ifsetpercent - -% #1 is the @columnfraction, usually a decimal number like .5, but might -% be just 1. We just use it, whatever it is. -% -\def\pickupwholefraction#1 {% - \global\advance\colcount by 1 - \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}% - \setuptable -} - -\newcount\colcount -\def\setuptable#1{% - \def\firstarg{#1}% - \ifx\firstarg\xendsetuptable - \let\go = \relax - \else - \ifx\firstarg\xcolumnfractions - \global\setpercenttrue - \else - \ifsetpercent - \let\go\pickupwholefraction - \else - \global\advance\colcount by 1 - \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a - % separator; typically that is always in the input, anyway. - \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}% - \fi - \fi - \ifx\go\pickupwholefraction - % Put the argument back for the \pickupwholefraction call, so - % we'll always have a period there to be parsed. - \def\go{\pickupwholefraction#1}% - \else - \let\go = \setuptable - \fi% - \fi - \go -} - -% multitable-only commands. -% -% @headitem starts a heading row, which we typeset in bold. Assignments -% have to be global since we are inside the implicit group of an -% alignment entry. \everycr below resets \everytab so we don't have to -% undo it ourselves. -\def\headitemfont{\b}% for people to use in the template row; not changeable -\def\headitem{% - \checkenv\multitable - \crcr - \gdef\headitemcrhook{\nobreak}% attempt to avoid page break after headings - \global\everytab={\bf}% can't use \headitemfont since the parsing differs - \the\everytab % for the first item -}% -% -% default for tables with no headings. -\let\headitemcrhook=\relax -% -% A \tab used to include \hskip1sp. But then the space in a template -% line is not enough. That is bad. So let's go back to just `&' until -% we again encounter the problem the 1sp was intended to solve. -% --karl, nathan@acm.org, 20apr99. -\def\tab{\checkenv\multitable &\the\everytab}% - -% @multitable ... @end multitable definitions: -% -\newtoks\everytab % insert after every tab. -% -\envdef\multitable{% - \vskip\parskip - \startsavinginserts - % - % @item within a multitable starts a normal row. - % We use \def instead of \let so that if one of the multitable entries - % contains an @itemize, we don't choke on the \item (seen as \crcr aka - % \endtemplate) expanding \doitemize. - \def\item{\crcr}% - % - \tolerance=9500 - \hbadness=9500 - \setmultitablespacing - \parskip=\multitableparskip - \parindent=\multitableparindent - \overfullrule=0pt - \global\colcount=0 - % - \everycr = {% - \noalign{% - \global\everytab={}% Reset from possible headitem. - \global\colcount=0 % Reset the column counter. - % - % Check for saved footnotes, etc.: - \checkinserts - % - % Perhaps a \nobreak, then reset: - \headitemcrhook - \global\let\headitemcrhook=\relax - }% - }% - % - \parsearg\domultitable -} -\def\domultitable#1{% - % To parse everything between @multitable and @item: - \setuptable#1 \endsetuptable - % - % This preamble sets up a generic column definition, which will - % be used as many times as user calls for columns. - % \vtop will set a single line and will also let text wrap and - % continue for many paragraphs if desired. - \halign\bgroup &% - \global\advance\colcount by 1 - \multistrut - \vtop{% - % Use the current \colcount to find the correct column width: - \hsize=\expandafter\csname col\the\colcount\endcsname - % - % In order to keep entries from bumping into each other - % we will add a \leftskip of \multitablecolspace to all columns after - % the first one. - % - % If a template has been used, we will add \multitablecolspace - % to the width of each template entry. - % - % If the user has set preamble in terms of percent of \hsize we will - % use that dimension as the width of the column, and the \leftskip - % will keep entries from bumping into each other. Table will start at - % left margin and final column will justify at right margin. - % - % Make sure we don't inherit \rightskip from the outer environment. - \rightskip=0pt - \ifnum\colcount=1 - % The first column will be indented with the surrounding text. - \advance\hsize by\leftskip - \else - \ifsetpercent \else - % If user has not set preamble in terms of percent of \hsize - % we will advance \hsize by \multitablecolspace. - \advance\hsize by \multitablecolspace - \fi - % In either case we will make \leftskip=\multitablecolspace: - \leftskip=\multitablecolspace - \fi - % Ignoring space at the beginning and end avoids an occasional spurious - % blank line, when TeX decides to break the line at the space before the - % box from the multistrut, so the strut ends up on a line by itself. - % For example: - % @multitable @columnfractions .11 .89 - % @item @code{#} - % @tab Legal holiday which is valid in major parts of the whole country. - % Is automatically provided with highlighting sequences respectively - % marking characters. - \noindent\ignorespaces##\unskip\multistrut - }\cr -} -\def\Emultitable{% - \crcr - \egroup % end the \halign - \global\setpercentfalse -} - -\def\setmultitablespacing{% - \def\multistrut{\strut}% just use the standard line spacing - % - % Compute \multitablelinespace (if not defined by user) for use in - % \multitableparskip calculation. We used define \multistrut based on - % this, but (ironically) that caused the spacing to be off. - % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100. -\ifdim\multitablelinespace=0pt -\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip -\global\advance\multitablelinespace by-\ht0 -\fi -% Test to see if parskip is larger than space between lines of -% table. If not, do nothing. -% If so, set to same dimension as multitablelinespace. -\ifdim\multitableparskip>\multitablelinespace -\global\multitableparskip=\multitablelinespace -\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller - % than skip between lines in the table. -\fi% -\ifdim\multitableparskip=0pt -\global\multitableparskip=\multitablelinespace -\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller - % than skip between lines in the table. -\fi} - - -\message{conditionals,} - -% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext, -% @ifnotxml always succeed. They currently do nothing; we don't -% attempt to check whether the conditionals are properly nested. But we -% have to remember that they are conditionals, so that @end doesn't -% attempt to close an environment group. -% -\def\makecond#1{% - \expandafter\let\csname #1\endcsname = \relax - \expandafter\let\csname iscond.#1\endcsname = 1 -} -\makecond{iftex} -\makecond{ifnotdocbook} -\makecond{ifnothtml} -\makecond{ifnotinfo} -\makecond{ifnotplaintext} -\makecond{ifnotxml} - -% Ignore @ignore, @ifhtml, @ifinfo, and the like. -% -\def\direntry{\doignore{direntry}} -\def\documentdescription{\doignore{documentdescription}} -\def\docbook{\doignore{docbook}} -\def\html{\doignore{html}} -\def\ifdocbook{\doignore{ifdocbook}} -\def\ifhtml{\doignore{ifhtml}} -\def\ifinfo{\doignore{ifinfo}} -\def\ifnottex{\doignore{ifnottex}} -\def\ifplaintext{\doignore{ifplaintext}} -\def\ifxml{\doignore{ifxml}} -\def\ignore{\doignore{ignore}} -\def\menu{\doignore{menu}} -\def\xml{\doignore{xml}} - -% Ignore text until a line `@end #1', keeping track of nested conditionals. -% -% A count to remember the depth of nesting. -\newcount\doignorecount - -\def\doignore#1{\begingroup - % Scan in ``verbatim'' mode: - \obeylines - \catcode`\@ = \other - \catcode`\{ = \other - \catcode`\} = \other - % - % Make sure that spaces turn into tokens that match what \doignoretext wants. - \spaceisspace - % - % Count number of #1's that we've seen. - \doignorecount = 0 - % - % Swallow text until we reach the matching `@end #1'. - \dodoignore{#1}% -} - -{ \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source. - \obeylines % - % - \gdef\dodoignore#1{% - % #1 contains the command name as a string, e.g., `ifinfo'. - % - % Define a command to find the next `@end #1'. - \long\def\doignoretext##1^^M@end #1{% - \doignoretextyyy##1^^M@#1\_STOP_}% - % - % And this command to find another #1 command, at the beginning of a - % line. (Otherwise, we would consider a line `@c @ifset', for - % example, to count as an @ifset for nesting.) - \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}% - % - % And now expand that command. - \doignoretext ^^M% - }% -} - -\def\doignoreyyy#1{% - \def\temp{#1}% - \ifx\temp\empty % Nothing found. - \let\next\doignoretextzzz - \else % Found a nested condition, ... - \advance\doignorecount by 1 - \let\next\doignoretextyyy % ..., look for another. - % If we're here, #1 ends with ^^M\ifinfo (for example). - \fi - \next #1% the token \_STOP_ is present just after this macro. -} - -% We have to swallow the remaining "\_STOP_". -% -\def\doignoretextzzz#1{% - \ifnum\doignorecount = 0 % We have just found the outermost @end. - \let\next\enddoignore - \else % Still inside a nested condition. - \advance\doignorecount by -1 - \let\next\doignoretext % Look for the next @end. - \fi - \next -} - -% Finish off ignored text. -{ \obeylines% - % Ignore anything after the last `@end #1'; this matters in verbatim - % environments, where otherwise the newline after an ignored conditional - % would result in a blank line in the output. - \gdef\enddoignore#1^^M{\endgroup\ignorespaces}% -} - - -% @set VAR sets the variable VAR to an empty value. -% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE. -% -% Since we want to separate VAR from REST-OF-LINE (which might be -% empty), we can't just use \parsearg; we have to insert a space of our -% own to delimit the rest of the line, and then take it out again if we -% didn't need it. -% We rely on the fact that \parsearg sets \catcode`\ =10. -% -\parseargdef\set{\setyyy#1 \endsetyyy} -\def\setyyy#1 #2\endsetyyy{% - {% - \makevalueexpandable - \def\temp{#2}% - \edef\next{\gdef\makecsname{SET#1}}% - \ifx\temp\empty - \next{}% - \else - \setzzz#2\endsetzzz - \fi - }% -} -% Remove the trailing space \setxxx inserted. -\def\setzzz#1 \endsetzzz{\next{#1}} - -% @clear VAR clears (i.e., unsets) the variable VAR. -% -\parseargdef\clear{% - {% - \makevalueexpandable - \global\expandafter\let\csname SET#1\endcsname=\relax - }% -} - -% @value{foo} gets the text saved in variable foo. -\def\value{\begingroup\makevalueexpandable\valuexxx} -\def\valuexxx#1{\expandablevalue{#1}\endgroup} -{ - \catcode`\-=\active \catcode`\_=\active - % - \gdef\makevalueexpandable{% - \let\value = \expandablevalue - % We don't want these characters active, ... - \catcode`\-=\other \catcode`\_=\other - % ..., but we might end up with active ones in the argument if - % we're called from @code, as @code{@value{foo-bar_}}, though. - % So \let them to their normal equivalents. - \let-\normaldash \let_\normalunderscore - } -} - -% We have this subroutine so that we can handle at least some @value's -% properly in indexes (we call \makevalueexpandable in \indexdummies). -% The command has to be fully expandable (if the variable is set), since -% the result winds up in the index file. This means that if the -% variable's value contains other Texinfo commands, it's almost certain -% it will fail (although perhaps we could fix that with sufficient work -% to do a one-level expansion on the result, instead of complete). -% -% Unfortunately, this has the consequence that when _ is in the *value* -% of an @set, it does not print properly in the roman fonts (get the cmr -% dot accent at position 126 instead). No fix comes to mind, and it's -% been this way since 2003 or earlier, so just ignore it. -% -\def\expandablevalue#1{% - \expandafter\ifx\csname SET#1\endcsname\relax - {[No value for ``#1'']}% - \message{Variable `#1', used in @value, is not set.}% - \else - \csname SET#1\endcsname - \fi -} - -% Like \expandablevalue, but completely expandable (the \message in the -% definition above operates at the execution level of TeX). Used when -% writing to auxiliary files, due to the expansion that \write does. -% If flag is undefined, pass through an unexpanded @value command: maybe it -% will be set by the time it is read back in. -% -% NB flag names containing - or _ may not work here. -\def\dummyvalue#1{% - \expandafter\ifx\csname SET#1\endcsname\relax - \noexpand\value{#1}% - \else - \csname SET#1\endcsname - \fi -} - -% Used for @value's in index entries to form the sort key: expand the @value -% if possible, otherwise sort late. -\def\indexnofontsvalue#1{% - \expandafter\ifx\csname SET#1\endcsname\relax - ZZZZZZZ - \else - \csname SET#1\endcsname - \fi -} - -% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined -% with @set. -% -% To get the special treatment we need for `@end ifset,' we call -% \makecond and then redefine. -% -\makecond{ifset} -\def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}} -\def\doifset#1#2{% - {% - \makevalueexpandable - \let\next=\empty - \expandafter\ifx\csname SET#2\endcsname\relax - #1% If not set, redefine \next. - \fi - \expandafter - }\next -} -\def\ifsetfail{\doignore{ifset}} - -% @ifclear VAR ... @end executes the `...' iff VAR has never been -% defined with @set, or has been undefined with @clear. -% -% The `\else' inside the `\doifset' parameter is a trick to reuse the -% above code: if the variable is not set, do nothing, if it is set, -% then redefine \next to \ifclearfail. -% -\makecond{ifclear} -\def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}} -\def\ifclearfail{\doignore{ifclear}} - -% @ifcommandisdefined CMD ... @end executes the `...' if CMD (written -% without the @) is in fact defined. We can only feasibly check at the -% TeX level, so something like `mathcode' is going to considered -% defined even though it is not a Texinfo command. -% -\makecond{ifcommanddefined} -\def\ifcommanddefined{\parsearg{\doifcmddefined{\let\next=\ifcmddefinedfail}}} -% -\def\doifcmddefined#1#2{{% - \makevalueexpandable - \let\next=\empty - \expandafter\ifx\csname #2\endcsname\relax - #1% If not defined, \let\next as above. - \fi - \expandafter - }\next -} -\def\ifcmddefinedfail{\doignore{ifcommanddefined}} - -% @ifcommandnotdefined CMD ... handled similar to @ifclear above. -\makecond{ifcommandnotdefined} -\def\ifcommandnotdefined{% - \parsearg{\doifcmddefined{\else \let\next=\ifcmdnotdefinedfail}}} -\def\ifcmdnotdefinedfail{\doignore{ifcommandnotdefined}} - -% Set the `txicommandconditionals' variable, so documents have a way to -% test if the @ifcommand...defined conditionals are available. -\set txicommandconditionals - -% @dircategory CATEGORY -- specify a category of the dir file -% which this file should belong to. Ignore this in TeX. -\let\dircategory=\comment - -% @defininfoenclose. -\let\definfoenclose=\comment - - -\message{indexing,} -% Index generation facilities - -% Define \newwrite to be identical to plain tex's \newwrite -% except not \outer, so it can be used within macros and \if's. -\edef\newwrite{\makecsname{ptexnewwrite}} - -% \newindex {foo} defines an index named IX. -% It automatically defines \IXindex such that -% \IXindex ...rest of line... puts an entry in the index IX. -% It also defines \IXindfile to be the number of the output channel for -% the file that accumulates this index. The file's extension is IX. -% The name of an index should be no more than 2 characters long -% for the sake of vms. -% -\def\newindex#1{% - \expandafter\chardef\csname#1indfile\endcsname=0 - \expandafter\xdef\csname#1index\endcsname{% % Define @#1index - \noexpand\doindex{#1}} -} - -% @defindex foo == \newindex{foo} -% -\def\defindex{\parsearg\newindex} - -% Define @defcodeindex, like @defindex except put all entries in @code. -% -\def\defcodeindex{\parsearg\newcodeindex} -% -\def\newcodeindex#1{% - \expandafter\chardef\csname#1indfile\endcsname=0 - \expandafter\xdef\csname#1index\endcsname{% - \noexpand\docodeindex{#1}}% -} - -% The default indices: -\newindex{cp}% concepts, -\newcodeindex{fn}% functions, -\newcodeindex{vr}% variables, -\newcodeindex{tp}% types, -\newcodeindex{ky}% keys -\newcodeindex{pg}% and programs. - - -% @synindex foo bar makes index foo feed into index bar. -% Do this instead of @defindex foo if you don't want it as a separate index. -% -% @syncodeindex foo bar similar, but put all entries made for index foo -% inside @code. -% -\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}} -\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}} - -% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo), -% #3 the target index (bar). -\def\dosynindex#1#2#3{% - \requireopenindexfile{#3}% - % redefine \fooindfile: - \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname - \expandafter\let\csname#2indfile\endcsname=\temp - % redefine \fooindex: - \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}% -} - -% Define \doindex, the driver for all index macros. -% Argument #1 is generated by the calling \fooindex macro, -% and it is the two-letter name of the index. - -\def\doindex#1{\edef\indexname{#1}\parsearg\doindexxxx} -\def\doindexxxx #1{\doind{\indexname}{#1}} - -% like the previous two, but they put @code around the argument. -\def\docodeindex#1{\edef\indexname{#1}\parsearg\docodeindexxxx} -\def\docodeindexxxx #1{\doind{\indexname}{\code{#1}}} - - -% Used when writing an index entry out to an index file to prevent -% expansion of Texinfo commands that can appear in an index entry. -% -\def\indexdummies{% - \escapechar = `\\ % use backslash in output files. - \definedummyletter\@% - \definedummyletter\ % - % - % For texindex which always views { and } as separators. - \def\{{\lbracechar{}}% - \def\}{\rbracechar{}}% - % - % Do the redefinitions. - \definedummies -} - -% Used for the aux and toc files, where @ is the escape character. -% -\def\atdummies{% - \definedummyletter\@% - \definedummyletter\ % - \definedummyletter\{% - \definedummyletter\}% - % - % Do the redefinitions. - \definedummies - \otherbackslash -} - -% \definedummyword defines \#1 as \string\#1\space, thus effectively -% preventing its expansion. This is used only for control words, -% not control letters, because the \space would be incorrect for -% control characters, but is needed to separate the control word -% from whatever follows. -% -% These can be used both for control words that take an argument and -% those that do not. If it is followed by {arg} in the input, then -% that will dutifully get written to the index (or wherever). -% -% For control letters, we have \definedummyletter, which omits the -% space. -% -\def\definedummyword #1{\def#1{\string#1\space}}% -\def\definedummyletter#1{\def#1{\string#1}}% -\let\definedummyaccent\definedummyletter - -% Called from \indexdummies and \atdummies, to effectively prevent -% the expansion of commands. -% -\def\definedummies{% - % - \let\commondummyword\definedummyword - \let\commondummyletter\definedummyletter - \let\commondummyaccent\definedummyaccent - \commondummiesnofonts - % - \definedummyletter\_% - \definedummyletter\-% - % - % Non-English letters. - \definedummyword\AA - \definedummyword\AE - \definedummyword\DH - \definedummyword\L - \definedummyword\O - \definedummyword\OE - \definedummyword\TH - \definedummyword\aa - \definedummyword\ae - \definedummyword\dh - \definedummyword\exclamdown - \definedummyword\l - \definedummyword\o - \definedummyword\oe - \definedummyword\ordf - \definedummyword\ordm - \definedummyword\questiondown - \definedummyword\ss - \definedummyword\th - % - % Although these internal commands shouldn't show up, sometimes they do. - \definedummyword\bf - \definedummyword\gtr - \definedummyword\hat - \definedummyword\less - \definedummyword\sf - \definedummyword\sl - \definedummyword\tclose - \definedummyword\tt - % - \definedummyword\LaTeX - \definedummyword\TeX - % - % Assorted special characters. - \definedummyword\atchar - \definedummyword\arrow - \definedummyword\bullet - \definedummyword\comma - \definedummyword\copyright - \definedummyword\registeredsymbol - \definedummyword\dots - \definedummyword\enddots - \definedummyword\entrybreak - \definedummyword\equiv - \definedummyword\error - \definedummyword\euro - \definedummyword\expansion - \definedummyword\geq - \definedummyword\guillemetleft - \definedummyword\guillemetright - \definedummyword\guilsinglleft - \definedummyword\guilsinglright - \definedummyword\lbracechar - \definedummyword\leq - \definedummyword\mathopsup - \definedummyword\minus - \definedummyword\ogonek - \definedummyword\pounds - \definedummyword\point - \definedummyword\print - \definedummyword\quotedblbase - \definedummyword\quotedblleft - \definedummyword\quotedblright - \definedummyword\quoteleft - \definedummyword\quoteright - \definedummyword\quotesinglbase - \definedummyword\rbracechar - \definedummyword\result - \definedummyword\sub - \definedummyword\sup - \definedummyword\textdegree - % - % We want to disable all macros so that they are not expanded by \write. - \macrolist - \let\value\dummyvalue - % - \normalturnoffactive -} - -% \commondummiesnofonts: common to \definedummies and \indexnofonts. -% Define \commondummyletter, \commondummyaccent and \commondummyword before -% using. Used for accents, font commands, and various control letters. -% -\def\commondummiesnofonts{% - % Control letters and accents. - \commondummyletter\!% - \commondummyaccent\"% - \commondummyaccent\'% - \commondummyletter\*% - \commondummyaccent\,% - \commondummyletter\.% - \commondummyletter\/% - \commondummyletter\:% - \commondummyaccent\=% - \commondummyletter\?% - \commondummyaccent\^% - \commondummyaccent\`% - \commondummyaccent\~% - \commondummyword\u - \commondummyword\v - \commondummyword\H - \commondummyword\dotaccent - \commondummyword\ogonek - \commondummyword\ringaccent - \commondummyword\tieaccent - \commondummyword\ubaraccent - \commondummyword\udotaccent - \commondummyword\dotless - % - % Texinfo font commands. - \commondummyword\b - \commondummyword\i - \commondummyword\r - \commondummyword\sansserif - \commondummyword\sc - \commondummyword\slanted - \commondummyword\t - % - % Commands that take arguments. - \commondummyword\abbr - \commondummyword\acronym - \commondummyword\anchor - \commondummyword\cite - \commondummyword\code - \commondummyword\command - \commondummyword\dfn - \commondummyword\dmn - \commondummyword\email - \commondummyword\emph - \commondummyword\env - \commondummyword\file - \commondummyword\image - \commondummyword\indicateurl - \commondummyword\inforef - \commondummyword\kbd - \commondummyword\key - \commondummyword\math - \commondummyword\option - \commondummyword\pxref - \commondummyword\ref - \commondummyword\samp - \commondummyword\strong - \commondummyword\tie - \commondummyword\U - \commondummyword\uref - \commondummyword\url - \commondummyword\var - \commondummyword\verb - \commondummyword\w - \commondummyword\xref -} - -% For testing: output @{ and @} in index sort strings as \{ and \}. -\newif\ifusebracesinindexes - -\let\indexlbrace\relax -\let\indexrbrace\relax - -{\catcode`\@=0 -\catcode`\\=13 - @gdef@backslashdisappear{@def\{}} -} - -{ -\catcode`\<=13 -\catcode`\-=13 -\catcode`\`=13 - \gdef\indexnonalnumdisappear{% - \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax\else - % @set txiindexlquoteignore makes us ignore left quotes in the sort term. - % (Introduced for FSFS 2nd ed.) - \let`=\empty - \fi - % - \expandafter\ifx\csname SETtxiindexbackslashignore\endcsname\relax\else - \backslashdisappear - \fi - % - \expandafter\ifx\csname SETtxiindexhyphenignore\endcsname\relax\else - \def-{}% - \fi - \expandafter\ifx\csname SETtxiindexlessthanignore\endcsname\relax\else - \def<{}% - \fi - \expandafter\ifx\csname SETtxiindexatsignignore\endcsname\relax\else - \def\@{}% - \fi - } - - \gdef\indexnonalnumreappear{% - \useindexbackslash - \let-\normaldash - \let<\normalless - \def\@{@}% - } -} - - -% \indexnofonts is used when outputting the strings to sort the index -% by, and when constructing control sequence names. It eliminates all -% control sequences and just writes whatever the best ASCII sort string -% would be for a given command (usually its argument). -% -\def\indexnofonts{% - % Accent commands should become @asis. - \def\commondummyaccent##1{\let##1\asis}% - % We can just ignore other control letters. - \def\commondummyletter##1{\let##1\empty}% - % All control words become @asis by default; overrides below. - \let\commondummyword\commondummyaccent - \commondummiesnofonts - % - % Don't no-op \tt, since it isn't a user-level command - % and is used in the definitions of the active chars like <, >, |, etc. - % Likewise with the other plain tex font commands. - %\let\tt=\asis - % - \def\ { }% - \def\@{@}% - \def\_{\normalunderscore}% - \def\-{}% @- shouldn't affect sorting - % - \uccode`\1=`\{ \uppercase{\def\{{1}}% - \uccode`\1=`\} \uppercase{\def\}{1}}% - \let\lbracechar\{% - \let\rbracechar\}% - % - % Non-English letters. - \def\AA{AA}% - \def\AE{AE}% - \def\DH{DZZ}% - \def\L{L}% - \def\OE{OE}% - \def\O{O}% - \def\TH{TH}% - \def\aa{aa}% - \def\ae{ae}% - \def\dh{dzz}% - \def\exclamdown{!}% - \def\l{l}% - \def\oe{oe}% - \def\ordf{a}% - \def\ordm{o}% - \def\o{o}% - \def\questiondown{?}% - \def\ss{ss}% - \def\th{th}% - % - \def\LaTeX{LaTeX}% - \def\TeX{TeX}% - % - % Assorted special characters. \defglyph gives the control sequence a - % definition that removes the {} that follows its use. - \defglyph\atchar{@}% - \defglyph\arrow{->}% - \defglyph\bullet{bullet}% - \defglyph\comma{,}% - \defglyph\copyright{copyright}% - \defglyph\dots{...}% - \defglyph\enddots{...}% - \defglyph\equiv{==}% - \defglyph\error{error}% - \defglyph\euro{euro}% - \defglyph\expansion{==>}% - \defglyph\geq{>=}% - \defglyph\guillemetleft{<<}% - \defglyph\guillemetright{>>}% - \defglyph\guilsinglleft{<}% - \defglyph\guilsinglright{>}% - \defglyph\leq{<=}% - \defglyph\lbracechar{\{}% - \defglyph\minus{-}% - \defglyph\point{.}% - \defglyph\pounds{pounds}% - \defglyph\print{-|}% - \defglyph\quotedblbase{"}% - \defglyph\quotedblleft{"}% - \defglyph\quotedblright{"}% - \defglyph\quoteleft{`}% - \defglyph\quoteright{'}% - \defglyph\quotesinglbase{,}% - \defglyph\rbracechar{\}}% - \defglyph\registeredsymbol{R}% - \defglyph\result{=>}% - \defglyph\textdegree{o}% - % - % We need to get rid of all macros, leaving only the arguments (if present). - % Of course this is not nearly correct, but it is the best we can do for now. - % makeinfo does not expand macros in the argument to @deffn, which ends up - % writing an index entry, and texindex isn't prepared for an index sort entry - % that starts with \. - % - % Since macro invocations are followed by braces, we can just redefine them - % to take a single TeX argument. The case of a macro invocation that - % goes to end-of-line is not handled. - % - \macrolist - \let\value\indexnofontsvalue -} -\def\defglyph#1#2{\def#1##1{#2}} % see above - - - - -\let\SETmarginindex=\relax % put index entries in margin (undocumented)? - -% Most index entries go through here, but \dosubind is the general case. -% #1 is the index name, #2 is the entry text. -\def\doind#1#2{\dosubind{#1}{#2}{}} - -% There is also \dosubind {index}{topic}{subtopic} -% which makes an entry in a two-level index such as the operation index. -% TODO: Two-level index? Operation index? - -% Workhorse for all indexes. -% #1 is name of index, #2 is stuff to put there, #3 is subentry -- -% empty if called from \doind, as we usually are (the main exception -% is with most defuns, which call us directly). -% -\def\dosubind#1#2#3{% - \iflinks - {% - \requireopenindexfile{#1}% - % Store the main index entry text (including the third arg). - \toks0 = {#2}% - % If third arg is present, precede it with a space. - \def\thirdarg{#3}% - \ifx\thirdarg\empty \else - \toks0 = \expandafter{\the\toks0 \space #3}% - \fi - % - \edef\writeto{\csname#1indfile\endcsname}% - % - \safewhatsit\dosubindwrite - }% - \fi -} - -% Check if an index file has been opened, and if not, open it. -\def\requireopenindexfile#1{% -\ifnum\csname #1indfile\endcsname=0 - \expandafter\newwrite \csname#1indfile\endcsname - \edef\suffix{#1}% - % A .fls suffix would conflict with the file extension for the output - % of -recorder, so use .f1s instead. - \ifx\suffix\indexisfl\def\suffix{f1}\fi - % Open the file - \immediate\openout\csname#1indfile\endcsname \jobname.\suffix - % Using \immediate above here prevents an object entering into the current - % box, which could confound checks such as those in \safewhatsit for - % preceding skips. - \typeout{Writing index file \jobname.\suffix}% -\fi} -\def\indexisfl{fl} - -% Output \ as {\indexbackslash}, because \ is an escape character in -% the index files. -\let\indexbackslash=\relax -{\catcode`\@=0 \catcode`\\=\active - @gdef@useindexbackslash{@def\{{@indexbackslash}}} -} - -% Definition for writing index entry text. -\def\sortas#1{\ignorespaces}% - -% Definition for writing index entry sort key. Should occur at the at -% the beginning of the index entry, like -% @cindex @sortas{september} \september -% The \ignorespaces takes care of following space, but there's no way -% to remove space before it. -{ -\catcode`\-=13 -\gdef\indexwritesortas{% - \begingroup - \indexnonalnumreappear - \indexwritesortasxxx} -\gdef\indexwritesortasxxx#1{% - \xdef\indexsortkey{#1}\endgroup} -} - - -% Write the entry in \toks0 to the index file. -% -\def\dosubindwrite{% - % Put the index entry in the margin if desired. - \ifx\SETmarginindex\relax\else - \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}% - \fi - % - % Remember, we are within a group. - \indexdummies % Must do this here, since \bf, etc expand at this stage - \useindexbackslash % \indexbackslash isn't defined now so it will be output - % as is; and it will print as backslash. - % The braces around \indexbrace are recognized by texindex. - % - % Get the string to sort by, by processing the index entry with all - % font commands turned off. - {\indexnofonts - \def\lbracechar{{\indexlbrace}}% - \def\rbracechar{{\indexrbrace}}% - \let\{=\lbracechar - \let\}=\rbracechar - \indexnonalnumdisappear - \xdef\indexsortkey{}% - \let\sortas=\indexwritesortas - \edef\temp{\the\toks0}% - \setbox\dummybox = \hbox{\temp}% Make sure to execute any \sortas - \ifx\indexsortkey\empty - \xdef\indexsortkey{\temp}% - \ifx\indexsortkey\empty\xdef\indexsortkey{ }\fi - \fi - }% - % - % Set up the complete index entry, with both the sort key and - % the original text, including any font commands. We write - % three arguments to \entry to the .?? file (four in the - % subentry case), texindex reduces to two when writing the .??s - % sorted result. - \edef\temp{% - \write\writeto{% - \string\entry{\indexsortkey}{\noexpand\folio}{\the\toks0}}% - }% - \temp -} -\newbox\dummybox % used above - -% Take care of unwanted page breaks/skips around a whatsit: -% -% If a skip is the last thing on the list now, preserve it -% by backing up by \lastskip, doing the \write, then inserting -% the skip again. Otherwise, the whatsit generated by the -% \write or \pdfdest will make \lastskip zero. The result is that -% sequences like this: -% @end defun -% @tindex whatever -% @defun ... -% will have extra space inserted, because the \medbreak in the -% start of the @defun won't see the skip inserted by the @end of -% the previous defun. -% -% But don't do any of this if we're not in vertical mode. We -% don't want to do a \vskip and prematurely end a paragraph. -% -% Avoid page breaks due to these extra skips, too. -% -% But wait, there is a catch there: -% We'll have to check whether \lastskip is zero skip. \ifdim is not -% sufficient for this purpose, as it ignores stretch and shrink parts -% of the skip. The only way seems to be to check the textual -% representation of the skip. -% -% The following is almost like \def\zeroskipmacro{0.0pt} except that -% the ``p'' and ``t'' characters have catcode \other, not 11 (letter). -% -\edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname} -% -\newskip\whatsitskip -\newcount\whatsitpenalty -% -% ..., ready, GO: -% -\def\safewhatsit#1{\ifhmode - #1% - \else - % \lastskip and \lastpenalty cannot both be nonzero simultaneously. - \whatsitskip = \lastskip - \edef\lastskipmacro{\the\lastskip}% - \whatsitpenalty = \lastpenalty - % - % If \lastskip is nonzero, that means the last item was a - % skip. And since a skip is discardable, that means this - % -\whatsitskip glue we're inserting is preceded by a - % non-discardable item, therefore it is not a potential - % breakpoint, therefore no \nobreak needed. - \ifx\lastskipmacro\zeroskipmacro - \else - \vskip-\whatsitskip - \fi - % - #1% - % - \ifx\lastskipmacro\zeroskipmacro - % If \lastskip was zero, perhaps the last item was a penalty, and - % perhaps it was >=10000, e.g., a \nobreak. In that case, we want - % to re-insert the same penalty (values >10000 are used for various - % signals); since we just inserted a non-discardable item, any - % following glue (such as a \parskip) would be a breakpoint. For example: - % @deffn deffn-whatever - % @vindex index-whatever - % Description. - % would allow a break between the index-whatever whatsit - % and the "Description." paragraph. - \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi - \else - % On the other hand, if we had a nonzero \lastskip, - % this make-up glue would be preceded by a non-discardable item - % (the whatsit from the \write), so we must insert a \nobreak. - \nobreak\vskip\whatsitskip - \fi -\fi} - -% The index entry written in the file actually looks like -% \entry {sortstring}{page}{topic} -% or -% \entry {sortstring}{page}{topic}{subtopic} -% The texindex program reads in these files and writes files -% containing these kinds of lines: -% \initial {c} -% before the first topic whose initial is c -% \entry {topic}{pagelist} -% for a topic that is used without subtopics -% \primary {topic} -% for the beginning of a topic that is used with subtopics -% \secondary {subtopic}{pagelist} -% for each subtopic. - -% Define the user-accessible indexing commands -% @findex, @vindex, @kindex, @cindex. - -\def\findex {\fnindex} -\def\kindex {\kyindex} -\def\cindex {\cpindex} -\def\vindex {\vrindex} -\def\tindex {\tpindex} -\def\pindex {\pgindex} - -\def\cindexsub {\begingroup\obeylines\cindexsub} -{\obeylines % -\gdef\cindexsub "#1" #2^^M{\endgroup % -\dosubind{cp}{#2}{#1}}} - -% Define the macros used in formatting output of the sorted index material. - -% @printindex causes a particular index (the ??s file) to get printed. -% It does not print any chapter heading (usually an @unnumbered). -% -\parseargdef\printindex{\begingroup - \dobreak \chapheadingskip{10000}% - % - \smallfonts \rm - \tolerance = 9500 - \plainfrenchspacing - \everypar = {}% don't want the \kern\-parindent from indentation suppression. - % - % See if the index file exists and is nonempty. - % Change catcode of @ here so that if the index file contains - % \initial {@} - % as its first line, TeX doesn't complain about mismatched braces - % (because it thinks @} is a control sequence). - \catcode`\@ = 12 - % See comment in \requireopenindexfile. - \def\indexname{#1}\ifx\indexname\indexisfl\def\indexname{f1}\fi - \openin 1 \jobname.\indexname s - \ifeof 1 - % \enddoublecolumns gets confused if there is no text in the index, - % and it loses the chapter title and the aux file entries for the - % index. The easiest way to prevent this problem is to make sure - % there is some text. - \putwordIndexNonexistent - \typeout{No file \jobname.\indexname s.}% - \else - \catcode`\\ = 0 - % - % If the index file exists but is empty, then \openin leaves \ifeof - % false. We have to make TeX try to read something from the file, so - % it can discover if there is anything in it. - \read 1 to \thisline - \ifeof 1 - \putwordIndexIsEmpty - \else - % Index files are almost Texinfo source, but we use \ as the escape - % character. It would be better to use @, but that's too big a change - % to make right now. - \def\indexbackslash{\ttbackslash}% - \let\indexlbrace\{ % Likewise, set these sequences for braces - \let\indexrbrace\} % used in the sort key. - \begindoublecolumns - \let\dotheinsertentrybox\dotheinsertentryboxwithpenalty - % - % Read input from the index file line by line. - \loopdo - \ifeof1 \else - \read 1 to \nextline - \fi - % - \indexinputprocessing - \thisline - % - \ifeof1\else - \let\thisline\nextline - \repeat - %% - \enddoublecolumns - \fi - \fi - \closein 1 -\endgroup} -\def\loopdo#1\repeat{\def\body{#1}\loopdoxxx} -\def\loopdoxxx{\let\next=\relax\body\let\next=\loopdoxxx\fi\next} - -\def\indexinputprocessing{% - \ifeof1 - \let\firsttoken\relax - \else - \edef\act{\gdef\noexpand\firsttoken{\getfirsttoken\nextline}}% - \act - \fi -} -\def\getfirsttoken#1{\expandafter\getfirsttokenx#1\endfirsttoken} -\long\def\getfirsttokenx#1#2\endfirsttoken{\noexpand#1} - - -% These macros are used by the sorted index file itself. -% Change them to control the appearance of the index. - -{\catcode`\/=13 \catcode`\-=13 \catcode`\^=13 \catcode`\~=13 \catcode`\_=13 -\catcode`\|=13 \catcode`\<=13 \catcode`\>=13 \catcode`\+=13 \catcode`\"=13 -\catcode`\$=3 -\gdef\initialglyphs{% - % Some changes for non-alphabetic characters. Using the glyphs from the - % math fonts looks more consistent than the typewriter font used elsewhere - % for these characters. - \def\indexbackslash{\math{\backslash}}% - \let\\=\indexbackslash - % - % Can't get bold backslash so don't use bold forward slash - \catcode`\/=13 - \def/{{\secrmnotbold \normalslash}}% - \def-{{\normaldash\normaldash}}% en dash `--' - \def^{{\chapbf \normalcaret}}% - \def~{{\chapbf \normaltilde}}% - \def\_{% - \leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }% - \def|{$\vert$}% - \def<{$\less$}% - \def>{$\gtr$}% - \def+{$\normalplus$}% -}} - -\def\initial{% - \bgroup - \initialglyphs - \initialx -} - -\def\initialx#1{% - % Remove any glue we may have, we'll be inserting our own. - \removelastskip - % - % We like breaks before the index initials, so insert a bonus. - % The glue before the bonus allows a little bit of space at the - % bottom of a column to reduce an increase in inter-line spacing. - \nobreak - \vskip 0pt plus 5\baselineskip - \penalty -300 - \vskip 0pt plus -5\baselineskip - % - % Typeset the initial. Making this add up to a whole number of - % baselineskips increases the chance of the dots lining up from column - % to column. It still won't often be perfect, because of the stretch - % we need before each entry, but it's better. - % - % No shrink because it confuses \balancecolumns. - \vskip 1.67\baselineskip plus 1\baselineskip - \leftline{\secfonts \kern-0.05em \secbf #1}% - % \secfonts is inside the argument of \leftline so that the change of - % \baselineskip will not affect any glue inserted before the vbox that - % \leftline creates. - % Do our best not to break after the initial. - \nobreak - \vskip .33\baselineskip plus .1\baselineskip - \egroup % \initialglyphs -} - -\newdimen\entryrightmargin -\entryrightmargin=0pt - -% \entry typesets a paragraph consisting of the text (#1), dot leaders, and -% then page number (#2) flushed to the right margin. It is used for index -% and table of contents entries. The paragraph is indented by \leftskip. -% -\def\entry{% - \begingroup - % - % For pdfTeX and XeTeX. - % The redefinition of \domark stops marks being added in \pdflink to - % preserve coloured links across page boundaries. Otherwise the marks - % would get in the way of \lastbox in \insertentrybox. - \let\domark\relax - % - % Start a new paragraph if necessary, so our assignments below can't - % affect previous text. - \par - % - % No extra space above this paragraph. - \parskip = 0in - % - % When reading the text of entry, convert explicit line breaks - % from @* into spaces. The user might give these in long section - % titles, for instance. - \def\*{\unskip\space\ignorespaces}% - \def\entrybreak{\hfil\break}% An undocumented command - % - % Swallow the left brace of the text (first parameter): - \afterassignment\doentry - \let\temp = -} -\def\entrybreak{\unskip\space\ignorespaces}% -\def\doentry{% - % Save the text of the entry - \global\setbox\boxA=\hbox\bgroup - \bgroup % Instead of the swallowed brace. - \noindent - \aftergroup\finishentry - % And now comes the text of the entry. - % Not absorbing as a macro argument reduces the chance of problems - % with catcodes occurring. -} -{\catcode`\@=11 -\gdef\finishentry#1{% - \egroup % end box A - \dimen@ = \wd\boxA % Length of text of entry - \global\setbox\boxA=\hbox\bgroup\unhbox\boxA - % #1 is the page number. - % - % Get the width of the page numbers, and only use - % leaders if they are present. - \global\setbox\boxB = \hbox{#1}% - \ifdim\wd\boxB = 0pt - \null\nobreak\hfill\ % - \else - % - \null\nobreak\indexdotfill % Have leaders before the page number. - % - \ifpdf - \pdfgettoks#1.% - \hskip\skip\thinshrinkable\the\toksA - \else - \ifx\XeTeXrevision\thisisundefined - \hskip\skip\thinshrinkable #1% - \else - \pdfgettoks#1.% - \hskip\skip\thinshrinkable\the\toksA - \fi - \fi - \fi - \egroup % end \boxA - \ifdim\wd\boxB = 0pt - \global\setbox\entrybox=\vbox{\unhbox\boxA}% - \else - \global\setbox\entrybox=\vbox\bgroup - % We want the text of the entries to be aligned to the left, and the - % page numbers to be aligned to the right. - % - \parindent = 0pt - \advance\leftskip by 0pt plus 1fil - \advance\leftskip by 0pt plus -1fill - \rightskip = 0pt plus -1fil - \advance\rightskip by 0pt plus 1fill - % Cause last line, which could consist of page numbers on their own - % if the list of page numbers is long, to be aligned to the right. - \parfillskip=0pt plus -1fill - % - \advance\rightskip by \entryrightmargin - % Determine how far we can stretch into the margin. - % This allows, e.g., "Appendix H GNU Free Documentation License" to - % fit on one line in @letterpaper format. - \ifdim\entryrightmargin>2.1em - \dimen@i=2.1em - \else - \dimen@i=0em - \fi - \advance \parfillskip by 0pt minus 1\dimen@i - % - \dimen@ii = \hsize - \advance\dimen@ii by -1\leftskip - \advance\dimen@ii by -1\entryrightmargin - \advance\dimen@ii by 1\dimen@i - \ifdim\wd\boxA > \dimen@ii % If the entry doesn't fit in one line - \ifdim\dimen@ > 0.8\dimen@ii % due to long index text - % Try to split the text roughly evenly. \dimen@ will be the length of - % the first line. - \dimen@ = 0.7\dimen@ - \dimen@ii = \hsize - \ifnum\dimen@>\dimen@ii - % If the entry is too long (for example, if it needs more than - % two lines), use all the space in the first line. - \dimen@ = \dimen@ii - \fi - \advance\leftskip by 0pt plus 1fill % ragged right - \advance \dimen@ by 1\rightskip - \parshape = 2 0pt \dimen@ 0em \dimen@ii - % Ideally we'd add a finite glue at the end of the first line only, - % instead of using \parshape with explicit line lengths, but TeX - % doesn't seem to provide a way to do such a thing. - % - % Indent all lines but the first one. - \advance\leftskip by 1em - \advance\parindent by -1em - \fi\fi - \indent % start paragraph - \unhbox\boxA - % - % Do not prefer a separate line ending with a hyphen to fewer lines. - \finalhyphendemerits = 0 - % - % Word spacing - no stretch - \spaceskip=\fontdimen2\font minus \fontdimen4\font - % - \linepenalty=1000 % Discourage line breaks. - \hyphenpenalty=5000 % Discourage hyphenation. - % - \par % format the paragraph - \egroup % The \vbox - \fi - \endgroup - \dotheinsertentrybox -}} - -\newskip\thinshrinkable -\skip\thinshrinkable=.15em minus .15em - -\newbox\entrybox -\def\insertentrybox{% - \ourunvbox\entrybox -} - -% default definition -\let\dotheinsertentrybox\insertentrybox - -% Use \lastbox to take apart vbox box by box, and add each sub-box -% to the current vertical list. -\def\ourunvbox#1{% -\bgroup % for local binding of \delayedbox - % Remove the last box from box #1 - \global\setbox#1=\vbox{% - \unvbox#1% - \unskip % remove any glue - \unpenalty - \global\setbox\interbox=\lastbox - }% - \setbox\delayedbox=\box\interbox - \ifdim\ht#1=0pt\else - \ourunvbox#1 % Repeat on what's left of the box - \nobreak - \fi - \box\delayedbox -\egroup -} -\newbox\delayedbox -\newbox\interbox - -% Used from \printindex. \firsttoken should be the first token -% after the \entry. If it's not another \entry, we are at the last -% line of a group of index entries, so insert a penalty to discourage -% widowed index entries. -\def\dotheinsertentryboxwithpenalty{% - \ifx\firsttoken\isentry - \else - \penalty 9000 - \fi - \insertentrybox -} -\def\isentry{\entry}% - -% Like plain.tex's \dotfill, except uses up at least 1 em. -% The filll stretch here overpowers both the fil and fill stretch to push -% the page number to the right. -\def\indexdotfill{\cleaders - \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1filll} - - -\def\primary #1{\line{#1\hfil}} - -\newskip\secondaryindent \secondaryindent=0.5cm -\def\secondary#1#2{{% - \parfillskip=0in - \parskip=0in - \hangindent=1in - \hangafter=1 - \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill - \ifpdf - \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. - \else - \ifx\XeTeXrevision\thisisundefined - #2 - \else - \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. - \fi - \fi - \par -}} - -% Define two-column mode, which we use to typeset indexes. -% Adapted from the TeXbook, page 416, which is to say, -% the manmac.tex format used to print the TeXbook itself. -\catcode`\@=11 % private names - -\newbox\partialpage -\newdimen\doublecolumnhsize - -% Use inside an output routine to save \topmark and \firstmark -\def\savemarks{% - \global\savedtopmark=\expandafter{\topmark }% - \global\savedfirstmark=\expandafter{\firstmark }% -} -\newtoks\savedtopmark -\newtoks\savedfirstmark - -% Set \topmark and \firstmark for next time \output runs. -% Can't be run from withinside \output (because any material -% added while an output routine is active, including -% penalties, is saved for after it finishes). The page so far -% should be empty, otherwise what's on it will be thrown away. -\def\restoremarks{% - \mark{\the\savedtopmark}% - \bgroup\output = {% - \setbox\dummybox=\box\PAGE - }abc\eject\egroup - % "abc" because output routine doesn't fire for a completely empty page. - \mark{\the\savedfirstmark}% -} - -\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns - % If not much space left on page, start a new page. - \ifdim\pagetotal>0.8\vsize\vfill\eject\fi - % - % Grab any single-column material above us. - \output = {% - % - % Here is a possibility not foreseen in manmac: if we accumulate a - % whole lot of material, we might end up calling this \output - % routine twice in a row (see the doublecol-lose test, which is - % essentially a couple of indexes with @setchapternewpage off). In - % that case we just ship out what is in \partialpage with the normal - % output routine. Generally, \partialpage will be empty when this - % runs and this will be a no-op. See the indexspread.tex test case. - \ifvoid\partialpage \else - \onepageout{\pagecontents\partialpage}% - \fi - % - \global\setbox\partialpage = \vbox{% - % Unvbox the main output page. - \unvbox\PAGE - \kern-\topskip \kern\baselineskip - }% - \savemarks - }% - \eject % run that output routine to set \partialpage - \restoremarks - % - % We recover the two marks that the last output routine saved in order - % to propagate the information in marks added around a chapter heading, - % which could be otherwise be lost by the time the final page is output. - % - % - % Use the double-column output routine for subsequent pages. - \output = {\doublecolumnout}% - % - % Change the page size parameters. We could do this once outside this - % routine, in each of @smallbook, @afourpaper, and the default 8.5x11 - % format, but then we repeat the same computation. Repeating a couple - % of assignments once per index is clearly meaningless for the - % execution time, so we may as well do it in one place. - % - % First we halve the line length, less a little for the gutter between - % the columns. We compute the gutter based on the line length, so it - % changes automatically with the paper format. The magic constant - % below is chosen so that the gutter has the same value (well, +-<1pt) - % as it did when we hard-coded it. - % - % We put the result in a separate register, \doublecolumhsize, so we - % can restore it in \pagesofar, after \hsize itself has (potentially) - % been clobbered. - % - \doublecolumnhsize = \hsize - \advance\doublecolumnhsize by -.04154\hsize - \divide\doublecolumnhsize by 2 - \hsize = \doublecolumnhsize - % - % Double the \vsize as well. - \advance\vsize by -\ht\partialpage - \vsize = 2\vsize - % - % For the benefit of balancing columns - \advance\baselineskip by 0pt plus 0.5pt -} - -% The double-column output routine for all double-column pages except -% the last, which is done by \balancecolumns. -% -\def\doublecolumnout{% - % - \splittopskip=\topskip \splitmaxdepth=\maxdepth - % Get the available space for the double columns -- the normal - % (undoubled) page height minus any material left over from the - % previous page. - \dimen@ = \vsize - \divide\dimen@ by 2 - % - % box0 will be the left-hand column, box2 the right. - \setbox0=\vsplit\PAGE to\dimen@ \setbox2=\vsplit\PAGE to\dimen@ - \global\advance\vsize by 2\ht\partialpage - \onepageout\pagesofar - \unvbox\PAGE - \penalty\outputpenalty -} -% -% Re-output the contents of the output page -- any previous material, -% followed by the two boxes we just split, in box0 and box2. -\def\pagesofar{% - \unvbox\partialpage - % - \hsize = \doublecolumnhsize - \wd0=\hsize \wd2=\hsize - \hbox to\txipagewidth{\box0\hfil\box2}% -} - - -% Finished with with double columns. -\def\enddoublecolumns{% - % The following penalty ensures that the page builder is exercised - % _before_ we change the output routine. This is necessary in the - % following situation: - % - % The last section of the index consists only of a single entry. - % Before this section, \pagetotal is less than \pagegoal, so no - % break occurs before the last section starts. However, the last - % section, consisting of \initial and the single \entry, does not - % fit on the page and has to be broken off. Without the following - % penalty the page builder will not be exercised until \eject - % below, and by that time we'll already have changed the output - % routine to the \balancecolumns version, so the next-to-last - % double-column page will be processed with \balancecolumns, which - % is wrong: The two columns will go to the main vertical list, with - % the broken-off section in the recent contributions. As soon as - % the output routine finishes, TeX starts reconsidering the page - % break. The two columns and the broken-off section both fit on the - % page, because the two columns now take up only half of the page - % goal. When TeX sees \eject from below which follows the final - % section, it invokes the new output routine that we've set after - % \balancecolumns below; \onepageout will try to fit the two columns - % and the final section into the vbox of \txipageheight (see - % \pagebody), causing an overfull box. - % - % Note that glue won't work here, because glue does not exercise the - % page builder, unlike penalties (see The TeXbook, pp. 280-281). - \penalty0 - % - \output = {% - % Split the last of the double-column material. - \savemarks - \balancecolumns - }% - \eject % call the \output just set - \ifdim\pagetotal=0pt - % Having called \balancecolumns once, we do not - % want to call it again. Therefore, reset \output to its normal - % definition right away. - \global\output = {\onepageout{\pagecontents\PAGE}}% - % - \endgroup % started in \begindoublecolumns - \restoremarks - % Leave the double-column material on the current page, no automatic - % page break. - \box\balancedcolumns - % - % \pagegoal was set to the doubled \vsize above, since we restarted - % the current page. We're now back to normal single-column - % typesetting, so reset \pagegoal to the normal \vsize. - \global\vsize = \txipageheight % - \pagegoal = \txipageheight % - \else - % We had some left-over material. This might happen when \doublecolumnout - % is called in \balancecolumns. Try again. - \expandafter\enddoublecolumns - \fi -} -\newbox\balancedcolumns -\setbox\balancedcolumns=\vbox{shouldnt see this}% -% -% Only called for the last of the double column material. \doublecolumnout -% does the others. -\def\balancecolumns{% - \setbox0 = \vbox{\unvbox\PAGE}% like \box255 but more efficient, see p.120. - \dimen@ = \ht0 - \advance\dimen@ by \topskip - \advance\dimen@ by-\baselineskip - \ifdim\dimen@<5\baselineskip - % Don't split a short final column in two. - \setbox2=\vbox{}% - \global\setbox\balancedcolumns=\vbox{\pagesofar}% - \else - \divide\dimen@ by 2 % target to split to - \dimen@ii = \dimen@ - \splittopskip = \topskip - % Loop until left column is at least as high as the right column. - {% - \vbadness = 10000 - \loop - \global\setbox3 = \copy0 - \global\setbox1 = \vsplit3 to \dimen@ - \ifdim\ht1<\ht3 - \global\advance\dimen@ by 1pt - \repeat - }% - % Now the left column is in box 1, and the right column in box 3. - % - % Check whether the left column has come out higher than the page itself. - % (Note that we have doubled \vsize for the double columns, so - % the actual height of the page is 0.5\vsize). - \ifdim2\ht1>\vsize - % It appears that we have been called upon to balance too much material. - % Output some of it with \doublecolumnout, leaving the rest on the page. - \setbox\PAGE=\box0 - \doublecolumnout - \else - % Compare the heights of the two columns. - \ifdim4\ht1>5\ht3 - % Column heights are too different, so don't make their bottoms - % flush with each other. - \setbox2=\vbox to \ht1 {\unvbox3\vfill}% - \setbox0=\vbox to \ht1 {\unvbox1\vfill}% - \else - % Make column bottoms flush with each other. - \setbox2=\vbox to\ht1{\unvbox3\unskip}% - \setbox0=\vbox to\ht1{\unvbox1\unskip}% - \fi - \global\setbox\balancedcolumns=\vbox{\pagesofar}% - \fi - \fi - % -} -\catcode`\@ = \other - - -\message{sectioning,} -% Chapters, sections, etc. - -% Let's start with @part. -\outer\parseargdef\part{\partzzz{#1}} -\def\partzzz#1{% - \chapoddpage - \null - \vskip.3\vsize % move it down on the page a bit - \begingroup - \noindent \titlefonts\rm #1\par % the text - \let\lastnode=\empty % no node to associate with - \writetocentry{part}{#1}{}% but put it in the toc - \headingsoff % no headline or footline on the part page - % This outputs a mark at the end of the page that clears \thischapter - % and \thissection, as is done in \startcontents. - \let\pchapsepmacro\relax - \chapmacro{}{Yomitfromtoc}{}% - \chapoddpage - \endgroup -} - -% \unnumberedno is an oxymoron. But we count the unnumbered -% sections so that we can refer to them unambiguously in the pdf -% outlines by their "section number". We avoid collisions with chapter -% numbers by starting them at 10000. (If a document ever has 10000 -% chapters, we're in trouble anyway, I'm sure.) -\newcount\unnumberedno \unnumberedno = 10000 -\newcount\chapno -\newcount\secno \secno=0 -\newcount\subsecno \subsecno=0 -\newcount\subsubsecno \subsubsecno=0 - -% This counter is funny since it counts through charcodes of letters A, B, ... -\newcount\appendixno \appendixno = `\@ -% -% \def\appendixletter{\char\the\appendixno} -% We do the following ugly conditional instead of the above simple -% construct for the sake of pdftex, which needs the actual -% letter in the expansion, not just typeset. -% -\def\appendixletter{% - \ifnum\appendixno=`A A% - \else\ifnum\appendixno=`B B% - \else\ifnum\appendixno=`C C% - \else\ifnum\appendixno=`D D% - \else\ifnum\appendixno=`E E% - \else\ifnum\appendixno=`F F% - \else\ifnum\appendixno=`G G% - \else\ifnum\appendixno=`H H% - \else\ifnum\appendixno=`I I% - \else\ifnum\appendixno=`J J% - \else\ifnum\appendixno=`K K% - \else\ifnum\appendixno=`L L% - \else\ifnum\appendixno=`M M% - \else\ifnum\appendixno=`N N% - \else\ifnum\appendixno=`O O% - \else\ifnum\appendixno=`P P% - \else\ifnum\appendixno=`Q Q% - \else\ifnum\appendixno=`R R% - \else\ifnum\appendixno=`S S% - \else\ifnum\appendixno=`T T% - \else\ifnum\appendixno=`U U% - \else\ifnum\appendixno=`V V% - \else\ifnum\appendixno=`W W% - \else\ifnum\appendixno=`X X% - \else\ifnum\appendixno=`Y Y% - \else\ifnum\appendixno=`Z Z% - % The \the is necessary, despite appearances, because \appendixletter is - % expanded while writing the .toc file. \char\appendixno is not - % expandable, thus it is written literally, thus all appendixes come out - % with the same letter (or @) in the toc without it. - \else\char\the\appendixno - \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi - \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} - -% Each @chapter defines these (using marks) as the number+name, number -% and name of the chapter. Page headings and footings can use -% these. @section does likewise. -\def\thischapter{} -\def\thischapternum{} -\def\thischaptername{} -\def\thissection{} -\def\thissectionnum{} -\def\thissectionname{} - -\newcount\absseclevel % used to calculate proper heading level -\newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count - -% @raisesections: treat @section as chapter, @subsection as section, etc. -\def\raisesections{\global\advance\secbase by -1} -\let\up=\raisesections % original BFox name - -% @lowersections: treat @chapter as section, @section as subsection, etc. -\def\lowersections{\global\advance\secbase by 1} -\let\down=\lowersections % original BFox name - -% we only have subsub. -\chardef\maxseclevel = 3 -% -% A numbered section within an unnumbered changes to unnumbered too. -% To achieve this, remember the "biggest" unnum. sec. we are currently in: -\chardef\unnlevel = \maxseclevel -% -% Trace whether the current chapter is an appendix or not: -% \chapheadtype is "N" or "A", unnumbered chapters are ignored. -\def\chapheadtype{N} - -% Choose a heading macro -% #1 is heading type -% #2 is heading level -% #3 is text for heading -\def\genhead#1#2#3{% - % Compute the abs. sec. level: - \absseclevel=#2 - \advance\absseclevel by \secbase - % Make sure \absseclevel doesn't fall outside the range: - \ifnum \absseclevel < 0 - \absseclevel = 0 - \else - \ifnum \absseclevel > 3 - \absseclevel = 3 - \fi - \fi - % The heading type: - \def\headtype{#1}% - \if \headtype U% - \ifnum \absseclevel < \unnlevel - \chardef\unnlevel = \absseclevel - \fi - \else - % Check for appendix sections: - \ifnum \absseclevel = 0 - \edef\chapheadtype{\headtype}% - \else - \if \headtype A\if \chapheadtype N% - \errmessage{@appendix... within a non-appendix chapter}% - \fi\fi - \fi - % Check for numbered within unnumbered: - \ifnum \absseclevel > \unnlevel - \def\headtype{U}% - \else - \chardef\unnlevel = 3 - \fi - \fi - % Now print the heading: - \if \headtype U% - \ifcase\absseclevel - \unnumberedzzz{#3}% - \or \unnumberedseczzz{#3}% - \or \unnumberedsubseczzz{#3}% - \or \unnumberedsubsubseczzz{#3}% - \fi - \else - \if \headtype A% - \ifcase\absseclevel - \appendixzzz{#3}% - \or \appendixsectionzzz{#3}% - \or \appendixsubseczzz{#3}% - \or \appendixsubsubseczzz{#3}% - \fi - \else - \ifcase\absseclevel - \chapterzzz{#3}% - \or \seczzz{#3}% - \or \numberedsubseczzz{#3}% - \or \numberedsubsubseczzz{#3}% - \fi - \fi - \fi - \suppressfirstparagraphindent -} - -% an interface: -\def\numhead{\genhead N} -\def\apphead{\genhead A} -\def\unnmhead{\genhead U} - -% @chapter, @appendix, @unnumbered. Increment top-level counter, reset -% all lower-level sectioning counters to zero. -% -% Also set \chaplevelprefix, which we prepend to @float sequence numbers -% (e.g., figures), q.v. By default (before any chapter), that is empty. -\let\chaplevelprefix = \empty -% -\outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz -\def\chapterzzz#1{% - % section resetting is \global in case the chapter is in a group, such - % as an @include file. - \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 - \global\advance\chapno by 1 - % - % Used for \float. - \gdef\chaplevelprefix{\the\chapno.}% - \resetallfloatnos - % - % \putwordChapter can contain complex things in translations. - \toks0=\expandafter{\putwordChapter}% - \message{\the\toks0 \space \the\chapno}% - % - % Write the actual heading. - \chapmacro{#1}{Ynumbered}{\the\chapno}% - % - % So @section and the like are numbered underneath this chapter. - \global\let\section = \numberedsec - \global\let\subsection = \numberedsubsec - \global\let\subsubsection = \numberedsubsubsec -} - -\outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz -% -\def\appendixzzz#1{% - \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 - \global\advance\appendixno by 1 - \gdef\chaplevelprefix{\appendixletter.}% - \resetallfloatnos - % - % \putwordAppendix can contain complex things in translations. - \toks0=\expandafter{\putwordAppendix}% - \message{\the\toks0 \space \appendixletter}% - % - \chapmacro{#1}{Yappendix}{\appendixletter}% - % - \global\let\section = \appendixsec - \global\let\subsection = \appendixsubsec - \global\let\subsubsection = \appendixsubsubsec -} - -% normally unnmhead0 calls unnumberedzzz: -\outer\parseargdef\unnumbered{\unnmhead0{#1}} -\def\unnumberedzzz#1{% - \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 - \global\advance\unnumberedno by 1 - % - % Since an unnumbered has no number, no prefix for figures. - \global\let\chaplevelprefix = \empty - \resetallfloatnos - % - % This used to be simply \message{#1}, but TeX fully expands the - % argument to \message. Therefore, if #1 contained @-commands, TeX - % expanded them. For example, in `@unnumbered The @cite{Book}', TeX - % expanded @cite (which turns out to cause errors because \cite is meant - % to be executed, not expanded). - % - % Anyway, we don't want the fully-expanded definition of @cite to appear - % as a result of the \message, we just want `@cite' itself. We use - % \the to achieve this: TeX expands \the only once, - % simply yielding the contents of . (We also do this for - % the toc entries.) - \toks0 = {#1}% - \message{(\the\toks0)}% - % - \chapmacro{#1}{Ynothing}{\the\unnumberedno}% - % - \global\let\section = \unnumberedsec - \global\let\subsection = \unnumberedsubsec - \global\let\subsubsection = \unnumberedsubsubsec -} - -% @centerchap is like @unnumbered, but the heading is centered. -\outer\parseargdef\centerchap{% - \let\centerparametersmaybe = \centerparameters - \unnmhead0{#1}% - \let\centerparametersmaybe = \relax -} - -% @top is like @unnumbered. -\let\top\unnumbered - -% Sections. -% -\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz -\def\seczzz#1{% - \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 - \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}% -} - -% normally calls appendixsectionzzz: -\outer\parseargdef\appendixsection{\apphead1{#1}} -\def\appendixsectionzzz#1{% - \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 - \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}% -} -\let\appendixsec\appendixsection - -% normally calls unnumberedseczzz: -\outer\parseargdef\unnumberedsec{\unnmhead1{#1}} -\def\unnumberedseczzz#1{% - \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 - \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}% -} - -% Subsections. -% -% normally calls numberedsubseczzz: -\outer\parseargdef\numberedsubsec{\numhead2{#1}} -\def\numberedsubseczzz#1{% - \global\subsubsecno=0 \global\advance\subsecno by 1 - \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}% -} - -% normally calls appendixsubseczzz: -\outer\parseargdef\appendixsubsec{\apphead2{#1}} -\def\appendixsubseczzz#1{% - \global\subsubsecno=0 \global\advance\subsecno by 1 - \sectionheading{#1}{subsec}{Yappendix}% - {\appendixletter.\the\secno.\the\subsecno}% -} - -% normally calls unnumberedsubseczzz: -\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} -\def\unnumberedsubseczzz#1{% - \global\subsubsecno=0 \global\advance\subsecno by 1 - \sectionheading{#1}{subsec}{Ynothing}% - {\the\unnumberedno.\the\secno.\the\subsecno}% -} - -% Subsubsections. -% -% normally numberedsubsubseczzz: -\outer\parseargdef\numberedsubsubsec{\numhead3{#1}} -\def\numberedsubsubseczzz#1{% - \global\advance\subsubsecno by 1 - \sectionheading{#1}{subsubsec}{Ynumbered}% - {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}% -} - -% normally appendixsubsubseczzz: -\outer\parseargdef\appendixsubsubsec{\apphead3{#1}} -\def\appendixsubsubseczzz#1{% - \global\advance\subsubsecno by 1 - \sectionheading{#1}{subsubsec}{Yappendix}% - {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}% -} - -% normally unnumberedsubsubseczzz: -\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} -\def\unnumberedsubsubseczzz#1{% - \global\advance\subsubsecno by 1 - \sectionheading{#1}{subsubsec}{Ynothing}% - {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}% -} - -% These macros control what the section commands do, according -% to what kind of chapter we are in (ordinary, appendix, or unnumbered). -% Define them by default for a numbered chapter. -\let\section = \numberedsec -\let\subsection = \numberedsubsec -\let\subsubsection = \numberedsubsubsec - -% Define @majorheading, @heading and @subheading - -\def\majorheading{% - {\advance\chapheadingskip by 10pt \chapbreak }% - \parsearg\chapheadingzzz -} - -\def\chapheading{\chapbreak \parsearg\chapheadingzzz} -\def\chapheadingzzz#1{% - \vbox{\chapfonts \raggedtitlesettings #1\par}% - \nobreak\bigskip \nobreak - \suppressfirstparagraphindent -} - -% @heading, @subheading, @subsubheading. -\parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{} - \suppressfirstparagraphindent} -\parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{} - \suppressfirstparagraphindent} -\parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{} - \suppressfirstparagraphindent} - -% These macros generate a chapter, section, etc. heading only -% (including whitespace, linebreaking, etc. around it), -% given all the information in convenient, parsed form. - -% Args are the skip and penalty (usually negative) -\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi} - -% Parameter controlling skip before chapter headings (if needed) -\newskip\chapheadingskip - -% Define plain chapter starts, and page on/off switching for it. -\def\chapbreak{\dobreak \chapheadingskip {-4000}} - -% Start a new page -\def\chappager{\par\vfill\supereject} - -% \chapoddpage - start on an odd page for a new chapter -% Because \domark is called before \chapoddpage, the filler page will -% get the headings for the next chapter, which is wrong. But we don't -% care -- we just disable all headings on the filler page. -\def\chapoddpage{% - \chappager - \ifodd\pageno \else - \begingroup - \headingsoff - \null - \chappager - \endgroup - \fi -} - -\parseargdef\setchapternewpage{\csname CHAPPAG#1\endcsname} - -\def\CHAPPAGoff{% -\global\let\contentsalignmacro = \chappager -\global\let\pchapsepmacro=\chapbreak -\global\let\pagealignmacro=\chappager} - -\def\CHAPPAGon{% -\global\let\contentsalignmacro = \chappager -\global\let\pchapsepmacro=\chappager -\global\let\pagealignmacro=\chappager -\global\def\HEADINGSon{\HEADINGSsingle}} - -\def\CHAPPAGodd{% -\global\let\contentsalignmacro = \chapoddpage -\global\let\pchapsepmacro=\chapoddpage -\global\let\pagealignmacro=\chapoddpage -\global\def\HEADINGSon{\HEADINGSdouble}} - -\CHAPPAGon - -% \chapmacro - Chapter opening. -% -% #1 is the text, #2 is the section type (Ynumbered, Ynothing, -% Yappendix, Yomitfromtoc), #3 the chapter number. -% Not used for @heading series. -% -% To test against our argument. -\def\Ynothingkeyword{Ynothing} -\def\Yappendixkeyword{Yappendix} -\def\Yomitfromtockeyword{Yomitfromtoc} -% -\def\chapmacro#1#2#3{% - \expandafter\ifx\thisenv\titlepage\else - \checkenv{}% chapters, etc., should not start inside an environment. - \fi - % FIXME: \chapmacro is currently called from inside \titlepage when - % \setcontentsaftertitlepage to print the "Table of Contents" heading, but - % this should probably be done by \sectionheading with an option to print - % in chapter size. - % - % Insert the first mark before the heading break (see notes for \domark). - \let\prevchapterdefs=\lastchapterdefs - \let\prevsectiondefs=\lastsectiondefs - \gdef\lastsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}% - \gdef\thissection{}}% - % - \def\temptype{#2}% - \ifx\temptype\Ynothingkeyword - \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% - \gdef\thischapter{\thischaptername}}% - \else\ifx\temptype\Yomitfromtockeyword - \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% - \gdef\thischapter{}}% - \else\ifx\temptype\Yappendixkeyword - \toks0={#1}% - \xdef\lastchapterdefs{% - \gdef\noexpand\thischaptername{\the\toks0}% - \gdef\noexpand\thischapternum{\appendixletter}% - % \noexpand\putwordAppendix avoids expanding indigestible - % commands in some of the translations. - \gdef\noexpand\thischapter{\noexpand\putwordAppendix{} - \noexpand\thischapternum: - \noexpand\thischaptername}% - }% - \else - \toks0={#1}% - \xdef\lastchapterdefs{% - \gdef\noexpand\thischaptername{\the\toks0}% - \gdef\noexpand\thischapternum{\the\chapno}% - % \noexpand\putwordChapter avoids expanding indigestible - % commands in some of the translations. - \gdef\noexpand\thischapter{\noexpand\putwordChapter{} - \noexpand\thischapternum: - \noexpand\thischaptername}% - }% - \fi\fi\fi - % - % Output the mark. Pass it through \safewhatsit, to take care of - % the preceding space. - \safewhatsit\domark - % - % Insert the chapter heading break. - \pchapsepmacro - % - % Now the second mark, after the heading break. No break points - % between here and the heading. - \let\prevchapterdefs=\lastchapterdefs - \let\prevsectiondefs=\lastsectiondefs - \domark - % - {% - \chapfonts \rm - \let\footnote=\errfootnoteheading % give better error message - % - % Have to define \lastsection before calling \donoderef, because the - % xref code eventually uses it. On the other hand, it has to be called - % after \pchapsepmacro, or the headline will change too soon. - \gdef\lastsection{#1}% - % - % Only insert the separating space if we have a chapter/appendix - % number, and don't print the unnumbered ``number''. - \ifx\temptype\Ynothingkeyword - \setbox0 = \hbox{}% - \def\toctype{unnchap}% - \else\ifx\temptype\Yomitfromtockeyword - \setbox0 = \hbox{}% contents like unnumbered, but no toc entry - \def\toctype{omit}% - \else\ifx\temptype\Yappendixkeyword - \setbox0 = \hbox{\putwordAppendix{} #3\enspace}% - \def\toctype{app}% - \else - \setbox0 = \hbox{#3\enspace}% - \def\toctype{numchap}% - \fi\fi\fi - % - % Write the toc entry for this chapter. Must come before the - % \donoderef, because we include the current node name in the toc - % entry, and \donoderef resets it to empty. - \writetocentry{\toctype}{#1}{#3}% - % - % For pdftex, we have to write out the node definition (aka, make - % the pdfdest) after any page break, but before the actual text has - % been typeset. If the destination for the pdf outline is after the - % text, then jumping from the outline may wind up with the text not - % being visible, for instance under high magnification. - \donoderef{#2}% - % - % Typeset the actual heading. - \nobreak % Avoid page breaks at the interline glue. - \vbox{\raggedtitlesettings \hangindent=\wd0 \centerparametersmaybe - \unhbox0 #1\par}% - }% - \nobreak\bigskip % no page break after a chapter title - \nobreak -} - -% @centerchap -- centered and unnumbered. -\let\centerparametersmaybe = \relax -\def\centerparameters{% - \advance\rightskip by 3\rightskip - \leftskip = \rightskip - \parfillskip = 0pt -} - - -% Section titles. These macros combine the section number parts and -% call the generic \sectionheading to do the printing. -% -\newskip\secheadingskip -\def\secheadingbreak{\dobreak \secheadingskip{-1000}} - -% Subsection titles. -\newskip\subsecheadingskip -\def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}} - -% Subsubsection titles. -\def\subsubsecheadingskip{\subsecheadingskip} -\def\subsubsecheadingbreak{\subsecheadingbreak} - - -% Print any size, any type, section title. -% -% #1 is the text of the title, -% #2 is the section level (sec/subsec/subsubsec), -% #3 is the section type (Ynumbered, Ynothing, Yappendix, Yomitfromtoc), -% #4 is the section number. -% -\def\seckeyword{sec} -% -\def\sectionheading#1#2#3#4{% - {% - \def\sectionlevel{#2}% - \def\temptype{#3}% - % - % It is ok for the @heading series commands to appear inside an - % environment (it's been historically allowed, though the logic is - % dubious), but not the others. - \ifx\temptype\Yomitfromtockeyword\else - \checkenv{}% non-@*heading should not be in an environment. - \fi - \let\footnote=\errfootnoteheading - % - % Switch to the right set of fonts. - \csname #2fonts\endcsname \rm - % - % Insert first mark before the heading break (see notes for \domark). - \let\prevsectiondefs=\lastsectiondefs - \ifx\temptype\Ynothingkeyword - \ifx\sectionlevel\seckeyword - \gdef\lastsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}% - \gdef\thissection{\thissectionname}}% - \fi - \else\ifx\temptype\Yomitfromtockeyword - % Don't redefine \thissection. - \else\ifx\temptype\Yappendixkeyword - \ifx\sectionlevel\seckeyword - \toks0={#1}% - \xdef\lastsectiondefs{% - \gdef\noexpand\thissectionname{\the\toks0}% - \gdef\noexpand\thissectionnum{#4}% - % \noexpand\putwordSection avoids expanding indigestible - % commands in some of the translations. - \gdef\noexpand\thissection{\noexpand\putwordSection{} - \noexpand\thissectionnum: - \noexpand\thissectionname}% - }% - \fi - \else - \ifx\sectionlevel\seckeyword - \toks0={#1}% - \xdef\lastsectiondefs{% - \gdef\noexpand\thissectionname{\the\toks0}% - \gdef\noexpand\thissectionnum{#4}% - % \noexpand\putwordSection avoids expanding indigestible - % commands in some of the translations. - \gdef\noexpand\thissection{\noexpand\putwordSection{} - \noexpand\thissectionnum: - \noexpand\thissectionname}% - }% - \fi - \fi\fi\fi - % - % Go into vertical mode. Usually we'll already be there, but we - % don't want the following whatsit to end up in a preceding paragraph - % if the document didn't happen to have a blank line. - \par - % - % Output the mark. Pass it through \safewhatsit, to take care of - % the preceding space. - \safewhatsit\domark - % - % Insert space above the heading. - \csname #2headingbreak\endcsname - % - % Now the second mark, after the heading break. No break points - % between here and the heading. - \global\let\prevsectiondefs=\lastsectiondefs - \domark - % - % Only insert the space after the number if we have a section number. - \ifx\temptype\Ynothingkeyword - \setbox0 = \hbox{}% - \def\toctype{unn}% - \gdef\lastsection{#1}% - \else\ifx\temptype\Yomitfromtockeyword - % for @headings -- no section number, don't include in toc, - % and don't redefine \lastsection. - \setbox0 = \hbox{}% - \def\toctype{omit}% - \let\sectionlevel=\empty - \else\ifx\temptype\Yappendixkeyword - \setbox0 = \hbox{#4\enspace}% - \def\toctype{app}% - \gdef\lastsection{#1}% - \else - \setbox0 = \hbox{#4\enspace}% - \def\toctype{num}% - \gdef\lastsection{#1}% - \fi\fi\fi - % - % Write the toc entry (before \donoderef). See comments in \chapmacro. - \writetocentry{\toctype\sectionlevel}{#1}{#4}% - % - % Write the node reference (= pdf destination for pdftex). - % Again, see comments in \chapmacro. - \donoderef{#3}% - % - % Interline glue will be inserted when the vbox is completed. - % That glue will be a valid breakpoint for the page, since it'll be - % preceded by a whatsit (usually from the \donoderef, or from the - % \writetocentry if there was no node). We don't want to allow that - % break, since then the whatsits could end up on page n while the - % section is on page n+1, thus toc/etc. are wrong. Debian bug 276000. - \nobreak - % - % Output the actual section heading. - \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright - \hangindent=\wd0 % zero if no section number - \unhbox0 #1}% - }% - % Add extra space after the heading -- half of whatever came above it. - % Don't allow stretch, though. - \kern .5 \csname #2headingskip\endcsname - % - % Do not let the kern be a potential breakpoint, as it would be if it - % was followed by glue. - \nobreak - % - % We'll almost certainly start a paragraph next, so don't let that - % glue accumulate. (Not a breakpoint because it's preceded by a - % discardable item.) However, when a paragraph is not started next - % (\startdefun, \cartouche, \center, etc.), this needs to be wiped out - % or the negative glue will cause weirdly wrong output, typically - % obscuring the section heading with something else. - \vskip-\parskip - % - % This is so the last item on the main vertical list is a known - % \penalty > 10000, so \startdefun, etc., can recognize the situation - % and do the needful. - \penalty 10001 -} - - -\message{toc,} -% Table of contents. -\newwrite\tocfile - -% Write an entry to the toc file, opening it if necessary. -% Called from @chapter, etc. -% -% Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno} -% We append the current node name (if any) and page number as additional -% arguments for the \{chap,sec,...}entry macros which will eventually -% read this. The node name is used in the pdf outlines as the -% destination to jump to. -% -% We open the .toc file for writing here instead of at @setfilename (or -% any other fixed time) so that @contents can be anywhere in the document. -% But if #1 is `omit', then we don't do anything. This is used for the -% table of contents chapter openings themselves. -% -\newif\iftocfileopened -\def\omitkeyword{omit}% -% -\def\writetocentry#1#2#3{% - \edef\writetoctype{#1}% - \ifx\writetoctype\omitkeyword \else - \iftocfileopened\else - \immediate\openout\tocfile = \jobname.toc - \global\tocfileopenedtrue - \fi - % - \iflinks - {\atdummies - \edef\temp{% - \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}% - \temp - }% - \fi - \fi - % - % Tell \shipout to create a pdf destination on each page, if we're - % writing pdf. These are used in the table of contents. We can't - % just write one on every page because the title pages are numbered - % 1 and 2 (the page numbers aren't printed), and so are the first - % two pages of the document. Thus, we'd have two destinations named - % `1', and two named `2'. - \ifpdf - \global\pdfmakepagedesttrue - \else - \ifx\XeTeXrevision\thisisundefined - \else - \global\pdfmakepagedesttrue - \fi - \fi -} - - -% These characters do not print properly in the Computer Modern roman -% fonts, so we must take special care. This is more or less redundant -% with the Texinfo input format setup at the end of this file. -% -\def\activecatcodes{% - \catcode`\"=\active - \catcode`\$=\active - \catcode`\<=\active - \catcode`\>=\active - \catcode`\\=\active - \catcode`\^=\active - \catcode`\_=\active - \catcode`\|=\active - \catcode`\~=\active -} - - -% Read the toc file, which is essentially Texinfo input. -\def\readtocfile{% - \setupdatafile - \activecatcodes - \input \tocreadfilename -} - -\newskip\contentsrightmargin \contentsrightmargin=1in -\newcount\savepageno -\newcount\lastnegativepageno \lastnegativepageno = -1 - -% Prepare to read what we've written to \tocfile. -% -\def\startcontents#1{% - % If @setchapternewpage on, and @headings double, the contents should - % start on an odd page, unlike chapters. Thus, we maintain - % \contentsalignmacro in parallel with \pagealignmacro. - % From: Torbjorn Granlund - \contentsalignmacro - \immediate\closeout\tocfile - % - % Don't need to put `Contents' or `Short Contents' in the headline. - % It is abundantly clear what they are. - \chapmacro{#1}{Yomitfromtoc}{}% - % - \savepageno = \pageno - \begingroup % Set up to handle contents files properly. - \raggedbottom % Worry more about breakpoints than the bottom. - \entryrightmargin=\contentsrightmargin % Don't use the full line length. - % - % Roman numerals for page numbers. - \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi -} - -% redefined for the two-volume lispref. We always output on -% \jobname.toc even if this is redefined. -% -\def\tocreadfilename{\jobname.toc} - -% Normal (long) toc. -% -\def\contents{% - \startcontents{\putwordTOC}% - \openin 1 \tocreadfilename\space - \ifeof 1 \else - \readtocfile - \fi - \vfill \eject - \contentsalignmacro % in case @setchapternewpage odd is in effect - \ifeof 1 \else - \pdfmakeoutlines - \fi - \closein 1 - \endgroup - \lastnegativepageno = \pageno - \global\pageno = \savepageno -} - -% And just the chapters. -\def\summarycontents{% - \startcontents{\putwordShortTOC}% - % - \let\partentry = \shortpartentry - \let\numchapentry = \shortchapentry - \let\appentry = \shortchapentry - \let\unnchapentry = \shortunnchapentry - % We want a true roman here for the page numbers. - \secfonts - \let\rm=\shortcontrm \let\bf=\shortcontbf - \let\sl=\shortcontsl \let\tt=\shortconttt - \rm - \hyphenpenalty = 10000 - \advance\baselineskip by 1pt % Open it up a little. - \def\numsecentry##1##2##3##4{} - \let\appsecentry = \numsecentry - \let\unnsecentry = \numsecentry - \let\numsubsecentry = \numsecentry - \let\appsubsecentry = \numsecentry - \let\unnsubsecentry = \numsecentry - \let\numsubsubsecentry = \numsecentry - \let\appsubsubsecentry = \numsecentry - \let\unnsubsubsecentry = \numsecentry - \openin 1 \tocreadfilename\space - \ifeof 1 \else - \readtocfile - \fi - \closein 1 - \vfill \eject - \contentsalignmacro % in case @setchapternewpage odd is in effect - \endgroup - \lastnegativepageno = \pageno - \global\pageno = \savepageno -} -\let\shortcontents = \summarycontents - -% Typeset the label for a chapter or appendix for the short contents. -% The arg is, e.g., `A' for an appendix, or `3' for a chapter. -% -\def\shortchaplabel#1{% - % This space should be enough, since a single number is .5em, and the - % widest letter (M) is 1em, at least in the Computer Modern fonts. - % But use \hss just in case. - % (This space doesn't include the extra space that gets added after - % the label; that gets put in by \shortchapentry above.) - % - % We'd like to right-justify chapter numbers, but that looks strange - % with appendix letters. And right-justifying numbers and - % left-justifying letters looks strange when there is less than 10 - % chapters. Have to read the whole toc once to know how many chapters - % there are before deciding ... - \hbox to 1em{#1\hss}% -} - -% These macros generate individual entries in the table of contents. -% The first argument is the chapter or section name. -% The last argument is the page number. -% The arguments in between are the chapter number, section number, ... - -% Parts, in the main contents. Replace the part number, which doesn't -% exist, with an empty box. Let's hope all the numbers have the same width. -% Also ignore the page number, which is conventionally not printed. -\def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}} -\def\partentry#1#2#3#4{% - % Add stretch and a bonus for breaking the page before the part heading. - % This reduces the chance of the page being broken immediately after the - % part heading, before a following chapter heading. - \vskip 0pt plus 5\baselineskip - \penalty-300 - \vskip 0pt plus -5\baselineskip - \dochapentry{\numeralbox\labelspace#1}{}% -} -% -% Parts, in the short toc. -\def\shortpartentry#1#2#3#4{% - \penalty-300 - \vskip.5\baselineskip plus.15\baselineskip minus.1\baselineskip - \shortchapentry{{\bf #1}}{\numeralbox}{}{}% -} - -% Chapters, in the main contents. -\def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}} - -% Chapters, in the short toc. -% See comments in \dochapentry re vbox and related settings. -\def\shortchapentry#1#2#3#4{% - \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}% -} - -% Appendices, in the main contents. -% Need the word Appendix, and a fixed-size box. -% -\def\appendixbox#1{% - % We use M since it's probably the widest letter. - \setbox0 = \hbox{\putwordAppendix{} M}% - \hbox to \wd0{\putwordAppendix{} #1\hss}} -% -\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\hskip.7em#1}{#4}} - -% Unnumbered chapters. -\def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}} -\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}} - -% Sections. -\def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}} -\let\appsecentry=\numsecentry -\def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}} - -% Subsections. -\def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}} -\let\appsubsecentry=\numsubsecentry -\def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}} - -% And subsubsections. -\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}} -\let\appsubsubsecentry=\numsubsubsecentry -\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}} - -% This parameter controls the indentation of the various levels. -% Same as \defaultparindent. -\newdimen\tocindent \tocindent = 15pt - -% Now for the actual typesetting. In all these, #1 is the text and #2 is the -% page number. -% -% If the toc has to be broken over pages, we want it to be at chapters -% if at all possible; hence the \penalty. -\def\dochapentry#1#2{% - \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip - \begingroup - % Move the page numbers slightly to the right - \advance\entryrightmargin by -0.05em - \chapentryfonts - \tocentry{#1}{\dopageno\bgroup#2\egroup}% - \endgroup - \nobreak\vskip .25\baselineskip plus.1\baselineskip -} - -\def\dosecentry#1#2{\begingroup - \secentryfonts \leftskip=\tocindent - \tocentry{#1}{\dopageno\bgroup#2\egroup}% -\endgroup} - -\def\dosubsecentry#1#2{\begingroup - \subsecentryfonts \leftskip=2\tocindent - \tocentry{#1}{\dopageno\bgroup#2\egroup}% -\endgroup} - -\def\dosubsubsecentry#1#2{\begingroup - \subsubsecentryfonts \leftskip=3\tocindent - \tocentry{#1}{\dopageno\bgroup#2\egroup}% -\endgroup} - -% We use the same \entry macro as for the index entries. -\let\tocentry = \entry - -% Space between chapter (or whatever) number and the title. -\def\labelspace{\hskip1em \relax} - -\def\dopageno#1{{\rm #1}} -\def\doshortpageno#1{{\rm #1}} - -\def\chapentryfonts{\secfonts \rm} -\def\secentryfonts{\textfonts} -\def\subsecentryfonts{\textfonts} -\def\subsubsecentryfonts{\textfonts} - - -\message{environments,} -% @foo ... @end foo. - -% @tex ... @end tex escapes into raw TeX temporarily. -% One exception: @ is still an escape character, so that @end tex works. -% But \@ or @@ will get a plain @ character. - -\envdef\tex{% - \setupmarkupstyle{tex}% - \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 - \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 - \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie - \catcode `\%=14 - \catcode `\+=\other - \catcode `\"=\other - \catcode `\|=\other - \catcode `\<=\other - \catcode `\>=\other - \catcode `\`=\other - \catcode `\'=\other - % - % ' is active in math mode (mathcode"8000). So reset it, and all our - % other math active characters (just in case), to plain's definitions. - \mathactive - % - % Inverse of the list at the beginning of the file. - \let\b=\ptexb - \let\bullet=\ptexbullet - \let\c=\ptexc - \let\,=\ptexcomma - \let\.=\ptexdot - \let\dots=\ptexdots - \let\equiv=\ptexequiv - \let\!=\ptexexclam - \let\i=\ptexi - \let\indent=\ptexindent - \let\noindent=\ptexnoindent - \let\{=\ptexlbrace - \let\+=\tabalign - \let\}=\ptexrbrace - \let\/=\ptexslash - \let\sp=\ptexsp - \let\*=\ptexstar - %\let\sup=\ptexsup % do not redefine, we want @sup to work in math mode - \let\t=\ptext - \expandafter \let\csname top\endcsname=\ptextop % we've made it outer - \let\frenchspacing=\plainfrenchspacing - % - \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% - \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% - \def\@{@}% -} -% There is no need to define \Etex. - -% Define @lisp ... @end lisp. -% @lisp environment forms a group so it can rebind things, -% including the definition of @end lisp (which normally is erroneous). - -% Amount to narrow the margins by for @lisp. -\newskip\lispnarrowing \lispnarrowing=0.4in - -% This is the definition that ^^M gets inside @lisp, @example, and other -% such environments. \null is better than a space, since it doesn't -% have any width. -\def\lisppar{\null\endgraf} - -% This space is always present above and below environments. -\newskip\envskipamount \envskipamount = 0pt - -% Make spacing and below environment symmetrical. We use \parskip here -% to help in doing that, since in @example-like environments \parskip -% is reset to zero; thus the \afterenvbreak inserts no space -- but the -% start of the next paragraph will insert \parskip. -% -\def\aboveenvbreak{{% - % =10000 instead of <10000 because of a special case in \itemzzz and - % \sectionheading, q.v. - \ifnum \lastpenalty=10000 \else - \advance\envskipamount by \parskip - \endgraf - \ifdim\lastskip<\envskipamount - \removelastskip - \ifnum\lastpenalty<10000 - % Penalize breaking before the environment, because preceding text - % often leads into it. - \penalty100 - \fi - \vskip\envskipamount - \fi - \fi -}} - -\def\afterenvbreak{{% - % =10000 instead of <10000 because of a special case in \itemzzz and - % \sectionheading, q.v. - \ifnum \lastpenalty=10000 \else - \advance\envskipamount by \parskip - \endgraf - \ifdim\lastskip<\envskipamount - \removelastskip - % it's not a good place to break if the last penalty was \nobreak - % or better ... - \ifnum\lastpenalty<10000 \penalty-50 \fi - \vskip\envskipamount - \fi - \fi -}} - -% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins; it will -% also clear it, so that its embedded environments do the narrowing again. -\let\nonarrowing=\relax - -% @cartouche ... @end cartouche: draw rectangle w/rounded corners around -% environment contents. -\font\circle=lcircle10 -\newdimen\circthick -\newdimen\cartouter\newdimen\cartinner -\newskip\normbskip\newskip\normpskip\newskip\normlskip -\circthick=\fontdimen8\circle -% -\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth -\def\ctr{{\hskip 6pt\circle\char'010}} -\def\cbl{{\circle\char'012\hskip -6pt}} -\def\cbr{{\hskip 6pt\circle\char'011}} -\def\carttop{\hbox to \cartouter{\hskip\lskip - \ctl\leaders\hrule height\circthick\hfil\ctr - \hskip\rskip}} -\def\cartbot{\hbox to \cartouter{\hskip\lskip - \cbl\leaders\hrule height\circthick\hfil\cbr - \hskip\rskip}} -% -\newskip\lskip\newskip\rskip - -\envdef\cartouche{% - \ifhmode\par\fi % can't be in the midst of a paragraph. - \startsavinginserts - \lskip=\leftskip \rskip=\rightskip - \leftskip=0pt\rightskip=0pt % we want these *outside*. - \cartinner=\hsize \advance\cartinner by-\lskip - \advance\cartinner by-\rskip - \cartouter=\hsize - \advance\cartouter by 18.4pt % allow for 3pt kerns on either - % side, and for 6pt waste from - % each corner char, and rule thickness - \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip - % - % If this cartouche directly follows a sectioning command, we need the - % \parskip glue (backspaced over by default) or the cartouche can - % collide with the section heading. - \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi - % - \setbox\groupbox=\vbox\bgroup - \baselineskip=0pt\parskip=0pt\lineskip=0pt - \carttop - \hbox\bgroup - \hskip\lskip - \vrule\kern3pt - \vbox\bgroup - \kern3pt - \hsize=\cartinner - \baselineskip=\normbskip - \lineskip=\normlskip - \parskip=\normpskip - \vskip -\parskip - \comment % For explanation, see the end of def\group. -} -\def\Ecartouche{% - \ifhmode\par\fi - \kern3pt - \egroup - \kern3pt\vrule - \hskip\rskip - \egroup - \cartbot - \egroup - \addgroupbox - \checkinserts -} - - -% This macro is called at the beginning of all the @example variants, -% inside a group. -\newdimen\nonfillparindent -\def\nonfillstart{% - \aboveenvbreak - \ifdim\hfuzz < 12pt \hfuzz = 12pt \fi % Don't be fussy - \sepspaces % Make spaces be word-separators rather than space tokens. - \let\par = \lisppar % don't ignore blank lines - \obeylines % each line of input is a line of output - \parskip = 0pt - % Turn off paragraph indentation but redefine \indent to emulate - % the normal \indent. - \nonfillparindent=\parindent - \parindent = 0pt - \let\indent\nonfillindent - % - \emergencystretch = 0pt % don't try to avoid overfull boxes - \ifx\nonarrowing\relax - \advance \leftskip by \lispnarrowing - \exdentamount=\lispnarrowing - \else - \let\nonarrowing = \relax - \fi - \let\exdent=\nofillexdent -} - -\begingroup -\obeyspaces -% We want to swallow spaces (but not other tokens) after the fake -% @indent in our nonfill-environments, where spaces are normally -% active and set to @tie, resulting in them not being ignored after -% @indent. -\gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}% -\gdef\nonfillindentcheck{% -\ifx\temp % -\expandafter\nonfillindentgobble% -\else% -\leavevmode\nonfillindentbox% -\fi% -}% -\endgroup -\def\nonfillindentgobble#1{\nonfillindent} -\def\nonfillindentbox{\hbox to \nonfillparindent{\hss}} - -% If you want all examples etc. small: @set dispenvsize small. -% If you want even small examples the full size: @set dispenvsize nosmall. -% This affects the following displayed environments: -% @example, @display, @format, @lisp -% -\def\smallword{small} -\def\nosmallword{nosmall} -\let\SETdispenvsize\relax -\def\setnormaldispenv{% - \ifx\SETdispenvsize\smallword - % end paragraph for sake of leading, in case document has no blank - % line. This is redundant with what happens in \aboveenvbreak, but - % we need to do it before changing the fonts, and it's inconvenient - % to change the fonts afterward. - \ifnum \lastpenalty=10000 \else \endgraf \fi - \smallexamplefonts \rm - \fi -} -\def\setsmalldispenv{% - \ifx\SETdispenvsize\nosmallword - \else - \ifnum \lastpenalty=10000 \else \endgraf \fi - \smallexamplefonts \rm - \fi -} - -% We often define two environments, @foo and @smallfoo. -% Let's do it in one command. #1 is the env name, #2 the definition. -\def\makedispenvdef#1#2{% - \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}% - \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}% - \expandafter\let\csname E#1\endcsname \afterenvbreak - \expandafter\let\csname Esmall#1\endcsname \afterenvbreak -} - -% Define two environment synonyms (#1 and #2) for an environment. -\def\maketwodispenvdef#1#2#3{% - \makedispenvdef{#1}{#3}% - \makedispenvdef{#2}{#3}% -} -% -% @lisp: indented, narrowed, typewriter font; -% @example: same as @lisp. -% -% @smallexample and @smalllisp: use smaller fonts. -% Originally contributed by Pavel@xerox. -% -\maketwodispenvdef{lisp}{example}{% - \nonfillstart - \tt\setupmarkupstyle{example}% - \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. - \gobble % eat return -} -% @display/@smalldisplay: same as @lisp except keep current font. -% -\makedispenvdef{display}{% - \nonfillstart - \gobble -} - -% @format/@smallformat: same as @display except don't narrow margins. -% -\makedispenvdef{format}{% - \let\nonarrowing = t% - \nonfillstart - \gobble -} - -% @flushleft: same as @format, but doesn't obey \SETdispenvsize. -\envdef\flushleft{% - \let\nonarrowing = t% - \nonfillstart - \gobble -} -\let\Eflushleft = \afterenvbreak - -% @flushright. -% -\envdef\flushright{% - \let\nonarrowing = t% - \nonfillstart - \advance\leftskip by 0pt plus 1fill\relax - \gobble -} -\let\Eflushright = \afterenvbreak - - -% @raggedright does more-or-less normal line breaking but no right -% justification. From plain.tex. Don't stretch around special -% characters in urls in this environment, since the stretch at the right -% should be enough. -\envdef\raggedright{% - \rightskip0pt plus2.4em \spaceskip.3333em \xspaceskip.5em\relax - \def\urefprestretchamount{0pt}% - \def\urefpoststretchamount{0pt}% -} -\let\Eraggedright\par - -\envdef\raggedleft{% - \parindent=0pt \leftskip0pt plus2em - \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt - \hbadness=10000 % Last line will usually be underfull, so turn off - % badness reporting. -} -\let\Eraggedleft\par - -\envdef\raggedcenter{% - \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em - \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt - \hbadness=10000 % Last line will usually be underfull, so turn off - % badness reporting. -} -\let\Eraggedcenter\par - - -% @quotation does normal linebreaking (hence we can't use \nonfillstart) -% and narrows the margins. We keep \parskip nonzero in general, since -% we're doing normal filling. So, when using \aboveenvbreak and -% \afterenvbreak, temporarily make \parskip 0. -% -\makedispenvdef{quotation}{\quotationstart} -% -\def\quotationstart{% - \indentedblockstart % same as \indentedblock, but increase right margin too. - \ifx\nonarrowing\relax - \advance\rightskip by \lispnarrowing - \fi - \parsearg\quotationlabel -} - -% We have retained a nonzero parskip for the environment, since we're -% doing normal filling. -% -\def\Equotation{% - \par - \ifx\quotationauthor\thisisundefined\else - % indent a bit. - \leftline{\kern 2\leftskip \sl ---\quotationauthor}% - \fi - {\parskip=0pt \afterenvbreak}% -} -\def\Esmallquotation{\Equotation} - -% If we're given an argument, typeset it in bold with a colon after. -\def\quotationlabel#1{% - \def\temp{#1}% - \ifx\temp\empty \else - {\bf #1: }% - \fi -} - -% @indentedblock is like @quotation, but indents only on the left and -% has no optional argument. -% -\makedispenvdef{indentedblock}{\indentedblockstart} -% -\def\indentedblockstart{% - {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip - \parindent=0pt - % - % @cartouche defines \nonarrowing to inhibit narrowing at next level down. - \ifx\nonarrowing\relax - \advance\leftskip by \lispnarrowing - \exdentamount = \lispnarrowing - \else - \let\nonarrowing = \relax - \fi -} - -% Keep a nonzero parskip for the environment, since we're doing normal filling. -% -\def\Eindentedblock{% - \par - {\parskip=0pt \afterenvbreak}% -} -\def\Esmallindentedblock{\Eindentedblock} - - -% LaTeX-like @verbatim...@end verbatim and @verb{...} -% If we want to allow any as delimiter, -% we need the curly braces so that makeinfo sees the @verb command, eg: -% `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org -% -% [Knuth]: Donald Ervin Knuth, 1996. The TeXbook. -% -% [Knuth] p.344; only we need to do the other characters Texinfo sets -% active too. Otherwise, they get lost as the first character on a -% verbatim line. -\def\dospecials{% - \do\ \do\\\do\{\do\}\do\$\do\&% - \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~% - \do\<\do\>\do\|\do\@\do+\do\"% - % Don't do the quotes -- if we do, @set txicodequoteundirected and - % @set txicodequotebacktick will not have effect on @verb and - % @verbatim, and ?` and !` ligatures won't get disabled. - %\do\`\do\'% -} -% -% [Knuth] p. 380 -\def\uncatcodespecials{% - \def\do##1{\catcode`##1=\other}\dospecials} -% -% Setup for the @verb command. -% -% Eight spaces for a tab -\begingroup - \catcode`\^^I=\active - \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }} -\endgroup -% -\def\setupverb{% - \tt % easiest (and conventionally used) font for verbatim - \def\par{\leavevmode\endgraf}% - \setupmarkupstyle{verb}% - \tabeightspaces - % Respect line breaks, - % print special symbols as themselves, and - % make each space count - % must do in this order: - \obeylines \uncatcodespecials \sepspaces -} - -% Setup for the @verbatim environment -% -% Real tab expansion. -\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount -% -% We typeset each line of the verbatim in an \hbox, so we can handle -% tabs. The \global is in case the verbatim line starts with an accent, -% or some other command that starts with a begin-group. Otherwise, the -% entire \verbbox would disappear at the corresponding end-group, before -% it is typeset. Meanwhile, we can't have nested verbatim commands -% (can we?), so the \global won't be overwriting itself. -\newbox\verbbox -\def\starttabbox{\global\setbox\verbbox=\hbox\bgroup} -% -\begingroup - \catcode`\^^I=\active - \gdef\tabexpand{% - \catcode`\^^I=\active - \def^^I{\leavevmode\egroup - \dimen\verbbox=\wd\verbbox % the width so far, or since the previous tab - \divide\dimen\verbbox by\tabw - \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw - \advance\dimen\verbbox by\tabw % advance to next multiple of \tabw - \wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox - }% - } -\endgroup - -% start the verbatim environment. -\def\setupverbatim{% - \let\nonarrowing = t% - \nonfillstart - \tt % easiest (and conventionally used) font for verbatim - % The \leavevmode here is for blank lines. Otherwise, we would - % never \starttabox and the \egroup would end verbatim mode. - \def\par{\leavevmode\egroup\box\verbbox\endgraf}% - \tabexpand - \setupmarkupstyle{verbatim}% - % Respect line breaks, - % print special symbols as themselves, and - % make each space count. - % Must do in this order: - \obeylines \uncatcodespecials \sepspaces - \everypar{\starttabbox}% -} - -% Do the @verb magic: verbatim text is quoted by unique -% delimiter characters. Before first delimiter expect a -% right brace, after last delimiter expect closing brace: -% -% \def\doverb'{'#1'}'{#1} -% -% [Knuth] p. 382; only eat outer {} -\begingroup - \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other - \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next] -\endgroup -% -\def\verb{\begingroup\setupverb\doverb} -% -% -% Do the @verbatim magic: define the macro \doverbatim so that -% the (first) argument ends when '@end verbatim' is reached, ie: -% -% \def\doverbatim#1@end verbatim{#1} -% -% For Texinfo it's a lot easier than for LaTeX, -% because texinfo's \verbatim doesn't stop at '\end{verbatim}': -% we need not redefine '\', '{' and '}'. -% -% Inspired by LaTeX's verbatim command set [latex.ltx] -% -\begingroup - \catcode`\ =\active - \obeylines % - % ignore everything up to the first ^^M, that's the newline at the end - % of the @verbatim input line itself. Otherwise we get an extra blank - % line in the output. - \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}% - % We really want {...\end verbatim} in the body of the macro, but - % without the active space; thus we have to use \xdef and \gobble. -\endgroup -% -\envdef\verbatim{% - \setupverbatim\doverbatim -} -\let\Everbatim = \afterenvbreak - - -% @verbatiminclude FILE - insert text of file in verbatim environment. -% -\def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude} -% -\def\doverbatiminclude#1{% - {% - \makevalueexpandable - \setupverbatim - \indexnofonts % Allow `@@' and other weird things in file names. - \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}% - \input #1 - \afterenvbreak - }% -} - -% @copying ... @end copying. -% Save the text away for @insertcopying later. -% -% We save the uninterpreted tokens, rather than creating a box. -% Saving the text in a box would be much easier, but then all the -% typesetting commands (@smallbook, font changes, etc.) have to be done -% beforehand -- and a) we want @copying to be done first in the source -% file; b) letting users define the frontmatter in as flexible order as -% possible is desirable. -% -\def\copying{\checkenv{}\begingroup\scanargctxt\docopying} -\def\docopying#1@end copying{\endgroup\def\copyingtext{#1}} -% -\def\insertcopying{% - \begingroup - \parindent = 0pt % paragraph indentation looks wrong on title page - \scanexp\copyingtext - \endgroup -} - - -\message{defuns,} -% @defun etc. - -\newskip\defbodyindent \defbodyindent=.4in -\newskip\defargsindent \defargsindent=50pt -\newskip\deflastargmargin \deflastargmargin=18pt -\newcount\defunpenalty - -% Start the processing of @deffn: -\def\startdefun{% - \ifnum\lastpenalty<10000 - \medbreak - \defunpenalty=10003 % Will keep this @deffn together with the - % following @def command, see below. - \else - % If there are two @def commands in a row, we'll have a \nobreak, - % which is there to keep the function description together with its - % header. But if there's nothing but headers, we need to allow a - % break somewhere. Check specifically for penalty 10002, inserted - % by \printdefunline, instead of 10000, since the sectioning - % commands also insert a nobreak penalty, and we don't want to allow - % a break between a section heading and a defun. - % - % As a further refinement, we avoid "club" headers by signalling - % with penalty of 10003 after the very first @deffn in the - % sequence (see above), and penalty of 10002 after any following - % @def command. - \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi - % - % Similarly, after a section heading, do not allow a break. - % But do insert the glue. - \medskip % preceded by discardable penalty, so not a breakpoint - \fi - % - \parindent=0in - \advance\leftskip by \defbodyindent - \exdentamount=\defbodyindent -} - -\def\dodefunx#1{% - % First, check whether we are in the right environment: - \checkenv#1% - % - % As above, allow line break if we have multiple x headers in a row. - % It's not a great place, though. - \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi - % - % And now, it's time to reuse the body of the original defun: - \expandafter\gobbledefun#1% -} -\def\gobbledefun#1\startdefun{} - -% \printdefunline \deffnheader{text} -% -\def\printdefunline#1#2{% - \begingroup - % call \deffnheader: - #1#2 \endheader - % common ending: - \interlinepenalty = 10000 - \advance\rightskip by 0pt plus 1fil\relax - \endgraf - \nobreak\vskip -\parskip - \penalty\defunpenalty % signal to \startdefun and \dodefunx - % Some of the @defun-type tags do not enable magic parentheses, - % rendering the following check redundant. But we don't optimize. - \checkparencounts - \endgroup -} - -\def\Edefun{\endgraf\medbreak} - -% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn; -% the only thing remaining is to define \deffnheader. -% -\def\makedefun#1{% - \expandafter\let\csname E#1\endcsname = \Edefun - \edef\temp{\noexpand\domakedefun - \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}% - \temp -} - -% \domakedefun \deffn \deffnx \deffnheader { (defn. of \deffnheader) } -% -% Define \deffn and \deffnx, without parameters. -% \deffnheader has to be defined explicitly. -% -\def\domakedefun#1#2#3{% - \envdef#1{% - \startdefun - \doingtypefnfalse % distinguish typed functions from all else - \parseargusing\activeparens{\printdefunline#3}% - }% - \def#2{\dodefunx#1}% - \def#3% -} - -\newif\ifdoingtypefn % doing typed function? -\newif\ifrettypeownline % typeset return type on its own line? - -% @deftypefnnewline on|off says whether the return type of typed functions -% are printed on their own line. This affects @deftypefn, @deftypefun, -% @deftypeop, and @deftypemethod. -% -\parseargdef\deftypefnnewline{% - \def\temp{#1}% - \ifx\temp\onword - \expandafter\let\csname SETtxideftypefnnl\endcsname - = \empty - \else\ifx\temp\offword - \expandafter\let\csname SETtxideftypefnnl\endcsname - = \relax - \else - \errhelp = \EMsimple - \errmessage{Unknown @txideftypefnnl value `\temp', - must be on|off}% - \fi\fi -} - -% Untyped functions: - -% @deffn category name args -\makedefun{deffn}{\deffngeneral{}} - -% @deffn category class name args -\makedefun{defop}#1 {\defopon{#1\ \putwordon}} - -% \defopon {category on}class name args -\def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } - -% \deffngeneral {subind}category name args -% -\def\deffngeneral#1#2 #3 #4\endheader{% - % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}. - \dosubind{fn}{\code{#3}}{#1}% - \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}% -} - -% Typed functions: - -% @deftypefn category type name args -\makedefun{deftypefn}{\deftypefngeneral{}} - -% @deftypeop category class type name args -\makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}} - -% \deftypeopon {category on}class type name args -\def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } - -% \deftypefngeneral {subind}category type name args -% -\def\deftypefngeneral#1#2 #3 #4 #5\endheader{% - \dosubind{fn}{\code{#4}}{#1}% - \doingtypefntrue - \defname{#2}{#3}{#4}\defunargs{#5\unskip}% -} - -% Typed variables: - -% @deftypevr category type var args -\makedefun{deftypevr}{\deftypecvgeneral{}} - -% @deftypecv category class type var args -\makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}} - -% \deftypecvof {category of}class type var args -\def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} } - -% \deftypecvgeneral {subind}category type var args -% -\def\deftypecvgeneral#1#2 #3 #4 #5\endheader{% - \dosubind{vr}{\code{#4}}{#1}% - \defname{#2}{#3}{#4}\defunargs{#5\unskip}% -} - -% Untyped variables: - -% @defvr category var args -\makedefun{defvr}#1 {\deftypevrheader{#1} {} } - -% @defcv category class var args -\makedefun{defcv}#1 {\defcvof{#1\ \putwordof}} - -% \defcvof {category of}class var args -\def\defcvof#1#2 {\deftypecvof{#1}#2 {} } - -% Types: - -% @deftp category name args -\makedefun{deftp}#1 #2 #3\endheader{% - \doind{tp}{\code{#2}}% - \defname{#1}{}{#2}\defunargs{#3\unskip}% -} - -% Remaining @defun-like shortcuts: -\makedefun{defun}{\deffnheader{\putwordDeffunc} } -\makedefun{defmac}{\deffnheader{\putwordDefmac} } -\makedefun{defspec}{\deffnheader{\putwordDefspec} } -\makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} } -\makedefun{defvar}{\defvrheader{\putwordDefvar} } -\makedefun{defopt}{\defvrheader{\putwordDefopt} } -\makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} } -\makedefun{defmethod}{\defopon\putwordMethodon} -\makedefun{deftypemethod}{\deftypeopon\putwordMethodon} -\makedefun{defivar}{\defcvof\putwordInstanceVariableof} -\makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof} - -% \defname, which formats the name of the @def (not the args). -% #1 is the category, such as "Function". -% #2 is the return type, if any. -% #3 is the function name. -% -% We are followed by (but not passed) the arguments, if any. -% -\def\defname#1#2#3{% - \par - % Get the values of \leftskip and \rightskip as they were outside the @def... - \advance\leftskip by -\defbodyindent - % - % Determine if we are typesetting the return type of a typed function - % on a line by itself. - \rettypeownlinefalse - \ifdoingtypefn % doing a typed function specifically? - % then check user option for putting return type on its own line: - \expandafter\ifx\csname SETtxideftypefnnl\endcsname\relax \else - \rettypeownlinetrue - \fi - \fi - % - % How we'll format the category name. Putting it in brackets helps - % distinguish it from the body text that may end up on the next line - % just below it. - \def\temp{#1}% - \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi} - % - % Figure out line sizes for the paragraph shape. We'll always have at - % least two. - \tempnum = 2 - % - % The first line needs space for \box0; but if \rightskip is nonzero, - % we need only space for the part of \box0 which exceeds it: - \dimen0=\hsize \advance\dimen0 by -\wd0 \advance\dimen0 by \rightskip - % - % If doing a return type on its own line, we'll have another line. - \ifrettypeownline - \advance\tempnum by 1 - \def\maybeshapeline{0in \hsize}% - \else - \def\maybeshapeline{}% - \fi - % - % The continuations: - \dimen2=\hsize \advance\dimen2 by -\defargsindent - % - % The final paragraph shape: - \parshape \tempnum 0in \dimen0 \maybeshapeline \defargsindent \dimen2 - % - % Put the category name at the right margin. - \noindent - \hbox to 0pt{% - \hfil\box0 \kern-\hsize - % \hsize has to be shortened this way: - \kern\leftskip - % Intentionally do not respect \rightskip, since we need the space. - }% - % - % Allow all lines to be underfull without complaint: - \tolerance=10000 \hbadness=10000 - \exdentamount=\defbodyindent - {% - % defun fonts. We use typewriter by default (used to be bold) because: - % . we're printing identifiers, they should be in tt in principle. - % . in languages with many accents, such as Czech or French, it's - % common to leave accents off identifiers. The result looks ok in - % tt, but exceedingly strange in rm. - % . we don't want -- and --- to be treated as ligatures. - % . this still does not fix the ?` and !` ligatures, but so far no - % one has made identifiers using them :). - \df \tt - \def\temp{#2}% text of the return type - \ifx\temp\empty\else - \tclose{\temp}% typeset the return type - \ifrettypeownline - % put return type on its own line; prohibit line break following: - \hfil\vadjust{\nobreak}\break - \else - \space % type on same line, so just followed by a space - \fi - \fi % no return type - #3% output function name - }% - {\rm\enskip}% hskip 0.5 em of \rmfont - % - \boldbrax - % arguments will be output next, if any. -} - -% Print arguments in slanted roman (not ttsl), inconsistently with using -% tt for the name. This is because literal text is sometimes needed in -% the argument list (groff manual), and ttsl and tt are not very -% distinguishable. Prevent hyphenation at `-' chars. -% -\def\defunargs#1{% - % use sl by default (not ttsl), - % tt for the names. - \df \sl \hyphenchar\font=0 - % - % On the other hand, if an argument has two dashes (for instance), we - % want a way to get ttsl. We used to recommend @var for that, so - % leave the code in, but it's strange for @var to lead to typewriter. - % Nowadays we recommend @code, since the difference between a ttsl hyphen - % and a tt hyphen is pretty tiny. @code also disables ?` !`. - \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}% - #1% - \sl\hyphenchar\font=45 -} - -% We want ()&[] to print specially on the defun line. -% -\def\activeparens{% - \catcode`\(=\active \catcode`\)=\active - \catcode`\[=\active \catcode`\]=\active - \catcode`\&=\active -} - -% Make control sequences which act like normal parenthesis chars. -\let\lparen = ( \let\rparen = ) - -% Be sure that we always have a definition for `(', etc. For example, -% if the fn name has parens in it, \boldbrax will not be in effect yet, -% so TeX would otherwise complain about undefined control sequence. -{ - \activeparens - \global\let(=\lparen \global\let)=\rparen - \global\let[=\lbrack \global\let]=\rbrack - \global\let& = \& - - \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb} - \gdef\magicamp{\let&=\amprm} -} - -\newcount\parencount - -% If we encounter &foo, then turn on ()-hacking afterwards -\newif\ifampseen -\def\amprm#1 {\ampseentrue{\bf\ }} - -\def\parenfont{% - \ifampseen - % At the first level, print parens in roman, - % otherwise use the default font. - \ifnum \parencount=1 \rm \fi - \else - % The \sf parens (in \boldbrax) actually are a little bolder than - % the contained text. This is especially needed for [ and ] . - \sf - \fi -} -\def\infirstlevel#1{% - \ifampseen - \ifnum\parencount=1 - #1% - \fi - \fi -} -\def\bfafterword#1 {#1 \bf} - -\def\opnr{% - \global\advance\parencount by 1 - {\parenfont(}% - \infirstlevel \bfafterword -} -\def\clnr{% - {\parenfont)}% - \infirstlevel \sl - \global\advance\parencount by -1 -} - -\newcount\brackcount -\def\lbrb{% - \global\advance\brackcount by 1 - {\bf[}% -} -\def\rbrb{% - {\bf]}% - \global\advance\brackcount by -1 -} - -\def\checkparencounts{% - \ifnum\parencount=0 \else \badparencount \fi - \ifnum\brackcount=0 \else \badbrackcount \fi -} -% these should not use \errmessage; the glibc manual, at least, actually -% has such constructs (when documenting function pointers). -\def\badparencount{% - \message{Warning: unbalanced parentheses in @def...}% - \global\parencount=0 -} -\def\badbrackcount{% - \message{Warning: unbalanced square brackets in @def...}% - \global\brackcount=0 -} - - -\message{macros,} -% @macro. - -% To do this right we need a feature of e-TeX, \scantokens, -% which we arrange to emulate with a temporary file in ordinary TeX. -\ifx\eTeXversion\thisisundefined - \newwrite\macscribble - \def\scantokens#1{% - \toks0={#1}% - \immediate\openout\macscribble=\jobname.tmp - \immediate\write\macscribble{\the\toks0}% - \immediate\closeout\macscribble - \input \jobname.tmp - } -\fi - -% alias because \c means cedilla in @tex or @math -\let\texinfoc=\c - -\newcount\savedcatcodeone -\newcount\savedcatcodetwo - -% Used at the time of macro expansion. -% Argument is macro body with arguments substituted -\def\scanmacro#1{% - \newlinechar`\^^M - \def\xeatspaces{\eatspaces}% - % - % Temporarily undo catcode changes of \printindex. Set catcode of @ to - % 0 so that @-commands in macro expansions aren't printed literally when - % formatting an index file, where \ is used as the escape character. - \savedcatcodeone=\catcode`\@ - \savedcatcodetwo=\catcode`\\ - \catcode`\@=0 - \catcode`\\=\active - % - % Process the macro body under the current catcode regime. - \scantokens{#1@texinfoc}% - % - \catcode`\@=\savedcatcodeone - \catcode`\\=\savedcatcodetwo - % - % The \texinfoc is to remove the \newlinechar added by \scantokens, and - % can be noticed by \parsearg. - % We avoid surrounding the call to \scantokens with \bgroup and \egroup - % to allow macros to open or close groups themselves. -} - -% Used for copying and captions -\def\scanexp#1{% - \expandafter\scanmacro\expandafter{#1}% -} - -\newcount\paramno % Count of parameters -\newtoks\macname % Macro name -\newif\ifrecursive % Is it recursive? - -% List of all defined macros in the form -% \commondummyword\macro1\commondummyword\macro2... -% Currently is also contains all @aliases; the list can be split -% if there is a need. -\def\macrolist{} - -% Add the macro to \macrolist -\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname} -\def\addtomacrolistxxx#1{% - \toks0 = \expandafter{\macrolist\commondummyword#1}% - \xdef\macrolist{\the\toks0}% -} - -% Utility routines. -% This does \let #1 = #2, with \csnames; that is, -% \let \csname#1\endcsname = \csname#2\endcsname -% (except of course we have to play expansion games). -% -\def\cslet#1#2{% - \expandafter\let - \csname#1\expandafter\endcsname - \csname#2\endcsname -} - -% Trim leading and trailing spaces off a string. -% Concepts from aro-bend problem 15 (see CTAN). -{\catcode`\@=11 -\gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }} -\gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@} -\gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @} -\def\unbrace#1{#1} -\unbrace{\gdef\trim@@@ #1 } #2@{#1} -} - -% Trim a single trailing ^^M off a string. -{\catcode`\^^M=\other \catcode`\Q=3% -\gdef\eatcr #1{\eatcra #1Q^^MQ}% -\gdef\eatcra#1^^MQ{\eatcrb#1Q}% -\gdef\eatcrb#1Q#2Q{#1}% -} - -% Macro bodies are absorbed as an argument in a context where -% all characters are catcode 10, 11 or 12, except \ which is active -% (as in normal texinfo). It is necessary to change the definition of \ -% to recognize macro arguments; this is the job of \mbodybackslash. -% -% Non-ASCII encodings make 8-bit characters active, so un-activate -% them to avoid their expansion. Must do this non-globally, to -% confine the change to the current group. -% -% It's necessary to have hard CRs when the macro is executed. This is -% done by making ^^M (\endlinechar) catcode 12 when reading the macro -% body, and then making it the \newlinechar in \scanmacro. -% -\def\scanctxt{% used as subroutine - \catcode`\"=\other - \catcode`\+=\other - \catcode`\<=\other - \catcode`\>=\other - \catcode`\^=\other - \catcode`\_=\other - \catcode`\|=\other - \catcode`\~=\other - \passthroughcharstrue -} - -\def\scanargctxt{% used for copying and captions, not macros. - \scanctxt - \catcode`\@=\other - \catcode`\\=\other - \catcode`\^^M=\other -} - -\def\macrobodyctxt{% used for @macro definitions - \scanctxt - \catcode`\ =\other - \catcode`\@=\other - \catcode`\{=\other - \catcode`\}=\other - \catcode`\^^M=\other - \usembodybackslash -} - -% Used when scanning braced macro arguments. Note, however, that catcode -% changes here are ineffectual if the macro invocation was nested inside -% an argument to another Texinfo command. -\def\macroargctxt{% - \scanctxt - \catcode`\ =\active - \catcode`\^^M=\other - \catcode`\\=\active -} - -\def\macrolineargctxt{% used for whole-line arguments without braces - \scanctxt - \catcode`\{=\other - \catcode`\}=\other -} - -% \mbodybackslash is the definition of \ in @macro bodies. -% It maps \foo\ => \csname macarg.foo\endcsname => #N -% where N is the macro parameter number. -% We define \csname macarg.\endcsname to be \realbackslash, so -% \\ in macro replacement text gets you a backslash. -% -{\catcode`@=0 @catcode`@\=@active - @gdef@usembodybackslash{@let\=@mbodybackslash} - @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname} -} -\expandafter\def\csname macarg.\endcsname{\realbackslash} - -\def\margbackslash#1{\char`\#1 } - -\def\macro{\recursivefalse\parsearg\macroxxx} -\def\rmacro{\recursivetrue\parsearg\macroxxx} - -\def\macroxxx#1{% - \getargs{#1}% now \macname is the macname and \argl the arglist - \ifx\argl\empty % no arguments - \paramno=0\relax - \else - \expandafter\parsemargdef \argl;% - \if\paramno>256\relax - \ifx\eTeXversion\thisisundefined - \errhelp = \EMsimple - \errmessage{You need eTeX to compile a file with macros with more than 256 arguments} - \fi - \fi - \fi - \if1\csname ismacro.\the\macname\endcsname - \message{Warning: redefining \the\macname}% - \else - \expandafter\ifx\csname \the\macname\endcsname \relax - \else \errmessage{Macro name \the\macname\space already defined}\fi - \global\cslet{macsave.\the\macname}{\the\macname}% - \global\expandafter\let\csname ismacro.\the\macname\endcsname=1% - \addtomacrolist{\the\macname}% - \fi - \begingroup \macrobodyctxt - \ifrecursive \expandafter\parsermacbody - \else \expandafter\parsemacbody - \fi} - -\parseargdef\unmacro{% - \if1\csname ismacro.#1\endcsname - \global\cslet{#1}{macsave.#1}% - \global\expandafter\let \csname ismacro.#1\endcsname=0% - % Remove the macro name from \macrolist: - \begingroup - \expandafter\let\csname#1\endcsname \relax - \let\commondummyword\unmacrodo - \xdef\macrolist{\macrolist}% - \endgroup - \else - \errmessage{Macro #1 not defined}% - \fi -} - -% Called by \do from \dounmacro on each macro. The idea is to omit any -% macro definitions that have been changed to \relax. -% -\def\unmacrodo#1{% - \ifx #1\relax - % remove this - \else - \noexpand\commondummyword \noexpand#1% - \fi -} - -% \getargs -- Parse the arguments to a @macro line. Set \macname to -% the name of the macro, and \argl to the braced argument list. -\def\getargs#1{\getargsxxx#1{}} -\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs} -\def\getmacname#1 #2\relax{\macname={#1}} -\def\getmacargs#1{\def\argl{#1}} -% This made use of the feature that if the last token of a -% is #, then the preceding argument is delimited by -% an opening brace, and that opening brace is not consumed. - -% Parse the optional {params} list to @macro or @rmacro. -% Set \paramno to the number of arguments, -% and \paramlist to a parameter text for the macro (e.g. #1,#2,#3 for a -% three-param macro.) Define \macarg.BLAH for each BLAH in the params -% list to some hook where the argument is to be expanded. If there are -% less than 10 arguments that hook is to be replaced by ##N where N -% is the position in that list, that is to say the macro arguments are to be -% defined `a la TeX in the macro body. -% -% That gets used by \mbodybackslash (above). -% -% If there are 10 or more arguments, a different technique is used: see -% \parsemmanyargdef. -% -\def\parsemargdef#1;{% - \paramno=0\def\paramlist{}% - \let\hash\relax - % \hash is redefined to `#' later to get it into definitions - \let\xeatspaces\relax - \parsemargdefxxx#1,;,% - \ifnum\paramno<10\relax\else - \paramno0\relax - \parsemmanyargdef@@#1,;,% 10 or more arguments - \fi -} -\def\parsemargdefxxx#1,{% - \if#1;\let\next=\relax - \else \let\next=\parsemargdefxxx - \advance\paramno by 1 - \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname - {\xeatspaces{\hash\the\paramno}}% - \edef\paramlist{\paramlist\hash\the\paramno,}% - \fi\next} - -% \parsemacbody, \parsermacbody -% -% Read recursive and nonrecursive macro bodies. (They're different since -% rec and nonrec macros end differently.) -% -% We are in \macrobodyctxt, and the \xdef causes backslashshes in the macro -% body to be transformed. -% Set \macrobody to the body of the macro, and call \defmacro. -% -{\catcode`\ =\other\long\gdef\parsemacbody#1@end macro{% -\xdef\macrobody{\eatcr{#1}}\endgroup\defmacro}}% -{\catcode`\ =\other\long\gdef\parsermacbody#1@end rmacro{% -\xdef\macrobody{\eatcr{#1}}\endgroup\defmacro}}% - -% Make @ a letter, so that we can make private-to-Texinfo macro names. -\edef\texiatcatcode{\the\catcode`\@} -\catcode `@=11\relax - -%%%%%%%%%%%%%% Code for > 10 arguments only %%%%%%%%%%%%%%%%%% - -% If there are 10 or more arguments, a different technique is used, where the -% hook remains in the body, and when macro is to be expanded the body is -% processed again to replace the arguments. -% -% In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the -% argument N value and then \edef the body (nothing else will expand because of -% the catcode regime under which the body was input). -% -% If you compile with TeX (not eTeX), and you have macros with 10 or more -% arguments, no macro can have more than 256 arguments (else error). -% -% In case that there are 10 or more arguments we parse again the arguments -% list to set new definitions for the \macarg.BLAH macros corresponding to -% each BLAH argument. It was anyhow needed to parse already once this list -% in order to count the arguments, and as macros with at most 9 arguments -% are by far more frequent than macro with 10 or more arguments, defining -% twice the \macarg.BLAH macros does not cost too much processing power. -\def\parsemmanyargdef@@#1,{% - \if#1;\let\next=\relax - \else - \let\next=\parsemmanyargdef@@ - \edef\tempb{\eatspaces{#1}}% - \expandafter\def\expandafter\tempa - \expandafter{\csname macarg.\tempb\endcsname}% - % Note that we need some extra \noexpand\noexpand, this is because we - % don't want \the to be expanded in the \parsermacbody as it uses an - % \xdef . - \expandafter\edef\tempa - {\noexpand\noexpand\noexpand\the\toks\the\paramno}% - \advance\paramno by 1\relax - \fi\next} - - -\let\endargs@\relax -\let\nil@\relax -\def\nilm@{\nil@}% -\long\def\nillm@{\nil@}% - -% This macro is expanded during the Texinfo macro expansion, not during its -% definition. It gets all the arguments' values and assigns them to macros -% macarg.ARGNAME -% -% #1 is the macro name -% #2 is the list of argument names -% #3 is the list of argument values -\def\getargvals@#1#2#3{% - \def\macargdeflist@{}% - \def\saveparamlist@{#2}% Need to keep a copy for parameter expansion. - \def\paramlist{#2,\nil@}% - \def\macroname{#1}% - \begingroup - \macroargctxt - \def\argvaluelist{#3,\nil@}% - \def\@tempa{#3}% - \ifx\@tempa\empty - \setemptyargvalues@ - \else - \getargvals@@ - \fi -} -\def\getargvals@@{% - \ifx\paramlist\nilm@ - % Some sanity check needed here that \argvaluelist is also empty. - \ifx\argvaluelist\nillm@ - \else - \errhelp = \EMsimple - \errmessage{Too many arguments in macro `\macroname'!}% - \fi - \let\next\macargexpandinbody@ - \else - \ifx\argvaluelist\nillm@ - % No more arguments values passed to macro. Set remaining named-arg - % macros to empty. - \let\next\setemptyargvalues@ - \else - % pop current arg name into \@tempb - \def\@tempa##1{\pop@{\@tempb}{\paramlist}##1\endargs@}% - \expandafter\@tempa\expandafter{\paramlist}% - % pop current argument value into \@tempc - \def\@tempa##1{\longpop@{\@tempc}{\argvaluelist}##1\endargs@}% - \expandafter\@tempa\expandafter{\argvaluelist}% - % Here \@tempb is the current arg name and \@tempc is the current arg value. - % First place the new argument macro definition into \@tempd - \expandafter\macname\expandafter{\@tempc}% - \expandafter\let\csname macarg.\@tempb\endcsname\relax - \expandafter\def\expandafter\@tempe\expandafter{% - \csname macarg.\@tempb\endcsname}% - \edef\@tempd{\long\def\@tempe{\the\macname}}% - \push@\@tempd\macargdeflist@ - \let\next\getargvals@@ - \fi - \fi - \next -} - -\def\push@#1#2{% - \expandafter\expandafter\expandafter\def - \expandafter\expandafter\expandafter#2% - \expandafter\expandafter\expandafter{% - \expandafter#1#2}% -} - -% Replace arguments by their values in the macro body, and place the result -% in macro \@tempa. -% -\def\macvalstoargs@{% - % To do this we use the property that token registers that are \the'ed - % within an \edef expand only once. So we are going to place all argument - % values into respective token registers. - % - % First we save the token context, and initialize argument numbering. - \begingroup - \paramno0\relax - % Then, for each argument number #N, we place the corresponding argument - % value into a new token list register \toks#N - \expandafter\putargsintokens@\saveparamlist@,;,% - % Then, we expand the body so that argument are replaced by their - % values. The trick for values not to be expanded themselves is that they - % are within tokens and that tokens expand only once in an \edef . - \edef\@tempc{\csname mac.\macroname .body\endcsname}% - % Now we restore the token stack pointer to free the token list registers - % which we have used, but we make sure that expanded body is saved after - % group. - \expandafter - \endgroup - \expandafter\def\expandafter\@tempa\expandafter{\@tempc}% - } - -% Define the named-macro outside of this group and then close this group. -% -\def\macargexpandinbody@{% - \expandafter - \endgroup - \macargdeflist@ - % First the replace in body the macro arguments by their values, the result - % is in \@tempa . - \macvalstoargs@ - % Then we point at the \norecurse or \gobble (for recursive) macro value - % with \@tempb . - \expandafter\let\expandafter\@tempb\csname mac.\macroname .recurse\endcsname - % Depending on whether it is recursive or not, we need some tailing - % \egroup . - \ifx\@tempb\gobble - \let\@tempc\relax - \else - \let\@tempc\egroup - \fi - % And now we do the real job: - \edef\@tempd{\noexpand\@tempb{\macroname}\noexpand\scanmacro{\@tempa}\@tempc}% - \@tempd -} - -\def\putargsintokens@#1,{% - \if#1;\let\next\relax - \else - \let\next\putargsintokens@ - % First we allocate the new token list register, and give it a temporary - % alias \@tempb . - \toksdef\@tempb\the\paramno - % Then we place the argument value into that token list register. - \expandafter\let\expandafter\@tempa\csname macarg.#1\endcsname - \expandafter\@tempb\expandafter{\@tempa}% - \advance\paramno by 1\relax - \fi - \next -} - -% Trailing missing arguments are set to empty. -% -\def\setemptyargvalues@{% - \ifx\paramlist\nilm@ - \let\next\macargexpandinbody@ - \else - \expandafter\setemptyargvaluesparser@\paramlist\endargs@ - \let\next\setemptyargvalues@ - \fi - \next -} - -\def\setemptyargvaluesparser@#1,#2\endargs@{% - \expandafter\def\expandafter\@tempa\expandafter{% - \expandafter\def\csname macarg.#1\endcsname{}}% - \push@\@tempa\macargdeflist@ - \def\paramlist{#2}% -} - -% #1 is the element target macro -% #2 is the list macro -% #3,#4\endargs@ is the list value -\def\pop@#1#2#3,#4\endargs@{% - \def#1{#3}% - \def#2{#4}% -} -\long\def\longpop@#1#2#3,#4\endargs@{% - \long\def#1{#3}% - \long\def#2{#4}% -} - - -%%%%%%%%%%%%%% End of code for > 10 arguments %%%%%%%%%%%%%%%%%% - - -% This defines a Texinfo @macro or @rmacro, called by \parsemacbody. -% \macrobody has the body of the macro in it, with placeholders for -% its parameters, looking like "\xeatspaces{\hash 1}". -% \paramno is the number of parameters -% \paramlist is a TeX parameter text, e.g. "#1,#2,#3," -% There are four cases: macros of zero, one, up to nine, and many arguments. -% \xdef is used so that macro definitions will survive the file -% they're defined in: @include reads the file inside a group. -% -\def\defmacro{% - \let\hash=##% convert placeholders to macro parameter chars - \ifnum\paramno=1 - \def\xeatspaces##1{##1}% - % This removes the pair of braces around the argument. We don't - % use \eatspaces, because this can cause ends of lines to be lost - % when the argument to \eatspaces is read, leading to line-based - % commands like "@itemize" not being read correctly. - \else - \let\xeatspaces\relax % suppress expansion - \fi - \ifcase\paramno - % 0 - \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup - \noexpand\spaceisspace - \noexpand\endlineisspace - \noexpand\expandafter % skip any whitespace after the macro name. - \expandafter\noexpand\csname\the\macname @@@\endcsname}% - \expandafter\xdef\csname\the\macname @@@\endcsname{% - \egroup - \noexpand\scanmacro{\macrobody}}% - \or % 1 - \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup - \noexpand\braceorline - \expandafter\noexpand\csname\the\macname @@@\endcsname}% - \expandafter\xdef\csname\the\macname @@@\endcsname##1{% - \egroup - \noexpand\scanmacro{\macrobody}% - }% - \else % at most 9 - \ifnum\paramno<10\relax - % @MACNAME sets the context for reading the macro argument - % @MACNAME@@ gets the argument, processes backslashes and appends a - % comma. - % @MACNAME@@@ removes braces surrounding the argument list. - % @MACNAME@@@@ scans the macro body with arguments substituted. - \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup - \noexpand\expandafter % This \expandafter skip any spaces after the - \noexpand\macroargctxt % macro before we change the catcode of space. - \noexpand\expandafter - \expandafter\noexpand\csname\the\macname @@\endcsname}% - \expandafter\xdef\csname\the\macname @@\endcsname##1{% - \noexpand\passargtomacro - \expandafter\noexpand\csname\the\macname @@@\endcsname{##1,}}% - \expandafter\xdef\csname\the\macname @@@\endcsname##1{% - \expandafter\noexpand\csname\the\macname @@@@\endcsname ##1}% - \expandafter\expandafter - \expandafter\xdef - \expandafter\expandafter - \csname\the\macname @@@@\endcsname\paramlist{% - \egroup\noexpand\scanmacro{\macrobody}}% - \else % 10 or more: - \expandafter\xdef\csname\the\macname\endcsname{% - \noexpand\getargvals@{\the\macname}{\argl}% - }% - \global\expandafter\let\csname mac.\the\macname .body\endcsname\macrobody - \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble - \fi - \fi} - -\catcode `\@\texiatcatcode\relax % end private-to-Texinfo catcodes - -\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}} - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -{\catcode`\@=0 \catcode`\\=13 % We need to manipulate \ so use @ as escape -@catcode`@_=11 % private names -@catcode`@!=11 % used as argument separator - -% \passargtomacro#1#2 - -% Call #1 with a list of tokens #2, with any doubled backslashes in #2 -% compressed to one. -% -% This implementation works by expansion, and not execution (so we cannot use -% \def or similar). This reduces the risk of this failing in contexts where -% complete expansion is done with no execution (for example, in writing out to -% an auxiliary file for an index entry). -% -% State is kept in the input stream: the argument passed to -% @look_ahead, @gobble_and_check_finish and @add_segment is -% -% THE_MACRO ARG_RESULT ! {PENDING_BS} NEXT_TOKEN (... rest of input) -% -% where: -% THE_MACRO - name of the macro we want to call -% ARG_RESULT - argument list we build to pass to that macro -% PENDING_BS - either a backslash or nothing -% NEXT_TOKEN - used to look ahead in the input stream to see what's coming next - -@gdef@passargtomacro#1#2{% - @add_segment #1!{}@relax#2\@_finish\% -} -@gdef@_finish{@_finishx} @global@let@_finishx@relax - -% #1 - THE_MACRO ARG_RESULT -% #2 - PENDING_BS -% #3 - NEXT_TOKEN -% #4 used to look ahead -% -% If the next token is not a backslash, process the rest of the argument; -% otherwise, remove the next token. -@gdef@look_ahead#1!#2#3#4{% - @ifx#4\% - @expandafter@gobble_and_check_finish - @else - @expandafter@add_segment - @fi#1!{#2}#4#4% -} - -% #1 - THE_MACRO ARG_RESULT -% #2 - PENDING_BS -% #3 - NEXT_TOKEN -% #4 should be a backslash, which is gobbled. -% #5 looks ahead -% -% Double backslash found. Add a single backslash, and look ahead. -@gdef@gobble_and_check_finish#1!#2#3#4#5{% - @add_segment#1\!{}#5#5% -} - -@gdef@is_fi{@fi} - -% #1 - THE_MACRO ARG_RESULT -% #2 - PENDING_BS -% #3 - NEXT_TOKEN -% #4 is input stream until next backslash -% -% Input stream is either at the start of the argument, or just after a -% backslash sequence, either a lone backslash, or a doubled backslash. -% NEXT_TOKEN contains the first token in the input stream: if it is \finish, -% finish; otherwise, append to ARG_RESULT the segment of the argument up until -% the next backslash. PENDING_BACKSLASH contains a backslash to represent -% a backslash just before the start of the input stream that has not been -% added to ARG_RESULT. -@gdef@add_segment#1!#2#3#4\{% -@ifx#3@_finish - @call_the_macro#1!% -@else - % append the pending backslash to the result, followed by the next segment - @expandafter@is_fi@look_ahead#1#2#4!{\}@fi - % this @fi is discarded by @look_ahead. - % we can't get rid of it with \expandafter because we don't know how - % long #4 is. -} - -% #1 - THE_MACRO -% #2 - ARG_RESULT -% #3 discards the res of the conditional in @add_segment, and @is_fi ends the -% conditional. -@gdef@call_the_macro#1#2!#3@fi{@is_fi #1{#2}} - -} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% \braceorline MAC is used for a one-argument macro MAC. It checks -% whether the next non-whitespace character is a {. It sets the context -% for reading the argument (slightly different in the two cases). Then, -% to read the argument, in the whole-line case, it then calls the regular -% \parsearg MAC; in the lbrace case, it calls \passargtomacro MAC. -% -\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx} -\def\braceorlinexxx{% - \ifx\nchar\bgroup - \macroargctxt - \expandafter\passargtomacro - \else - \macrolineargctxt\expandafter\parsearg - \fi \macnamexxx} - - -% @alias. -% We need some trickery to remove the optional spaces around the equal -% sign. Make them active and then expand them all to nothing. -% -\def\alias{\parseargusing\obeyspaces\aliasxxx} -\def\aliasxxx #1{\aliasyyy#1\relax} -\def\aliasyyy #1=#2\relax{% - {% - \expandafter\let\obeyedspace=\empty - \addtomacrolist{#1}% - \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}% - }% - \next -} - - -\message{cross references,} - -\newwrite\auxfile -\newif\ifhavexrefs % True if xref values are known. -\newif\ifwarnedxrefs % True if we warned once that they aren't known. - -% @inforef is relatively simple. -\def\inforef #1{\inforefzzz #1,,,,**} -\def\inforefzzz #1,#2,#3,#4**{% - \putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}}, - node \samp{\ignorespaces#1{}}} - -% @node's only job in TeX is to define \lastnode, which is used in -% cross-references. The @node line might or might not have commas, and -% might or might not have spaces before the first comma, like: -% @node foo , bar , ... -% We don't want such trailing spaces in the node name. -% -\parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse} -% -% also remove a trailing comma, in case of something like this: -% @node Help-Cross, , , Cross-refs -\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse} -\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}} - -\let\nwnode=\node -\let\lastnode=\empty - -% Write a cross-reference definition for the current node. #1 is the -% type (Ynumbered, Yappendix, Ynothing). -% -\def\donoderef#1{% - \ifx\lastnode\empty\else - \setref{\lastnode}{#1}% - \global\let\lastnode=\empty - \fi -} - -% @anchor{NAME} -- define xref target at arbitrary point. -% -\newcount\savesfregister -% -\def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi} -\def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi} -\def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces} - -% \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an -% anchor), which consists of three parts: -% 1) NAME-title - the current sectioning name taken from \lastsection, -% or the anchor name. -% 2) NAME-snt - section number and type, passed as the SNT arg, or -% empty for anchors. -% 3) NAME-pg - the page number. -% -% This is called from \donoderef, \anchor, and \dofloat. In the case of -% floats, there is an additional part, which is not written here: -% 4) NAME-lof - the text as it should appear in a @listoffloats. -% -\def\setref#1#2{% - \pdfmkdest{#1}% - \iflinks - {% - \requireauxfile - \atdummies % preserve commands, but don't expand them - % match definition in \xrdef, \refx, \xrefX. - \def\value##1{##1}% - \edef\writexrdef##1##2{% - \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef - ##1}{##2}}% these are parameters of \writexrdef - }% - \toks0 = \expandafter{\lastsection}% - \immediate \writexrdef{title}{\the\toks0 }% - \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc. - \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, at \shipout - }% - \fi -} - -% @xrefautosectiontitle on|off says whether @section(ing) names are used -% automatically in xrefs, if the third arg is not explicitly specified. -% This was provided as a "secret" @set xref-automatic-section-title -% variable, now it's official. -% -\parseargdef\xrefautomaticsectiontitle{% - \def\temp{#1}% - \ifx\temp\onword - \expandafter\let\csname SETxref-automatic-section-title\endcsname - = \empty - \else\ifx\temp\offword - \expandafter\let\csname SETxref-automatic-section-title\endcsname - = \relax - \else - \errhelp = \EMsimple - \errmessage{Unknown @xrefautomaticsectiontitle value `\temp', - must be on|off}% - \fi\fi -} - -% -% @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is -% the node name, #2 the name of the Info cross-reference, #3 the printed -% node name, #4 the name of the Info file, #5 the name of the printed -% manual. All but the node name can be omitted. -% -\def\pxref{\putwordsee{} \xrefXX} -\def\xref{\putwordSee{} \xrefXX} -\def\ref{\xrefXX} - -\def\xrefXX#1{\def\xrefXXarg{#1}\futurelet\tokenafterxref\xrefXXX} -\def\xrefXXX{\expandafter\xrefX\expandafter[\xrefXXarg,,,,,,,]} -% -\newbox\toprefbox -\newbox\printedrefnamebox -\newbox\infofilenamebox -\newbox\printedmanualbox -% -\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup - \unsepspaces - % - % Get args without leading/trailing spaces. - \def\printedrefname{\ignorespaces #3}% - \setbox\printedrefnamebox = \hbox{\printedrefname\unskip}% - % - \def\infofilename{\ignorespaces #4}% - \setbox\infofilenamebox = \hbox{\infofilename\unskip}% - % - \def\printedmanual{\ignorespaces #5}% - \setbox\printedmanualbox = \hbox{\printedmanual\unskip}% - % - % If the printed reference name (arg #3) was not explicitly given in - % the @xref, figure out what we want to use. - \ifdim \wd\printedrefnamebox = 0pt - % No printed node name was explicitly given. - \expandafter\ifx\csname SETxref-automatic-section-title\endcsname \relax - % Not auto section-title: use node name inside the square brackets. - \def\printedrefname{\ignorespaces #1}% - \else - % Auto section-title: use chapter/section title inside - % the square brackets if we have it. - \ifdim \wd\printedmanualbox > 0pt - % It is in another manual, so we don't have it; use node name. - \def\printedrefname{\ignorespaces #1}% - \else - \ifhavexrefs - % We (should) know the real title if we have the xref values. - \def\printedrefname{\refx{#1-title}{}}% - \else - % Otherwise just copy the Info node name. - \def\printedrefname{\ignorespaces #1}% - \fi% - \fi - \fi - \fi - % - % Make link in pdf output. - \ifpdf - % For pdfTeX and LuaTeX - {\indexnofonts - \makevalueexpandable - \turnoffactive - % This expands tokens, so do it after making catcode changes, so _ - % etc. don't get their TeX definitions. This ignores all spaces in - % #4, including (wrongly) those in the middle of the filename. - \getfilename{#4}% - % - % This (wrongly) does not take account of leading or trailing - % spaces in #1, which should be ignored. - \setpdfdestname{#1}% - % - \ifx\pdfdestname\empty - \def\pdfdestname{Top}% no empty targets - \fi - % - \leavevmode - \startlink attr{/Border [0 0 0]}% - \ifnum\filenamelength>0 - goto file{\the\filename.pdf} name{\pdfdestname}% - \else - goto name{\pdfmkpgn{\pdfdestname}}% - \fi - }% - \setcolor{\linkcolor}% - \else - \ifx\XeTeXrevision\thisisundefined - \else - % For XeTeX - {\indexnofonts - \makevalueexpandable - \turnoffactive - % This expands tokens, so do it after making catcode changes, so _ - % etc. don't get their TeX definitions. This ignores all spaces in - % #4, including (wrongly) those in the middle of the filename. - \getfilename{#4}% - % - % This (wrongly) does not take account of leading or trailing - % spaces in #1, which should be ignored. - \setpdfdestname{#1}% - % - \ifx\pdfdestname\empty - \def\pdfdestname{Top}% no empty targets - \fi - % - \leavevmode - \ifnum\filenamelength>0 - % With default settings, - % XeTeX (xdvipdfmx) replaces link destination names with integers. - % In this case, the replaced destination names of - % remote PDFs are no longer known. In order to avoid a replacement, - % you can use xdvipdfmx's command line option `-C 0x0010'. - % If you use XeTeX 0.99996+ (TeX Live 2016+), - % this command line option is no longer necessary - % because we can use the `dvipdfmx:config' special. - \special{pdf:bann << /Border [0 0 0] /Type /Annot /Subtype /Link /A - << /S /GoToR /F (\the\filename.pdf) /D (\pdfdestname) >> >>}% - \else - \special{pdf:bann << /Border [0 0 0] /Type /Annot /Subtype /Link /A - << /S /GoTo /D (\pdfdestname) >> >>}% - \fi - }% - \setcolor{\linkcolor}% - \fi - \fi - {% - % Have to otherify everything special to allow the \csname to - % include an _ in the xref name, etc. - \indexnofonts - \turnoffactive - \def\value##1{##1}% - \expandafter\global\expandafter\let\expandafter\Xthisreftitle - \csname XR#1-title\endcsname - }% - % - % Float references are printed completely differently: "Figure 1.2" - % instead of "[somenode], p.3". \iffloat distinguishes them by - % \Xthisreftitle being set to a magic string. - \iffloat\Xthisreftitle - % If the user specified the print name (third arg) to the ref, - % print it instead of our usual "Figure 1.2". - \ifdim\wd\printedrefnamebox = 0pt - \refx{#1-snt}{}% - \else - \printedrefname - \fi - % - % If the user also gave the printed manual name (fifth arg), append - % "in MANUALNAME". - \ifdim \wd\printedmanualbox > 0pt - \space \putwordin{} \cite{\printedmanual}% - \fi - \else - % node/anchor (non-float) references. - % - % If we use \unhbox to print the node names, TeX does not insert - % empty discretionaries after hyphens, which means that it will not - % find a line break at a hyphen in a node names. Since some manuals - % are best written with fairly long node names, containing hyphens, - % this is a loss. Therefore, we give the text of the node name - % again, so it is as if TeX is seeing it for the first time. - % - \ifdim \wd\printedmanualbox > 0pt - % Cross-manual reference with a printed manual name. - % - \crossmanualxref{\cite{\printedmanual\unskip}}% - % - \else\ifdim \wd\infofilenamebox > 0pt - % Cross-manual reference with only an info filename (arg 4), no - % printed manual name (arg 5). This is essentially the same as - % the case above; we output the filename, since we have nothing else. - % - \crossmanualxref{\code{\infofilename\unskip}}% - % - \else - % Reference within this manual. - % - % _ (for example) has to be the character _ for the purposes of the - % control sequence corresponding to the node, but it has to expand - % into the usual \leavevmode...\vrule stuff for purposes of - % printing. So we \turnoffactive for the \refx-snt, back on for the - % printing, back off for the \refx-pg. - {\turnoffactive - % Only output a following space if the -snt ref is nonempty; for - % @unnumbered and @anchor, it won't be. - \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}% - \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi - }% - % output the `[mynode]' via the macro below so it can be overridden. - \xrefprintnodename\printedrefname - % - % But we always want a comma and a space: - ,\space - % - % output the `page 3'. - \turnoffactive \putwordpage\tie\refx{#1-pg}{}% - % Add a , if xref followed by a space - \if\space\noexpand\tokenafterxref ,% - \else\ifx\ \tokenafterxref ,% @TAB - \else\ifx\*\tokenafterxref ,% @* - \else\ifx\ \tokenafterxref ,% @SPACE - \else\ifx\ - \tokenafterxref ,% @NL - \else\ifx\tie\tokenafterxref ,% @tie - \fi\fi\fi\fi\fi\fi - \fi\fi - \fi - \endlink -\endgroup} - -% Output a cross-manual xref to #1. Used just above (twice). -% -% Only include the text "Section ``foo'' in" if the foo is neither -% missing or Top. Thus, @xref{,,,foo,The Foo Manual} outputs simply -% "see The Foo Manual", the idea being to refer to the whole manual. -% -% But, this being TeX, we can't easily compare our node name against the -% string "Top" while ignoring the possible spaces before and after in -% the input. By adding the arbitrary 7sp below, we make it much less -% likely that a real node name would have the same width as "Top" (e.g., -% in a monospaced font). Hopefully it will never happen in practice. -% -% For the same basic reason, we retypeset the "Top" at every -% reference, since the current font is indeterminate. -% -\def\crossmanualxref#1{% - \setbox\toprefbox = \hbox{Top\kern7sp}% - \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}% - \ifdim \wd2 > 7sp % nonempty? - \ifdim \wd2 = \wd\toprefbox \else % same as Top? - \putwordSection{} ``\printedrefname'' \putwordin{}\space - \fi - \fi - #1% -} - -% This macro is called from \xrefX for the `[nodename]' part of xref -% output. It's a separate macro only so it can be changed more easily, -% since square brackets don't work well in some documents. Particularly -% one that Bob is working on :). -% -\def\xrefprintnodename#1{[#1]} - -% Things referred to by \setref. -% -\def\Ynothing{} -\def\Yomitfromtoc{} -\def\Ynumbered{% - \ifnum\secno=0 - \putwordChapter@tie \the\chapno - \else \ifnum\subsecno=0 - \putwordSection@tie \the\chapno.\the\secno - \else \ifnum\subsubsecno=0 - \putwordSection@tie \the\chapno.\the\secno.\the\subsecno - \else - \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno - \fi\fi\fi -} -\def\Yappendix{% - \ifnum\secno=0 - \putwordAppendix@tie @char\the\appendixno{}% - \else \ifnum\subsecno=0 - \putwordSection@tie @char\the\appendixno.\the\secno - \else \ifnum\subsubsecno=0 - \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno - \else - \putwordSection@tie - @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno - \fi\fi\fi -} - -% \refx{NAME}{SUFFIX} - reference a cross-reference string named NAME. SUFFIX -% is output afterwards if non-empty. -\def\refx#1#2{% - \requireauxfile - {% - \indexnofonts - \otherbackslash - \def\value##1{##1}% - \expandafter\global\expandafter\let\expandafter\thisrefX - \csname XR#1\endcsname - }% - \ifx\thisrefX\relax - % If not defined, say something at least. - \angleleft un\-de\-fined\angleright - \iflinks - \ifhavexrefs - {\toks0 = {#1}% avoid expansion of possibly-complex value - \message{\linenumber Undefined cross reference `\the\toks0'.}}% - \else - \ifwarnedxrefs\else - \global\warnedxrefstrue - \message{Cross reference values unknown; you must run TeX again.}% - \fi - \fi - \fi - \else - % It's defined, so just use it. - \thisrefX - \fi - #2% Output the suffix in any case. -} - -% This is the macro invoked by entries in the aux file. Define a control -% sequence for a cross-reference target (we prepend XR to the control sequence -% name to avoid collisions). The value is the page number. If this is a float -% type, we have more work to do. -% -\def\xrdef#1#2{% - {% Expand the node or anchor name to remove control sequences. - % \turnoffactive stops 8-bit characters being changed to commands - % like @'e. \refx does the same to retrieve the value in the definition. - \indexnofonts - \turnoffactive - \def\value##1{##1}% - \xdef\safexrefname{#1}% - }% - % - \bgroup - \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% - \egroup - % We put the \gdef inside a group to avoid the definitions building up on - % TeX's save stack, which can cause it to run out of space for aux files with - % thousands of lines. \gdef doesn't use the save stack, but \csname does - % when it defines an unknown control sequence as \relax. - % - % Was that xref control sequence that we just defined for a float? - \expandafter\iffloat\csname XR\safexrefname\endcsname - % it was a float, and we have the (safe) float type in \iffloattype. - \expandafter\let\expandafter\floatlist - \csname floatlist\iffloattype\endcsname - % - % Is this the first time we've seen this float type? - \expandafter\ifx\floatlist\relax - \toks0 = {\do}% yes, so just \do - \else - % had it before, so preserve previous elements in list. - \toks0 = \expandafter{\floatlist\do}% - \fi - % - % Remember this xref in the control sequence \floatlistFLOATTYPE, - % for later use in \listoffloats. - \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0 - {\safexrefname}}% - \fi -} - -% If working on a large document in chapters, it is convenient to -% be able to disable indexing, cross-referencing, and contents, for test runs. -% This is done with @novalidate at the beginning of the file. -% -\newif\iflinks \linkstrue % by default we want the aux files. -\let\novalidate = \linksfalse - -% Used when writing to the aux file, or when using data from it. -\def\requireauxfile{% - \iflinks - \tryauxfile - % Open the new aux file. TeX will close it automatically at exit. - \immediate\openout\auxfile=\jobname.aux - \fi - \global\let\requireauxfile=\relax % Only do this once. -} - -% Read the last existing aux file, if any. No error if none exists. -% -\def\tryauxfile{% - \openin 1 \jobname.aux - \ifeof 1 \else - \readdatafile{aux}% - \global\havexrefstrue - \fi - \closein 1 -} - -\def\setupdatafile{% - \catcode`\^^@=\other - \catcode`\^^A=\other - \catcode`\^^B=\other - \catcode`\^^C=\other - \catcode`\^^D=\other - \catcode`\^^E=\other - \catcode`\^^F=\other - \catcode`\^^G=\other - \catcode`\^^H=\other - \catcode`\^^K=\other - \catcode`\^^L=\other - \catcode`\^^N=\other - \catcode`\^^P=\other - \catcode`\^^Q=\other - \catcode`\^^R=\other - \catcode`\^^S=\other - \catcode`\^^T=\other - \catcode`\^^U=\other - \catcode`\^^V=\other - \catcode`\^^W=\other - \catcode`\^^X=\other - \catcode`\^^Z=\other - \catcode`\^^[=\other - \catcode`\^^\=\other - \catcode`\^^]=\other - \catcode`\^^^=\other - \catcode`\^^_=\other - % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc. - % in xref tags, i.e., node names. But since ^^e4 notation isn't - % supported in the main text, it doesn't seem desirable. Furthermore, - % that is not enough: for node names that actually contain a ^ - % character, we would end up writing a line like this: 'xrdef {'hat - % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first - % argument, and \hat is not an expandable control sequence. It could - % all be worked out, but why? Either we support ^^ or we don't. - % - % The other change necessary for this was to define \auxhat: - % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter - % and then to call \auxhat in \setq. - % - \catcode`\^=\other - % - % Special characters. Should be turned off anyway, but... - \catcode`\~=\other - \catcode`\[=\other - \catcode`\]=\other - \catcode`\"=\other - \catcode`\_=\other - \catcode`\|=\other - \catcode`\<=\other - \catcode`\>=\other - \catcode`\$=\other - \catcode`\#=\other - \catcode`\&=\other - \catcode`\%=\other - \catcode`+=\other % avoid \+ for paranoia even though we've turned it off - % - % This is to support \ in node names and titles, since the \ - % characters end up in a \csname. It's easier than - % leaving it active and making its active definition an actual \ - % character. What I don't understand is why it works in the *value* - % of the xrdef. Seems like it should be a catcode12 \, and that - % should not typeset properly. But it works, so I'm moving on for - % now. --karl, 15jan04. - \catcode`\\=\other - % - % @ is our escape character in .aux files, and we need braces. - \catcode`\{=1 - \catcode`\}=2 - \catcode`\@=0 -} - -\def\readdatafile#1{% -\begingroup - \setupdatafile - \input\jobname.#1 -\endgroup} - - -\message{insertions,} -% including footnotes. - -\newcount \footnoteno - -% The trailing space in the following definition for supereject is -% vital for proper filling; pages come out unaligned when you do a -% pagealignmacro call if that space before the closing brace is -% removed. (Generally, numeric constants should always be followed by a -% space to prevent strange expansion errors.) -\def\supereject{\par\penalty -20000\footnoteno =0 } - -% @footnotestyle is meaningful for Info output only. -\let\footnotestyle=\comment - -{\catcode `\@=11 -% -% Auto-number footnotes. Otherwise like plain. -\gdef\footnote{% - \global\advance\footnoteno by \@ne - \edef\thisfootno{$^{\the\footnoteno}$}% - % - % In case the footnote comes at the end of a sentence, preserve the - % extra spacing after we do the footnote number. - \let\@sf\empty - \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi - % - % Remove inadvertent blank space before typesetting the footnote number. - \unskip - \thisfootno\@sf - \dofootnote -}% - -% Don't bother with the trickery in plain.tex to not require the -% footnote text as a parameter. Our footnotes don't need to be so general. -% -% Oh yes, they do; otherwise, @ifset (and anything else that uses -% \parseargline) fails inside footnotes because the tokens are fixed when -% the footnote is read. --karl, 16nov96. -% -\gdef\dofootnote{% - \insert\footins\bgroup - % - % Nested footnotes are not supported in TeX, that would take a lot - % more work. (\startsavinginserts does not suffice.) - \let\footnote=\errfootnotenest - % - % We want to typeset this text as a normal paragraph, even if the - % footnote reference occurs in (for example) a display environment. - % So reset some parameters. - \hsize=\txipagewidth - \interlinepenalty\interfootnotelinepenalty - \splittopskip\ht\strutbox % top baseline for broken footnotes - \splitmaxdepth\dp\strutbox - \floatingpenalty\@MM - \leftskip\z@skip - \rightskip\z@skip - \spaceskip\z@skip - \xspaceskip\z@skip - \parindent\defaultparindent - % - \smallfonts \rm - % - % Because we use hanging indentation in footnotes, a @noindent appears - % to exdent this text, so make it be a no-op. makeinfo does not use - % hanging indentation so @noindent can still be needed within footnote - % text after an @example or the like (not that this is good style). - \let\noindent = \relax - % - % Hang the footnote text off the number. Use \everypar in case the - % footnote extends for more than one paragraph. - \everypar = {\hang}% - \textindent{\thisfootno}% - % - % Don't crash into the line above the footnote text. Since this - % expands into a box, it must come within the paragraph, lest it - % provide a place where TeX can split the footnote. - \footstrut - % - % Invoke rest of plain TeX footnote routine. - \futurelet\next\fo@t -} -}%end \catcode `\@=11 - -\def\errfootnotenest{% - \errhelp=\EMsimple - \errmessage{Nested footnotes not supported in texinfo.tex, - even though they work in makeinfo; sorry} -} - -\def\errfootnoteheading{% - \errhelp=\EMsimple - \errmessage{Footnotes in chapters, sections, etc., are not supported} -} - -% In case a @footnote appears in a vbox, save the footnote text and create -% the real \insert just after the vbox finished. Otherwise, the insertion -% would be lost. -% Similarly, if a @footnote appears inside an alignment, save the footnote -% text to a box and make the \insert when a row of the table is finished. -% And the same can be done for other insert classes. --kasal, 16nov03. -% -% Replace the \insert primitive by a cheating macro. -% Deeper inside, just make sure that the saved insertions are not spilled -% out prematurely. -% -\def\startsavinginserts{% - \ifx \insert\ptexinsert - \let\insert\saveinsert - \else - \let\checkinserts\relax - \fi -} - -% This \insert replacement works for both \insert\footins{foo} and -% \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}. -% -\def\saveinsert#1{% - \edef\next{\noexpand\savetobox \makeSAVEname#1}% - \afterassignment\next - % swallow the left brace - \let\temp = -} -\def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}} -\def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1} - -\def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi} - -\def\placesaveins#1{% - \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname - {\box#1}% -} - -% eat @SAVE -- beware, all of them have catcode \other: -{ - \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials % ;-) - \gdef\gobblesave @SAVE{} -} - -% initialization: -\def\newsaveins #1{% - \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}% - \next -} -\def\newsaveinsX #1{% - \csname newbox\endcsname #1% - \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts - \checksaveins #1}% -} - -% initialize: -\let\checkinserts\empty -\newsaveins\footins -\newsaveins\margin - - -% @image. We use the macros from epsf.tex to support this. -% If epsf.tex is not installed and @image is used, we complain. -% -% Check for and read epsf.tex up front. If we read it only at @image -% time, we might be inside a group, and then its definitions would get -% undone and the next image would fail. -\openin 1 = epsf.tex -\ifeof 1 \else - % Do not bother showing banner with epsf.tex v2.7k (available in - % doc/epsf.tex and on ctan). - \def\epsfannounce{\toks0 = }% - \input epsf.tex -\fi -\closein 1 -% -% We will only complain once about lack of epsf.tex. -\newif\ifwarnednoepsf -\newhelp\noepsfhelp{epsf.tex must be installed for images to - work. It is also included in the Texinfo distribution, or you can get - it from https://ctan.org/texarchive/macros/texinfo/texinfo/doc/epsf.tex.} -% -\def\image#1{% - \ifx\epsfbox\thisisundefined - \ifwarnednoepsf \else - \errhelp = \noepsfhelp - \errmessage{epsf.tex not found, images will be ignored}% - \global\warnednoepsftrue - \fi - \else - \imagexxx #1,,,,,\finish - \fi -} -% -% Arguments to @image: -% #1 is (mandatory) image filename; we tack on .eps extension. -% #2 is (optional) width, #3 is (optional) height. -% #4 is (ignored optional) html alt text. -% #5 is (ignored optional) extension. -% #6 is just the usual extra ignored arg for parsing stuff. -\newif\ifimagevmode -\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup - \catcode`\^^M = 5 % in case we're inside an example - \normalturnoffactive % allow _ et al. in names - \def\xprocessmacroarg{\eatspaces}% in case we are being used via a macro - % If the image is by itself, center it. - \ifvmode - \imagevmodetrue - \else \ifx\centersub\centerV - % for @center @image, we need a vbox so we can have our vertical space - \imagevmodetrue - \vbox\bgroup % vbox has better behavior than vtop herev - \fi\fi - % - \ifimagevmode - \nobreak\medskip - % Usually we'll have text after the image which will insert - % \parskip glue, so insert it here too to equalize the space - % above and below. - \nobreak\vskip\parskip - \nobreak - \fi - % - % Leave vertical mode so that indentation from an enclosing - % environment such as @quotation is respected. - % However, if we're at the top level, we don't want the - % normal paragraph indentation. - % On the other hand, if we are in the case of @center @image, we don't - % want to start a paragraph, which will create a hsize-width box and - % eradicate the centering. - \ifx\centersub\centerV\else \noindent \fi - % - % Output the image. - \ifpdf - % For pdfTeX and LuaTeX <= 0.80 - \dopdfimage{#1}{#2}{#3}% - \else - \ifx\XeTeXrevision\thisisundefined - % For epsf.tex - % \epsfbox itself resets \epsf?size at each figure. - \setbox0 = \hbox{\ignorespaces #2}% - \ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi - \setbox0 = \hbox{\ignorespaces #3}% - \ifdim\wd0 > 0pt \epsfysize=#3\relax \fi - \epsfbox{#1.eps}% - \else - % For XeTeX - \doxeteximage{#1}{#2}{#3}% - \fi - \fi - % - \ifimagevmode - \medskip % space after a standalone image - \fi - \ifx\centersub\centerV \egroup \fi -\endgroup} - - -% @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables, -% etc. We don't actually implement floating yet, we always include the -% float "here". But it seemed the best name for the future. -% -\envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish} - -% There may be a space before second and/or third parameter; delete it. -\def\eatcommaspace#1, {#1,} - -% #1 is the optional FLOATTYPE, the text label for this float, typically -% "Figure", "Table", "Example", etc. Can't contain commas. If omitted, -% this float will not be numbered and cannot be referred to. -% -% #2 is the optional xref label. Also must be present for the float to -% be referable. -% -% #3 is the optional positioning argument; for now, it is ignored. It -% will somehow specify the positions allowed to float to (here, top, bottom). -% -% We keep a separate counter for each FLOATTYPE, which we reset at each -% chapter-level command. -\let\resetallfloatnos=\empty -% -\def\dofloat#1,#2,#3,#4\finish{% - \let\thiscaption=\empty - \let\thisshortcaption=\empty - % - % don't lose footnotes inside @float. - % - % BEWARE: when the floats start float, we have to issue warning whenever an - % insert appears inside a float which could possibly float. --kasal, 26may04 - % - \startsavinginserts - % - % We can't be used inside a paragraph. - \par - % - \vtop\bgroup - \def\floattype{#1}% - \def\floatlabel{#2}% - \def\floatloc{#3}% we do nothing with this yet. - % - \ifx\floattype\empty - \let\safefloattype=\empty - \else - {% - % the floattype might have accents or other special characters, - % but we need to use it in a control sequence name. - \indexnofonts - \turnoffactive - \xdef\safefloattype{\floattype}% - }% - \fi - % - % If label is given but no type, we handle that as the empty type. - \ifx\floatlabel\empty \else - % We want each FLOATTYPE to be numbered separately (Figure 1, - % Table 1, Figure 2, ...). (And if no label, no number.) - % - \expandafter\getfloatno\csname\safefloattype floatno\endcsname - \global\advance\floatno by 1 - % - {% - % This magic value for \lastsection is output by \setref as the - % XREFLABEL-title value. \xrefX uses it to distinguish float - % labels (which have a completely different output format) from - % node and anchor labels. And \xrdef uses it to construct the - % lists of floats. - % - \edef\lastsection{\floatmagic=\safefloattype}% - \setref{\floatlabel}{Yfloat}% - }% - \fi - % - % start with \parskip glue, I guess. - \vskip\parskip - % - % Don't suppress indentation if a float happens to start a section. - \restorefirstparagraphindent -} - -% we have these possibilities: -% @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap -% @float Foo,lbl & no caption: Foo 1.1 -% @float Foo & @caption{Cap}: Foo: Cap -% @float Foo & no caption: Foo -% @float ,lbl & Caption{Cap}: 1.1: Cap -% @float ,lbl & no caption: 1.1 -% @float & @caption{Cap}: Cap -% @float & no caption: -% -\def\Efloat{% - \let\floatident = \empty - % - % In all cases, if we have a float type, it comes first. - \ifx\floattype\empty \else \def\floatident{\floattype}\fi - % - % If we have an xref label, the number comes next. - \ifx\floatlabel\empty \else - \ifx\floattype\empty \else % if also had float type, need tie first. - \appendtomacro\floatident{\tie}% - \fi - % the number. - \appendtomacro\floatident{\chaplevelprefix\the\floatno}% - \fi - % - % Start the printed caption with what we've constructed in - % \floatident, but keep it separate; we need \floatident again. - \let\captionline = \floatident - % - \ifx\thiscaption\empty \else - \ifx\floatident\empty \else - \appendtomacro\captionline{: }% had ident, so need a colon between - \fi - % - % caption text. - \appendtomacro\captionline{\scanexp\thiscaption}% - \fi - % - % If we have anything to print, print it, with space before. - % Eventually this needs to become an \insert. - \ifx\captionline\empty \else - \vskip.5\parskip - \captionline - % - % Space below caption. - \vskip\parskip - \fi - % - % If have an xref label, write the list of floats info. Do this - % after the caption, to avoid chance of it being a breakpoint. - \ifx\floatlabel\empty \else - % Write the text that goes in the lof to the aux file as - % \floatlabel-lof. Besides \floatident, we include the short - % caption if specified, else the full caption if specified, else nothing. - {% - \requireauxfile - \atdummies - % - \ifx\thisshortcaption\empty - \def\gtemp{\thiscaption}% - \else - \def\gtemp{\thisshortcaption}% - \fi - \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident - \ifx\gtemp\empty \else : \gtemp \fi}}% - }% - \fi - \egroup % end of \vtop - % - \checkinserts -} - -% Append the tokens #2 to the definition of macro #1, not expanding either. -% -\def\appendtomacro#1#2{% - \expandafter\def\expandafter#1\expandafter{#1#2}% -} - -% @caption, @shortcaption -% -\def\caption{\docaption\thiscaption} -\def\shortcaption{\docaption\thisshortcaption} -\def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption} -\def\defcaption#1#2{\egroup \def#1{#2}} - -% The parameter is the control sequence identifying the counter we are -% going to use. Create it if it doesn't exist and assign it to \floatno. -\def\getfloatno#1{% - \ifx#1\relax - % Haven't seen this figure type before. - \csname newcount\endcsname #1% - % - % Remember to reset this floatno at the next chap. - \expandafter\gdef\expandafter\resetallfloatnos - \expandafter{\resetallfloatnos #1=0 }% - \fi - \let\floatno#1% -} - -% \setref calls this to get the XREFLABEL-snt value. We want an @xref -% to the FLOATLABEL to expand to "Figure 3.1". We call \setref when we -% first read the @float command. -% -\def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}% - -% Magic string used for the XREFLABEL-title value, so \xrefX can -% distinguish floats from other xref types. -\def\floatmagic{!!float!!} - -% #1 is the control sequence we are passed; we expand into a conditional -% which is true if #1 represents a float ref. That is, the magic -% \lastsection value which we \setref above. -% -\def\iffloat#1{\expandafter\doiffloat#1==\finish} -% -% #1 is (maybe) the \floatmagic string. If so, #2 will be the -% (safe) float type for this float. We set \iffloattype to #2. -% -\def\doiffloat#1=#2=#3\finish{% - \def\temp{#1}% - \def\iffloattype{#2}% - \ifx\temp\floatmagic -} - -% @listoffloats FLOATTYPE - print a list of floats like a table of contents. -% -\parseargdef\listoffloats{% - \def\floattype{#1}% floattype - {% - % the floattype might have accents or other special characters, - % but we need to use it in a control sequence name. - \indexnofonts - \turnoffactive - \xdef\safefloattype{\floattype}% - }% - % - % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE. - \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax - \ifhavexrefs - % if the user said @listoffloats foo but never @float foo. - \message{\linenumber No `\safefloattype' floats to list.}% - \fi - \else - \begingroup - \leftskip=\tocindent % indent these entries like a toc - \let\do=\listoffloatsdo - \csname floatlist\safefloattype\endcsname - \endgroup - \fi -} - -% This is called on each entry in a list of floats. We're passed the -% xref label, in the form LABEL-title, which is how we save it in the -% aux file. We strip off the -title and look up \XRLABEL-lof, which -% has the text we're supposed to typeset here. -% -% Figures without xref labels will not be included in the list (since -% they won't appear in the aux file). -% -\def\listoffloatsdo#1{\listoffloatsdoentry#1\finish} -\def\listoffloatsdoentry#1-title\finish{{% - % Can't fully expand XR#1-lof because it can contain anything. Just - % pass the control sequence. On the other hand, XR#1-pg is just the - % page number, and we want to fully expand that so we can get a link - % in pdf output. - \toksA = \expandafter{\csname XR#1-lof\endcsname}% - % - % use the same \entry macro we use to generate the TOC and index. - \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}% - \writeentry -}} - - -\message{localization,} - -% For single-language documents, @documentlanguage is usually given very -% early, just after @documentencoding. Single argument is the language -% (de) or locale (de_DE) abbreviation. -% -{ - \catcode`\_ = \active - \globaldefs=1 -\parseargdef\documentlanguage{% - \tex % read txi-??.tex file in plain TeX. - % Read the file by the name they passed if it exists. - \let_ = \normalunderscore % normal _ character for filename test - \openin 1 txi-#1.tex - \ifeof 1 - \documentlanguagetrywithoutunderscore #1_\finish - \else - \globaldefs = 1 % everything in the txi-LL files needs to persist - \input txi-#1.tex - \fi - \closein 1 - \endgroup % end raw TeX -} -% -% If they passed de_DE, and txi-de_DE.tex doesn't exist, -% try txi-de.tex. -% -\gdef\documentlanguagetrywithoutunderscore#1_#2\finish{% - \openin 1 txi-#1.tex - \ifeof 1 - \errhelp = \nolanghelp - \errmessage{Cannot read language file txi-#1.tex}% - \else - \globaldefs = 1 % everything in the txi-LL files needs to persist - \input txi-#1.tex - \fi - \closein 1 -} -}% end of special _ catcode -% -\newhelp\nolanghelp{The given language definition file cannot be found or -is empty. Maybe you need to install it? Putting it in the current -directory should work if nowhere else does.} - -% This macro is called from txi-??.tex files; the first argument is the -% \language name to set (without the "\lang@" prefix), the second and -% third args are \{left,right}hyphenmin. -% -% The language names to pass are determined when the format is built. -% See the etex.log file created at that time, e.g., -% /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log. -% -% With TeX Live 2008, etex now includes hyphenation patterns for all -% available languages. This means we can support hyphenation in -% Texinfo, at least to some extent. (This still doesn't solve the -% accented characters problem.) -% -\catcode`@=11 -\def\txisetlanguage#1#2#3{% - % do not set the language if the name is undefined in the current TeX. - \expandafter\ifx\csname lang@#1\endcsname \relax - \message{no patterns for #1}% - \else - \global\language = \csname lang@#1\endcsname - \fi - % but there is no harm in adjusting the hyphenmin values regardless. - \global\lefthyphenmin = #2\relax - \global\righthyphenmin = #3\relax -} - -% XeTeX and LuaTeX can handle Unicode natively. -% Their default I/O uses UTF-8 sequences instead of a byte-wise operation. -% Other TeX engines' I/O (pdfTeX, etc.) is byte-wise. -% -\newif\iftxinativeunicodecapable -\newif\iftxiusebytewiseio - -\ifx\XeTeXrevision\thisisundefined - \ifx\luatexversion\thisisundefined - \txinativeunicodecapablefalse - \txiusebytewiseiotrue - \else - \txinativeunicodecapabletrue - \txiusebytewiseiofalse - \fi -\else - \txinativeunicodecapabletrue - \txiusebytewiseiofalse -\fi - -% Set I/O by bytes instead of UTF-8 sequence for XeTeX and LuaTex -% for non-UTF-8 (byte-wise) encodings. -% -\def\setbytewiseio{% - \ifx\XeTeXrevision\thisisundefined - \else - \XeTeXdefaultencoding "bytes" % For subsequent files to be read - \XeTeXinputencoding "bytes" % For document root file - % Unfortunately, there seems to be no corresponding XeTeX command for - % output encoding. This is a problem for auxiliary index and TOC files. - % The only solution would be perhaps to write out @U{...} sequences in - % place of non-ASCII characters. - \fi - - \ifx\luatexversion\thisisundefined - \else - \directlua{ - local utf8_char, byte, gsub = unicode.utf8.char, string.byte, string.gsub - local function convert_char (char) - return utf8_char(byte(char)) - end - - local function convert_line (line) - return gsub(line, ".", convert_char) - end - - callback.register("process_input_buffer", convert_line) - - local function convert_line_out (line) - local line_out = "" - for c in string.utfvalues(line) do - line_out = line_out .. string.char(c) - end - return line_out - end - - callback.register("process_output_buffer", convert_line_out) - } - \fi - - \txiusebytewiseiotrue -} - - -% Helpers for encodings. -% Set the catcode of characters 128 through 255 to the specified number. -% -\def\setnonasciicharscatcode#1{% - \count255=128 - \loop\ifnum\count255<256 - \global\catcode\count255=#1\relax - \advance\count255 by 1 - \repeat -} - -\def\setnonasciicharscatcodenonglobal#1{% - \count255=128 - \loop\ifnum\count255<256 - \catcode\count255=#1\relax - \advance\count255 by 1 - \repeat -} - -% @documentencoding sets the definition of non-ASCII characters -% according to the specified encoding. -% -\def\documentencoding{\parseargusing\filenamecatcodes\documentencodingzzz} -\def\documentencodingzzz#1{% - % - % Encoding being declared for the document. - \def\declaredencoding{\csname #1.enc\endcsname}% - % - % Supported encodings: names converted to tokens in order to be able - % to compare them with \ifx. - \def\ascii{\csname US-ASCII.enc\endcsname}% - \def\latnine{\csname ISO-8859-15.enc\endcsname}% - \def\latone{\csname ISO-8859-1.enc\endcsname}% - \def\lattwo{\csname ISO-8859-2.enc\endcsname}% - \def\utfeight{\csname UTF-8.enc\endcsname}% - % - \ifx \declaredencoding \ascii - \asciichardefs - % - \else \ifx \declaredencoding \lattwo - \iftxinativeunicodecapable - \setbytewiseio - \fi - \setnonasciicharscatcode\active - \lattwochardefs - % - \else \ifx \declaredencoding \latone - \iftxinativeunicodecapable - \setbytewiseio - \fi - \setnonasciicharscatcode\active - \latonechardefs - % - \else \ifx \declaredencoding \latnine - \iftxinativeunicodecapable - \setbytewiseio - \fi - \setnonasciicharscatcode\active - \latninechardefs - % - \else \ifx \declaredencoding \utfeight - \iftxinativeunicodecapable - % For native Unicode handling (XeTeX and LuaTeX) - \nativeunicodechardefs - \else - % For treating UTF-8 as byte sequences (TeX, eTeX and pdfTeX) - \setnonasciicharscatcode\active - % since we already invoked \utfeightchardefs at the top level - % (below), do not re-invoke it, otherwise our check for duplicated - % definitions gets triggered. Making non-ascii chars active is - % sufficient. - \fi - % - \else - \message{Ignoring unknown document encoding: #1.}% - % - \fi % utfeight - \fi % latnine - \fi % latone - \fi % lattwo - \fi % ascii - % - \ifx\XeTeXrevision\thisisundefined - \else - \ifx \declaredencoding \utfeight - \else - \ifx \declaredencoding \ascii - \else - \message{Warning: XeTeX with non-UTF-8 encodings cannot handle % - non-ASCII characters in auxiliary files.}% - \fi - \fi - \fi -} - -% emacs-page -% A message to be logged when using a character that isn't available -% the default font encoding (OT1). -% -\def\missingcharmsg#1{\message{Character missing, sorry: #1.}} - -% Take account of \c (plain) vs. \, (Texinfo) difference. -\def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi} - -% First, make active non-ASCII characters in order for them to be -% correctly categorized when TeX reads the replacement text of -% macros containing the character definitions. -\setnonasciicharscatcode\active -% - -\def\gdefchar#1#2{% -\gdef#1{% - \ifpassthroughchars - \string#1% - \else - #2% - \fi -}} - -% Latin1 (ISO-8859-1) character definitions. -\def\latonechardefs{% - \gdefchar^^a0{\tie} - \gdefchar^^a1{\exclamdown} - \gdefchar^^a2{{\tcfont \char162}} % cent - \gdefchar^^a3{\pounds{}} - \gdefchar^^a4{{\tcfont \char164}} % currency - \gdefchar^^a5{{\tcfont \char165}} % yen - \gdefchar^^a6{{\tcfont \char166}} % broken bar - \gdefchar^^a7{\S} - \gdefchar^^a8{\"{}} - \gdefchar^^a9{\copyright{}} - \gdefchar^^aa{\ordf} - \gdefchar^^ab{\guillemetleft{}} - \gdefchar^^ac{\ensuremath\lnot} - \gdefchar^^ad{\-} - \gdefchar^^ae{\registeredsymbol{}} - \gdefchar^^af{\={}} - % - \gdefchar^^b0{\textdegree} - \gdefchar^^b1{$\pm$} - \gdefchar^^b2{$^2$} - \gdefchar^^b3{$^3$} - \gdefchar^^b4{\'{}} - \gdefchar^^b5{$\mu$} - \gdefchar^^b6{\P} - \gdefchar^^b7{\ensuremath\cdot} - \gdefchar^^b8{\cedilla\ } - \gdefchar^^b9{$^1$} - \gdefchar^^ba{\ordm} - \gdefchar^^bb{\guillemetright{}} - \gdefchar^^bc{$1\over4$} - \gdefchar^^bd{$1\over2$} - \gdefchar^^be{$3\over4$} - \gdefchar^^bf{\questiondown} - % - \gdefchar^^c0{\`A} - \gdefchar^^c1{\'A} - \gdefchar^^c2{\^A} - \gdefchar^^c3{\~A} - \gdefchar^^c4{\"A} - \gdefchar^^c5{\ringaccent A} - \gdefchar^^c6{\AE} - \gdefchar^^c7{\cedilla C} - \gdefchar^^c8{\`E} - \gdefchar^^c9{\'E} - \gdefchar^^ca{\^E} - \gdefchar^^cb{\"E} - \gdefchar^^cc{\`I} - \gdefchar^^cd{\'I} - \gdefchar^^ce{\^I} - \gdefchar^^cf{\"I} - % - \gdefchar^^d0{\DH} - \gdefchar^^d1{\~N} - \gdefchar^^d2{\`O} - \gdefchar^^d3{\'O} - \gdefchar^^d4{\^O} - \gdefchar^^d5{\~O} - \gdefchar^^d6{\"O} - \gdefchar^^d7{$\times$} - \gdefchar^^d8{\O} - \gdefchar^^d9{\`U} - \gdefchar^^da{\'U} - \gdefchar^^db{\^U} - \gdefchar^^dc{\"U} - \gdefchar^^dd{\'Y} - \gdefchar^^de{\TH} - \gdefchar^^df{\ss} - % - \gdefchar^^e0{\`a} - \gdefchar^^e1{\'a} - \gdefchar^^e2{\^a} - \gdefchar^^e3{\~a} - \gdefchar^^e4{\"a} - \gdefchar^^e5{\ringaccent a} - \gdefchar^^e6{\ae} - \gdefchar^^e7{\cedilla c} - \gdefchar^^e8{\`e} - \gdefchar^^e9{\'e} - \gdefchar^^ea{\^e} - \gdefchar^^eb{\"e} - \gdefchar^^ec{\`{\dotless i}} - \gdefchar^^ed{\'{\dotless i}} - \gdefchar^^ee{\^{\dotless i}} - \gdefchar^^ef{\"{\dotless i}} - % - \gdefchar^^f0{\dh} - \gdefchar^^f1{\~n} - \gdefchar^^f2{\`o} - \gdefchar^^f3{\'o} - \gdefchar^^f4{\^o} - \gdefchar^^f5{\~o} - \gdefchar^^f6{\"o} - \gdefchar^^f7{$\div$} - \gdefchar^^f8{\o} - \gdefchar^^f9{\`u} - \gdefchar^^fa{\'u} - \gdefchar^^fb{\^u} - \gdefchar^^fc{\"u} - \gdefchar^^fd{\'y} - \gdefchar^^fe{\th} - \gdefchar^^ff{\"y} -} - -% Latin9 (ISO-8859-15) encoding character definitions. -\def\latninechardefs{% - % Encoding is almost identical to Latin1. - \latonechardefs - % - \gdefchar^^a4{\euro{}} - \gdefchar^^a6{\v S} - \gdefchar^^a8{\v s} - \gdefchar^^b4{\v Z} - \gdefchar^^b8{\v z} - \gdefchar^^bc{\OE} - \gdefchar^^bd{\oe} - \gdefchar^^be{\"Y} -} - -% Latin2 (ISO-8859-2) character definitions. -\def\lattwochardefs{% - \gdefchar^^a0{\tie} - \gdefchar^^a1{\ogonek{A}} - \gdefchar^^a2{\u{}} - \gdefchar^^a3{\L} - \gdefchar^^a4{\missingcharmsg{CURRENCY SIGN}} - \gdefchar^^a5{\v L} - \gdefchar^^a6{\'S} - \gdefchar^^a7{\S} - \gdefchar^^a8{\"{}} - \gdefchar^^a9{\v S} - \gdefchar^^aa{\cedilla S} - \gdefchar^^ab{\v T} - \gdefchar^^ac{\'Z} - \gdefchar^^ad{\-} - \gdefchar^^ae{\v Z} - \gdefchar^^af{\dotaccent Z} - % - \gdefchar^^b0{\textdegree{}} - \gdefchar^^b1{\ogonek{a}} - \gdefchar^^b2{\ogonek{ }} - \gdefchar^^b3{\l} - \gdefchar^^b4{\'{}} - \gdefchar^^b5{\v l} - \gdefchar^^b6{\'s} - \gdefchar^^b7{\v{}} - \gdefchar^^b8{\cedilla\ } - \gdefchar^^b9{\v s} - \gdefchar^^ba{\cedilla s} - \gdefchar^^bb{\v t} - \gdefchar^^bc{\'z} - \gdefchar^^bd{\H{}} - \gdefchar^^be{\v z} - \gdefchar^^bf{\dotaccent z} - % - \gdefchar^^c0{\'R} - \gdefchar^^c1{\'A} - \gdefchar^^c2{\^A} - \gdefchar^^c3{\u A} - \gdefchar^^c4{\"A} - \gdefchar^^c5{\'L} - \gdefchar^^c6{\'C} - \gdefchar^^c7{\cedilla C} - \gdefchar^^c8{\v C} - \gdefchar^^c9{\'E} - \gdefchar^^ca{\ogonek{E}} - \gdefchar^^cb{\"E} - \gdefchar^^cc{\v E} - \gdefchar^^cd{\'I} - \gdefchar^^ce{\^I} - \gdefchar^^cf{\v D} - % - \gdefchar^^d0{\DH} - \gdefchar^^d1{\'N} - \gdefchar^^d2{\v N} - \gdefchar^^d3{\'O} - \gdefchar^^d4{\^O} - \gdefchar^^d5{\H O} - \gdefchar^^d6{\"O} - \gdefchar^^d7{$\times$} - \gdefchar^^d8{\v R} - \gdefchar^^d9{\ringaccent U} - \gdefchar^^da{\'U} - \gdefchar^^db{\H U} - \gdefchar^^dc{\"U} - \gdefchar^^dd{\'Y} - \gdefchar^^de{\cedilla T} - \gdefchar^^df{\ss} - % - \gdefchar^^e0{\'r} - \gdefchar^^e1{\'a} - \gdefchar^^e2{\^a} - \gdefchar^^e3{\u a} - \gdefchar^^e4{\"a} - \gdefchar^^e5{\'l} - \gdefchar^^e6{\'c} - \gdefchar^^e7{\cedilla c} - \gdefchar^^e8{\v c} - \gdefchar^^e9{\'e} - \gdefchar^^ea{\ogonek{e}} - \gdefchar^^eb{\"e} - \gdefchar^^ec{\v e} - \gdefchar^^ed{\'{\dotless{i}}} - \gdefchar^^ee{\^{\dotless{i}}} - \gdefchar^^ef{\v d} - % - \gdefchar^^f0{\dh} - \gdefchar^^f1{\'n} - \gdefchar^^f2{\v n} - \gdefchar^^f3{\'o} - \gdefchar^^f4{\^o} - \gdefchar^^f5{\H o} - \gdefchar^^f6{\"o} - \gdefchar^^f7{$\div$} - \gdefchar^^f8{\v r} - \gdefchar^^f9{\ringaccent u} - \gdefchar^^fa{\'u} - \gdefchar^^fb{\H u} - \gdefchar^^fc{\"u} - \gdefchar^^fd{\'y} - \gdefchar^^fe{\cedilla t} - \gdefchar^^ff{\dotaccent{}} -} - -% UTF-8 character definitions. -% -% This code to support UTF-8 is based on LaTeX's utf8.def, with some -% changes for Texinfo conventions. It is included here under the GPL by -% permission from Frank Mittelbach and the LaTeX team. -% -\newcount\countUTFx -\newcount\countUTFy -\newcount\countUTFz - -\gdef\UTFviiiTwoOctets#1#2{\expandafter - \UTFviiiDefined\csname u8:#1\string #2\endcsname} -% -\gdef\UTFviiiThreeOctets#1#2#3{\expandafter - \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname} -% -\gdef\UTFviiiFourOctets#1#2#3#4{\expandafter - \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname} - -\gdef\UTFviiiDefined#1{% - \ifx #1\relax - \message{\linenumber Unicode char \string #1 not defined for Texinfo}% - \else - \expandafter #1% - \fi -} - -% Give non-ASCII bytes the active definitions for processing UTF-8 sequences -\begingroup - \catcode`\~13 - \catcode`\$12 - \catcode`\"12 - - % Loop from \countUTFx to \countUTFy, performing \UTFviiiTmp - % substituting ~ and $ with a character token of that value. - \def\UTFviiiLoop{% - \global\catcode\countUTFx\active - \uccode`\~\countUTFx - \uccode`\$\countUTFx - \uppercase\expandafter{\UTFviiiTmp}% - \advance\countUTFx by 1 - \ifnum\countUTFx < \countUTFy - \expandafter\UTFviiiLoop - \fi} - - % For bytes other than the first in a UTF-8 sequence. Not expected to - % be expanded except when writing to auxiliary files. - \countUTFx = "80 - \countUTFy = "C2 - \def\UTFviiiTmp{% - \gdef~{% - \ifpassthroughchars $\fi}}% - \UTFviiiLoop - - \countUTFx = "C2 - \countUTFy = "E0 - \def\UTFviiiTmp{% - \gdef~{% - \ifpassthroughchars $% - \else\expandafter\UTFviiiTwoOctets\expandafter$\fi}}% - \UTFviiiLoop - - \countUTFx = "E0 - \countUTFy = "F0 - \def\UTFviiiTmp{% - \gdef~{% - \ifpassthroughchars $% - \else\expandafter\UTFviiiThreeOctets\expandafter$\fi}}% - \UTFviiiLoop - - \countUTFx = "F0 - \countUTFy = "F4 - \def\UTFviiiTmp{% - \gdef~{% - \ifpassthroughchars $% - \else\expandafter\UTFviiiFourOctets\expandafter$\fi - }}% - \UTFviiiLoop -\endgroup - -\def\globallet{\global\let} % save some \expandafter's below - -% @U{xxxx} to produce U+xxxx, if we support it. -\def\U#1{% - \expandafter\ifx\csname uni:#1\endcsname \relax - \iftxinativeunicodecapable - % All Unicode characters can be used if native Unicode handling is - % active. However, if the font does not have the glyph, - % letters are missing. - \begingroup - \uccode`\.="#1\relax - \uppercase{.} - \endgroup - \else - \errhelp = \EMsimple - \errmessage{Unicode character U+#1 not supported, sorry}% - \fi - \else - \csname uni:#1\endcsname - \fi -} - -% These macros are used here to construct the name of a control -% sequence to be defined. -\def\UTFviiiTwoOctetsName#1#2{% - \csname u8:#1\string #2\endcsname}% -\def\UTFviiiThreeOctetsName#1#2#3{% - \csname u8:#1\string #2\string #3\endcsname}% -\def\UTFviiiFourOctetsName#1#2#3#4{% - \csname u8:#1\string #2\string #3\string #4\endcsname}% - -% For UTF-8 byte sequences (TeX, e-TeX and pdfTeX), -% provide a definition macro to replace a Unicode character; -% this gets used by the @U command -% -\begingroup - \catcode`\"=12 - \catcode`\<=12 - \catcode`\.=12 - \catcode`\,=12 - \catcode`\;=12 - \catcode`\!=12 - \catcode`\~=13 - \gdef\DeclareUnicodeCharacterUTFviii#1#2{% - \countUTFz = "#1\relax - \begingroup - \parseXMLCharref - - % Give \u8:... its definition. The sequence of seven \expandafter's - % expands after the \gdef three times, e.g. - % - % 1. \UTFviiTwoOctetsName B1 B2 - % 2. \csname u8:B1 \string B2 \endcsname - % 3. \u8: B1 B2 (a single control sequence token) - % - \expandafter\expandafter - \expandafter\expandafter - \expandafter\expandafter - \expandafter\gdef \UTFviiiTmp{#2}% - % - \expandafter\ifx\csname uni:#1\endcsname \relax \else - \message{Internal error, already defined: #1}% - \fi - % - % define an additional control sequence for this code point. - \expandafter\globallet\csname uni:#1\endcsname \UTFviiiTmp - \endgroup} - % - % Given the value in \countUTFz as a Unicode code point, set \UTFviiiTmp - % to the corresponding UTF-8 sequence. - \gdef\parseXMLCharref{% - \ifnum\countUTFz < "A0\relax - \errhelp = \EMsimple - \errmessage{Cannot define Unicode char value < 00A0}% - \else\ifnum\countUTFz < "800\relax - \parseUTFviiiA,% - \parseUTFviiiB C\UTFviiiTwoOctetsName.,% - \else\ifnum\countUTFz < "10000\relax - \parseUTFviiiA;% - \parseUTFviiiA,% - \parseUTFviiiB E\UTFviiiThreeOctetsName.{,;}% - \else - \parseUTFviiiA;% - \parseUTFviiiA,% - \parseUTFviiiA!% - \parseUTFviiiB F\UTFviiiFourOctetsName.{!,;}% - \fi\fi\fi - } - - % Extract a byte from the end of the UTF-8 representation of \countUTFx. - % It must be a non-initial byte in the sequence. - % Change \uccode of #1 for it to be used in \parseUTFviiiB as one - % of the bytes. - \gdef\parseUTFviiiA#1{% - \countUTFx = \countUTFz - \divide\countUTFz by 64 - \countUTFy = \countUTFz % Save to be the future value of \countUTFz. - \multiply\countUTFz by 64 - - % \countUTFz is now \countUTFx with the last 5 bits cleared. Subtract - % in order to get the last five bits. - \advance\countUTFx by -\countUTFz - - % Convert this to the byte in the UTF-8 sequence. - \advance\countUTFx by 128 - \uccode `#1\countUTFx - \countUTFz = \countUTFy} - - % Used to put a UTF-8 byte sequence into \UTFviiiTmp - % #1 is the increment for \countUTFz to yield a the first byte of the UTF-8 - % sequence. - % #2 is one of the \UTFviii*OctetsName macros. - % #3 is always a full stop (.) - % #4 is a template for the other bytes in the sequence. The values for these - % bytes is substituted in here with \uppercase using the \uccode's. - \gdef\parseUTFviiiB#1#2#3#4{% - \advance\countUTFz by "#10\relax - \uccode `#3\countUTFz - \uppercase{\gdef\UTFviiiTmp{#2#3#4}}} -\endgroup - -% For native Unicode handling (XeTeX and LuaTeX), -% provide a definition macro that sets a catcode to `other' non-globally -% -\def\DeclareUnicodeCharacterNativeOther#1#2{% - \catcode"#1=\other -} - -% https://en.wikipedia.org/wiki/Plane_(Unicode)#Basic_M -% U+0000..U+007F = https://en.wikipedia.org/wiki/Basic_Latin_(Unicode_block) -% U+0080..U+00FF = https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block) -% U+0100..U+017F = https://en.wikipedia.org/wiki/Latin_Extended-A -% U+0180..U+024F = https://en.wikipedia.org/wiki/Latin_Extended-B -% -% Many of our renditions are less than wonderful, and all the missing -% characters are available somewhere. Loading the necessary fonts -% awaits user request. We can't truly support Unicode without -% reimplementing everything that's been done in LaTeX for many years, -% plus probably using luatex or xetex, and who knows what else. -% We won't be doing that here in this simple file. But we can try to at -% least make most of the characters not bomb out. -% -\def\unicodechardefs{% - \DeclareUnicodeCharacter{00A0}{\tie}% - \DeclareUnicodeCharacter{00A1}{\exclamdown}% - \DeclareUnicodeCharacter{00A2}{{\tcfont \char162}}% 0242=cent - \DeclareUnicodeCharacter{00A3}{\pounds{}}% - \DeclareUnicodeCharacter{00A4}{{\tcfont \char164}}% 0244=currency - \DeclareUnicodeCharacter{00A5}{{\tcfont \char165}}% 0245=yen - \DeclareUnicodeCharacter{00A6}{{\tcfont \char166}}% 0246=brokenbar - \DeclareUnicodeCharacter{00A7}{\S}% - \DeclareUnicodeCharacter{00A8}{\"{ }}% - \DeclareUnicodeCharacter{00A9}{\copyright{}}% - \DeclareUnicodeCharacter{00AA}{\ordf}% - \DeclareUnicodeCharacter{00AB}{\guillemetleft{}}% - \DeclareUnicodeCharacter{00AC}{\ensuremath\lnot}% - \DeclareUnicodeCharacter{00AD}{\-}% - \DeclareUnicodeCharacter{00AE}{\registeredsymbol{}}% - \DeclareUnicodeCharacter{00AF}{\={ }}% - % - \DeclareUnicodeCharacter{00B0}{\ringaccent{ }}% - \DeclareUnicodeCharacter{00B1}{\ensuremath\pm}% - \DeclareUnicodeCharacter{00B2}{$^2$}% - \DeclareUnicodeCharacter{00B3}{$^3$}% - \DeclareUnicodeCharacter{00B4}{\'{ }}% - \DeclareUnicodeCharacter{00B5}{$\mu$}% - \DeclareUnicodeCharacter{00B6}{\P}% - \DeclareUnicodeCharacter{00B7}{\ensuremath\cdot}% - \DeclareUnicodeCharacter{00B8}{\cedilla{ }}% - \DeclareUnicodeCharacter{00B9}{$^1$}% - \DeclareUnicodeCharacter{00BA}{\ordm}% - \DeclareUnicodeCharacter{00BB}{\guillemetright{}}% - \DeclareUnicodeCharacter{00BC}{$1\over4$}% - \DeclareUnicodeCharacter{00BD}{$1\over2$}% - \DeclareUnicodeCharacter{00BE}{$3\over4$}% - \DeclareUnicodeCharacter{00BF}{\questiondown}% - % - \DeclareUnicodeCharacter{00C0}{\`A}% - \DeclareUnicodeCharacter{00C1}{\'A}% - \DeclareUnicodeCharacter{00C2}{\^A}% - \DeclareUnicodeCharacter{00C3}{\~A}% - \DeclareUnicodeCharacter{00C4}{\"A}% - \DeclareUnicodeCharacter{00C5}{\AA}% - \DeclareUnicodeCharacter{00C6}{\AE}% - \DeclareUnicodeCharacter{00C7}{\cedilla{C}}% - \DeclareUnicodeCharacter{00C8}{\`E}% - \DeclareUnicodeCharacter{00C9}{\'E}% - \DeclareUnicodeCharacter{00CA}{\^E}% - \DeclareUnicodeCharacter{00CB}{\"E}% - \DeclareUnicodeCharacter{00CC}{\`I}% - \DeclareUnicodeCharacter{00CD}{\'I}% - \DeclareUnicodeCharacter{00CE}{\^I}% - \DeclareUnicodeCharacter{00CF}{\"I}% - % - \DeclareUnicodeCharacter{00D0}{\DH}% - \DeclareUnicodeCharacter{00D1}{\~N}% - \DeclareUnicodeCharacter{00D2}{\`O}% - \DeclareUnicodeCharacter{00D3}{\'O}% - \DeclareUnicodeCharacter{00D4}{\^O}% - \DeclareUnicodeCharacter{00D5}{\~O}% - \DeclareUnicodeCharacter{00D6}{\"O}% - \DeclareUnicodeCharacter{00D7}{\ensuremath\times}% - \DeclareUnicodeCharacter{00D8}{\O}% - \DeclareUnicodeCharacter{00D9}{\`U}% - \DeclareUnicodeCharacter{00DA}{\'U}% - \DeclareUnicodeCharacter{00DB}{\^U}% - \DeclareUnicodeCharacter{00DC}{\"U}% - \DeclareUnicodeCharacter{00DD}{\'Y}% - \DeclareUnicodeCharacter{00DE}{\TH}% - \DeclareUnicodeCharacter{00DF}{\ss}% - % - \DeclareUnicodeCharacter{00E0}{\`a}% - \DeclareUnicodeCharacter{00E1}{\'a}% - \DeclareUnicodeCharacter{00E2}{\^a}% - \DeclareUnicodeCharacter{00E3}{\~a}% - \DeclareUnicodeCharacter{00E4}{\"a}% - \DeclareUnicodeCharacter{00E5}{\aa}% - \DeclareUnicodeCharacter{00E6}{\ae}% - \DeclareUnicodeCharacter{00E7}{\cedilla{c}}% - \DeclareUnicodeCharacter{00E8}{\`e}% - \DeclareUnicodeCharacter{00E9}{\'e}% - \DeclareUnicodeCharacter{00EA}{\^e}% - \DeclareUnicodeCharacter{00EB}{\"e}% - \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}}% - \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}}% - \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}}% - \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}}% - % - \DeclareUnicodeCharacter{00F0}{\dh}% - \DeclareUnicodeCharacter{00F1}{\~n}% - \DeclareUnicodeCharacter{00F2}{\`o}% - \DeclareUnicodeCharacter{00F3}{\'o}% - \DeclareUnicodeCharacter{00F4}{\^o}% - \DeclareUnicodeCharacter{00F5}{\~o}% - \DeclareUnicodeCharacter{00F6}{\"o}% - \DeclareUnicodeCharacter{00F7}{\ensuremath\div}% - \DeclareUnicodeCharacter{00F8}{\o}% - \DeclareUnicodeCharacter{00F9}{\`u}% - \DeclareUnicodeCharacter{00FA}{\'u}% - \DeclareUnicodeCharacter{00FB}{\^u}% - \DeclareUnicodeCharacter{00FC}{\"u}% - \DeclareUnicodeCharacter{00FD}{\'y}% - \DeclareUnicodeCharacter{00FE}{\th}% - \DeclareUnicodeCharacter{00FF}{\"y}% - % - \DeclareUnicodeCharacter{0100}{\=A}% - \DeclareUnicodeCharacter{0101}{\=a}% - \DeclareUnicodeCharacter{0102}{\u{A}}% - \DeclareUnicodeCharacter{0103}{\u{a}}% - \DeclareUnicodeCharacter{0104}{\ogonek{A}}% - \DeclareUnicodeCharacter{0105}{\ogonek{a}}% - \DeclareUnicodeCharacter{0106}{\'C}% - \DeclareUnicodeCharacter{0107}{\'c}% - \DeclareUnicodeCharacter{0108}{\^C}% - \DeclareUnicodeCharacter{0109}{\^c}% - \DeclareUnicodeCharacter{010A}{\dotaccent{C}}% - \DeclareUnicodeCharacter{010B}{\dotaccent{c}}% - \DeclareUnicodeCharacter{010C}{\v{C}}% - \DeclareUnicodeCharacter{010D}{\v{c}}% - \DeclareUnicodeCharacter{010E}{\v{D}}% - \DeclareUnicodeCharacter{010F}{d'}% - % - \DeclareUnicodeCharacter{0110}{\DH}% - \DeclareUnicodeCharacter{0111}{\dh}% - \DeclareUnicodeCharacter{0112}{\=E}% - \DeclareUnicodeCharacter{0113}{\=e}% - \DeclareUnicodeCharacter{0114}{\u{E}}% - \DeclareUnicodeCharacter{0115}{\u{e}}% - \DeclareUnicodeCharacter{0116}{\dotaccent{E}}% - \DeclareUnicodeCharacter{0117}{\dotaccent{e}}% - \DeclareUnicodeCharacter{0118}{\ogonek{E}}% - \DeclareUnicodeCharacter{0119}{\ogonek{e}}% - \DeclareUnicodeCharacter{011A}{\v{E}}% - \DeclareUnicodeCharacter{011B}{\v{e}}% - \DeclareUnicodeCharacter{011C}{\^G}% - \DeclareUnicodeCharacter{011D}{\^g}% - \DeclareUnicodeCharacter{011E}{\u{G}}% - \DeclareUnicodeCharacter{011F}{\u{g}}% - % - \DeclareUnicodeCharacter{0120}{\dotaccent{G}}% - \DeclareUnicodeCharacter{0121}{\dotaccent{g}}% - \DeclareUnicodeCharacter{0122}{\cedilla{G}}% - \DeclareUnicodeCharacter{0123}{\cedilla{g}}% - \DeclareUnicodeCharacter{0124}{\^H}% - \DeclareUnicodeCharacter{0125}{\^h}% - \DeclareUnicodeCharacter{0126}{\missingcharmsg{H WITH STROKE}}% - \DeclareUnicodeCharacter{0127}{\missingcharmsg{h WITH STROKE}}% - \DeclareUnicodeCharacter{0128}{\~I}% - \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}}% - \DeclareUnicodeCharacter{012A}{\=I}% - \DeclareUnicodeCharacter{012B}{\={\dotless{i}}}% - \DeclareUnicodeCharacter{012C}{\u{I}}% - \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}}% - \DeclareUnicodeCharacter{012E}{\ogonek{I}}% - \DeclareUnicodeCharacter{012F}{\ogonek{i}}% - % - \DeclareUnicodeCharacter{0130}{\dotaccent{I}}% - \DeclareUnicodeCharacter{0131}{\dotless{i}}% - \DeclareUnicodeCharacter{0132}{IJ}% - \DeclareUnicodeCharacter{0133}{ij}% - \DeclareUnicodeCharacter{0134}{\^J}% - \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}}% - \DeclareUnicodeCharacter{0136}{\cedilla{K}}% - \DeclareUnicodeCharacter{0137}{\cedilla{k}}% - \DeclareUnicodeCharacter{0138}{\ensuremath\kappa}% - \DeclareUnicodeCharacter{0139}{\'L}% - \DeclareUnicodeCharacter{013A}{\'l}% - \DeclareUnicodeCharacter{013B}{\cedilla{L}}% - \DeclareUnicodeCharacter{013C}{\cedilla{l}}% - \DeclareUnicodeCharacter{013D}{L'}% should kern - \DeclareUnicodeCharacter{013E}{l'}% should kern - \DeclareUnicodeCharacter{013F}{L\U{00B7}}% - % - \DeclareUnicodeCharacter{0140}{l\U{00B7}}% - \DeclareUnicodeCharacter{0141}{\L}% - \DeclareUnicodeCharacter{0142}{\l}% - \DeclareUnicodeCharacter{0143}{\'N}% - \DeclareUnicodeCharacter{0144}{\'n}% - \DeclareUnicodeCharacter{0145}{\cedilla{N}}% - \DeclareUnicodeCharacter{0146}{\cedilla{n}}% - \DeclareUnicodeCharacter{0147}{\v{N}}% - \DeclareUnicodeCharacter{0148}{\v{n}}% - \DeclareUnicodeCharacter{0149}{'n}% - \DeclareUnicodeCharacter{014A}{\missingcharmsg{ENG}}% - \DeclareUnicodeCharacter{014B}{\missingcharmsg{eng}}% - \DeclareUnicodeCharacter{014C}{\=O}% - \DeclareUnicodeCharacter{014D}{\=o}% - \DeclareUnicodeCharacter{014E}{\u{O}}% - \DeclareUnicodeCharacter{014F}{\u{o}}% - % - \DeclareUnicodeCharacter{0150}{\H{O}}% - \DeclareUnicodeCharacter{0151}{\H{o}}% - \DeclareUnicodeCharacter{0152}{\OE}% - \DeclareUnicodeCharacter{0153}{\oe}% - \DeclareUnicodeCharacter{0154}{\'R}% - \DeclareUnicodeCharacter{0155}{\'r}% - \DeclareUnicodeCharacter{0156}{\cedilla{R}}% - \DeclareUnicodeCharacter{0157}{\cedilla{r}}% - \DeclareUnicodeCharacter{0158}{\v{R}}% - \DeclareUnicodeCharacter{0159}{\v{r}}% - \DeclareUnicodeCharacter{015A}{\'S}% - \DeclareUnicodeCharacter{015B}{\'s}% - \DeclareUnicodeCharacter{015C}{\^S}% - \DeclareUnicodeCharacter{015D}{\^s}% - \DeclareUnicodeCharacter{015E}{\cedilla{S}}% - \DeclareUnicodeCharacter{015F}{\cedilla{s}}% - % - \DeclareUnicodeCharacter{0160}{\v{S}}% - \DeclareUnicodeCharacter{0161}{\v{s}}% - \DeclareUnicodeCharacter{0162}{\cedilla{T}}% - \DeclareUnicodeCharacter{0163}{\cedilla{t}}% - \DeclareUnicodeCharacter{0164}{\v{T}}% - \DeclareUnicodeCharacter{0165}{\v{t}}% - \DeclareUnicodeCharacter{0166}{\missingcharmsg{H WITH STROKE}}% - \DeclareUnicodeCharacter{0167}{\missingcharmsg{h WITH STROKE}}% - \DeclareUnicodeCharacter{0168}{\~U}% - \DeclareUnicodeCharacter{0169}{\~u}% - \DeclareUnicodeCharacter{016A}{\=U}% - \DeclareUnicodeCharacter{016B}{\=u}% - \DeclareUnicodeCharacter{016C}{\u{U}}% - \DeclareUnicodeCharacter{016D}{\u{u}}% - \DeclareUnicodeCharacter{016E}{\ringaccent{U}}% - \DeclareUnicodeCharacter{016F}{\ringaccent{u}}% - % - \DeclareUnicodeCharacter{0170}{\H{U}}% - \DeclareUnicodeCharacter{0171}{\H{u}}% - \DeclareUnicodeCharacter{0172}{\ogonek{U}}% - \DeclareUnicodeCharacter{0173}{\ogonek{u}}% - \DeclareUnicodeCharacter{0174}{\^W}% - \DeclareUnicodeCharacter{0175}{\^w}% - \DeclareUnicodeCharacter{0176}{\^Y}% - \DeclareUnicodeCharacter{0177}{\^y}% - \DeclareUnicodeCharacter{0178}{\"Y}% - \DeclareUnicodeCharacter{0179}{\'Z}% - \DeclareUnicodeCharacter{017A}{\'z}% - \DeclareUnicodeCharacter{017B}{\dotaccent{Z}}% - \DeclareUnicodeCharacter{017C}{\dotaccent{z}}% - \DeclareUnicodeCharacter{017D}{\v{Z}}% - \DeclareUnicodeCharacter{017E}{\v{z}}% - \DeclareUnicodeCharacter{017F}{\missingcharmsg{LONG S}}% - % - \DeclareUnicodeCharacter{01C4}{D\v{Z}}% - \DeclareUnicodeCharacter{01C5}{D\v{z}}% - \DeclareUnicodeCharacter{01C6}{d\v{z}}% - \DeclareUnicodeCharacter{01C7}{LJ}% - \DeclareUnicodeCharacter{01C8}{Lj}% - \DeclareUnicodeCharacter{01C9}{lj}% - \DeclareUnicodeCharacter{01CA}{NJ}% - \DeclareUnicodeCharacter{01CB}{Nj}% - \DeclareUnicodeCharacter{01CC}{nj}% - \DeclareUnicodeCharacter{01CD}{\v{A}}% - \DeclareUnicodeCharacter{01CE}{\v{a}}% - \DeclareUnicodeCharacter{01CF}{\v{I}}% - % - \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}}% - \DeclareUnicodeCharacter{01D1}{\v{O}}% - \DeclareUnicodeCharacter{01D2}{\v{o}}% - \DeclareUnicodeCharacter{01D3}{\v{U}}% - \DeclareUnicodeCharacter{01D4}{\v{u}}% - % - \DeclareUnicodeCharacter{01E2}{\={\AE}}% - \DeclareUnicodeCharacter{01E3}{\={\ae}}% - \DeclareUnicodeCharacter{01E6}{\v{G}}% - \DeclareUnicodeCharacter{01E7}{\v{g}}% - \DeclareUnicodeCharacter{01E8}{\v{K}}% - \DeclareUnicodeCharacter{01E9}{\v{k}}% - % - \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}}% - \DeclareUnicodeCharacter{01F1}{DZ}% - \DeclareUnicodeCharacter{01F2}{Dz}% - \DeclareUnicodeCharacter{01F3}{dz}% - \DeclareUnicodeCharacter{01F4}{\'G}% - \DeclareUnicodeCharacter{01F5}{\'g}% - \DeclareUnicodeCharacter{01F8}{\`N}% - \DeclareUnicodeCharacter{01F9}{\`n}% - \DeclareUnicodeCharacter{01FC}{\'{\AE}}% - \DeclareUnicodeCharacter{01FD}{\'{\ae}}% - \DeclareUnicodeCharacter{01FE}{\'{\O}}% - \DeclareUnicodeCharacter{01FF}{\'{\o}}% - % - \DeclareUnicodeCharacter{021E}{\v{H}}% - \DeclareUnicodeCharacter{021F}{\v{h}}% - % - \DeclareUnicodeCharacter{0226}{\dotaccent{A}}% - \DeclareUnicodeCharacter{0227}{\dotaccent{a}}% - \DeclareUnicodeCharacter{0228}{\cedilla{E}}% - \DeclareUnicodeCharacter{0229}{\cedilla{e}}% - \DeclareUnicodeCharacter{022E}{\dotaccent{O}}% - \DeclareUnicodeCharacter{022F}{\dotaccent{o}}% - % - \DeclareUnicodeCharacter{0232}{\=Y}% - \DeclareUnicodeCharacter{0233}{\=y}% - \DeclareUnicodeCharacter{0237}{\dotless{j}}% - % - \DeclareUnicodeCharacter{02DB}{\ogonek{ }}% - % - % Greek letters upper case - \DeclareUnicodeCharacter{0391}{{\it A}}% - \DeclareUnicodeCharacter{0392}{{\it B}}% - \DeclareUnicodeCharacter{0393}{\ensuremath{\mit\Gamma}}% - \DeclareUnicodeCharacter{0394}{\ensuremath{\mit\Delta}}% - \DeclareUnicodeCharacter{0395}{{\it E}}% - \DeclareUnicodeCharacter{0396}{{\it Z}}% - \DeclareUnicodeCharacter{0397}{{\it H}}% - \DeclareUnicodeCharacter{0398}{\ensuremath{\mit\Theta}}% - \DeclareUnicodeCharacter{0399}{{\it I}}% - \DeclareUnicodeCharacter{039A}{{\it K}}% - \DeclareUnicodeCharacter{039B}{\ensuremath{\mit\Lambda}}% - \DeclareUnicodeCharacter{039C}{{\it M}}% - \DeclareUnicodeCharacter{039D}{{\it N}}% - \DeclareUnicodeCharacter{039E}{\ensuremath{\mit\Xi}}% - \DeclareUnicodeCharacter{039F}{{\it O}}% - \DeclareUnicodeCharacter{03A0}{\ensuremath{\mit\Pi}}% - \DeclareUnicodeCharacter{03A1}{{\it P}}% - %\DeclareUnicodeCharacter{03A2}{} % none - corresponds to final sigma - \DeclareUnicodeCharacter{03A3}{\ensuremath{\mit\Sigma}}% - \DeclareUnicodeCharacter{03A4}{{\it T}}% - \DeclareUnicodeCharacter{03A5}{\ensuremath{\mit\Upsilon}}% - \DeclareUnicodeCharacter{03A6}{\ensuremath{\mit\Phi}}% - \DeclareUnicodeCharacter{03A7}{{\it X}}% - \DeclareUnicodeCharacter{03A8}{\ensuremath{\mit\Psi}}% - \DeclareUnicodeCharacter{03A9}{\ensuremath{\mit\Omega}}% - % - % Vowels with accents - \DeclareUnicodeCharacter{0390}{\ensuremath{\ddot{\acute\iota}}}% - \DeclareUnicodeCharacter{03AC}{\ensuremath{\acute\alpha}}% - \DeclareUnicodeCharacter{03AD}{\ensuremath{\acute\epsilon}}% - \DeclareUnicodeCharacter{03AE}{\ensuremath{\acute\eta}}% - \DeclareUnicodeCharacter{03AF}{\ensuremath{\acute\iota}}% - \DeclareUnicodeCharacter{03B0}{\ensuremath{\acute{\ddot\upsilon}}}% - % - % Standalone accent - \DeclareUnicodeCharacter{0384}{\ensuremath{\acute{\ }}}% - % - % Greek letters lower case - \DeclareUnicodeCharacter{03B1}{\ensuremath\alpha}% - \DeclareUnicodeCharacter{03B2}{\ensuremath\beta}% - \DeclareUnicodeCharacter{03B3}{\ensuremath\gamma}% - \DeclareUnicodeCharacter{03B4}{\ensuremath\delta}% - \DeclareUnicodeCharacter{03B5}{\ensuremath\epsilon}% - \DeclareUnicodeCharacter{03B6}{\ensuremath\zeta}% - \DeclareUnicodeCharacter{03B7}{\ensuremath\eta}% - \DeclareUnicodeCharacter{03B8}{\ensuremath\theta}% - \DeclareUnicodeCharacter{03B9}{\ensuremath\iota}% - \DeclareUnicodeCharacter{03BA}{\ensuremath\kappa}% - \DeclareUnicodeCharacter{03BB}{\ensuremath\lambda}% - \DeclareUnicodeCharacter{03BC}{\ensuremath\mu}% - \DeclareUnicodeCharacter{03BD}{\ensuremath\nu}% - \DeclareUnicodeCharacter{03BE}{\ensuremath\xi}% - \DeclareUnicodeCharacter{03BF}{{\it o}}% omicron - \DeclareUnicodeCharacter{03C0}{\ensuremath\pi}% - \DeclareUnicodeCharacter{03C1}{\ensuremath\rho}% - \DeclareUnicodeCharacter{03C2}{\ensuremath\varsigma}% - \DeclareUnicodeCharacter{03C3}{\ensuremath\sigma}% - \DeclareUnicodeCharacter{03C4}{\ensuremath\tau}% - \DeclareUnicodeCharacter{03C5}{\ensuremath\upsilon}% - \DeclareUnicodeCharacter{03C6}{\ensuremath\phi}% - \DeclareUnicodeCharacter{03C7}{\ensuremath\chi}% - \DeclareUnicodeCharacter{03C8}{\ensuremath\psi}% - \DeclareUnicodeCharacter{03C9}{\ensuremath\omega}% - % - % More Greek vowels with accents - \DeclareUnicodeCharacter{03CA}{\ensuremath{\ddot\iota}}% - \DeclareUnicodeCharacter{03CB}{\ensuremath{\ddot\upsilon}}% - \DeclareUnicodeCharacter{03CC}{\ensuremath{\acute o}}% - \DeclareUnicodeCharacter{03CD}{\ensuremath{\acute\upsilon}}% - \DeclareUnicodeCharacter{03CE}{\ensuremath{\acute\omega}}% - % - % Variant Greek letters - \DeclareUnicodeCharacter{03D1}{\ensuremath\vartheta}% - \DeclareUnicodeCharacter{03D6}{\ensuremath\varpi}% - \DeclareUnicodeCharacter{03F1}{\ensuremath\varrho}% - % - \DeclareUnicodeCharacter{1E02}{\dotaccent{B}}% - \DeclareUnicodeCharacter{1E03}{\dotaccent{b}}% - \DeclareUnicodeCharacter{1E04}{\udotaccent{B}}% - \DeclareUnicodeCharacter{1E05}{\udotaccent{b}}% - \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}}% - \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}}% - \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}}% - \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}}% - \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}}% - \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}}% - \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}}% - \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}}% - % - \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}}% - \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}}% - % - \DeclareUnicodeCharacter{1E20}{\=G}% - \DeclareUnicodeCharacter{1E21}{\=g}% - \DeclareUnicodeCharacter{1E22}{\dotaccent{H}}% - \DeclareUnicodeCharacter{1E23}{\dotaccent{h}}% - \DeclareUnicodeCharacter{1E24}{\udotaccent{H}}% - \DeclareUnicodeCharacter{1E25}{\udotaccent{h}}% - \DeclareUnicodeCharacter{1E26}{\"H}% - \DeclareUnicodeCharacter{1E27}{\"h}% - % - \DeclareUnicodeCharacter{1E30}{\'K}% - \DeclareUnicodeCharacter{1E31}{\'k}% - \DeclareUnicodeCharacter{1E32}{\udotaccent{K}}% - \DeclareUnicodeCharacter{1E33}{\udotaccent{k}}% - \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}}% - \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}}% - \DeclareUnicodeCharacter{1E36}{\udotaccent{L}}% - \DeclareUnicodeCharacter{1E37}{\udotaccent{l}}% - \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}}% - \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}}% - \DeclareUnicodeCharacter{1E3E}{\'M}% - \DeclareUnicodeCharacter{1E3F}{\'m}% - % - \DeclareUnicodeCharacter{1E40}{\dotaccent{M}}% - \DeclareUnicodeCharacter{1E41}{\dotaccent{m}}% - \DeclareUnicodeCharacter{1E42}{\udotaccent{M}}% - \DeclareUnicodeCharacter{1E43}{\udotaccent{m}}% - \DeclareUnicodeCharacter{1E44}{\dotaccent{N}}% - \DeclareUnicodeCharacter{1E45}{\dotaccent{n}}% - \DeclareUnicodeCharacter{1E46}{\udotaccent{N}}% - \DeclareUnicodeCharacter{1E47}{\udotaccent{n}}% - \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}}% - \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}}% - % - \DeclareUnicodeCharacter{1E54}{\'P}% - \DeclareUnicodeCharacter{1E55}{\'p}% - \DeclareUnicodeCharacter{1E56}{\dotaccent{P}}% - \DeclareUnicodeCharacter{1E57}{\dotaccent{p}}% - \DeclareUnicodeCharacter{1E58}{\dotaccent{R}}% - \DeclareUnicodeCharacter{1E59}{\dotaccent{r}}% - \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}}% - \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}}% - \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}}% - \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}}% - % - \DeclareUnicodeCharacter{1E60}{\dotaccent{S}}% - \DeclareUnicodeCharacter{1E61}{\dotaccent{s}}% - \DeclareUnicodeCharacter{1E62}{\udotaccent{S}}% - \DeclareUnicodeCharacter{1E63}{\udotaccent{s}}% - \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}}% - \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}}% - \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}}% - \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}}% - \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}}% - \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}}% - % - \DeclareUnicodeCharacter{1E7C}{\~V}% - \DeclareUnicodeCharacter{1E7D}{\~v}% - \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}}% - \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}}% - % - \DeclareUnicodeCharacter{1E80}{\`W}% - \DeclareUnicodeCharacter{1E81}{\`w}% - \DeclareUnicodeCharacter{1E82}{\'W}% - \DeclareUnicodeCharacter{1E83}{\'w}% - \DeclareUnicodeCharacter{1E84}{\"W}% - \DeclareUnicodeCharacter{1E85}{\"w}% - \DeclareUnicodeCharacter{1E86}{\dotaccent{W}}% - \DeclareUnicodeCharacter{1E87}{\dotaccent{w}}% - \DeclareUnicodeCharacter{1E88}{\udotaccent{W}}% - \DeclareUnicodeCharacter{1E89}{\udotaccent{w}}% - \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}}% - \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}}% - \DeclareUnicodeCharacter{1E8C}{\"X}% - \DeclareUnicodeCharacter{1E8D}{\"x}% - \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}}% - \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}}% - % - \DeclareUnicodeCharacter{1E90}{\^Z}% - \DeclareUnicodeCharacter{1E91}{\^z}% - \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}}% - \DeclareUnicodeCharacter{1E93}{\udotaccent{z}}% - \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}}% - \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}}% - \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}}% - \DeclareUnicodeCharacter{1E97}{\"t}% - \DeclareUnicodeCharacter{1E98}{\ringaccent{w}}% - \DeclareUnicodeCharacter{1E99}{\ringaccent{y}}% - % - \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}}% - \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}}% - % - \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}}% - \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}}% - \DeclareUnicodeCharacter{1EBC}{\~E}% - \DeclareUnicodeCharacter{1EBD}{\~e}% - % - \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}}% - \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}}% - \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}}% - \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}}% - % - \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}}% - \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}}% - % - \DeclareUnicodeCharacter{1EF2}{\`Y}% - \DeclareUnicodeCharacter{1EF3}{\`y}% - \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}}% - % - \DeclareUnicodeCharacter{1EF8}{\~Y}% - \DeclareUnicodeCharacter{1EF9}{\~y}% - % - % Punctuation - \DeclareUnicodeCharacter{2013}{--}% - \DeclareUnicodeCharacter{2014}{---}% - \DeclareUnicodeCharacter{2018}{\quoteleft{}}% - \DeclareUnicodeCharacter{2019}{\quoteright{}}% - \DeclareUnicodeCharacter{201A}{\quotesinglbase{}}% - \DeclareUnicodeCharacter{201C}{\quotedblleft{}}% - \DeclareUnicodeCharacter{201D}{\quotedblright{}}% - \DeclareUnicodeCharacter{201E}{\quotedblbase{}}% - \DeclareUnicodeCharacter{2020}{\ensuremath\dagger}% - \DeclareUnicodeCharacter{2021}{\ensuremath\ddagger}% - \DeclareUnicodeCharacter{2022}{\bullet{}}% - \DeclareUnicodeCharacter{202F}{\thinspace}% - \DeclareUnicodeCharacter{2026}{\dots{}}% - \DeclareUnicodeCharacter{2039}{\guilsinglleft{}}% - \DeclareUnicodeCharacter{203A}{\guilsinglright{}}% - % - \DeclareUnicodeCharacter{20AC}{\euro{}}% - % - \DeclareUnicodeCharacter{2192}{\expansion{}}% - \DeclareUnicodeCharacter{21D2}{\result{}}% - % - % Mathematical symbols - \DeclareUnicodeCharacter{2200}{\ensuremath\forall}% - \DeclareUnicodeCharacter{2203}{\ensuremath\exists}% - \DeclareUnicodeCharacter{2208}{\ensuremath\in}% - \DeclareUnicodeCharacter{2212}{\minus{}}% - \DeclareUnicodeCharacter{2217}{\ast}% - \DeclareUnicodeCharacter{221E}{\ensuremath\infty}% - \DeclareUnicodeCharacter{2225}{\ensuremath\parallel}% - \DeclareUnicodeCharacter{2227}{\ensuremath\wedge}% - \DeclareUnicodeCharacter{2229}{\ensuremath\cap}% - \DeclareUnicodeCharacter{2261}{\equiv{}}% - \DeclareUnicodeCharacter{2264}{\ensuremath\leq}% - \DeclareUnicodeCharacter{2265}{\ensuremath\geq}% - \DeclareUnicodeCharacter{2282}{\ensuremath\subset}% - \DeclareUnicodeCharacter{2287}{\ensuremath\supseteq}% - % - \DeclareUnicodeCharacter{2016}{\ensuremath\Vert}% - \DeclareUnicodeCharacter{2032}{\ensuremath\prime}% - \DeclareUnicodeCharacter{210F}{\ensuremath\hbar}% - \DeclareUnicodeCharacter{2111}{\ensuremath\Im}% - \DeclareUnicodeCharacter{2113}{\ensuremath\ell}% - \DeclareUnicodeCharacter{2118}{\ensuremath\wp}% - \DeclareUnicodeCharacter{211C}{\ensuremath\Re}% - \DeclareUnicodeCharacter{2135}{\ensuremath\aleph}% - \DeclareUnicodeCharacter{2190}{\ensuremath\leftarrow}% - \DeclareUnicodeCharacter{2191}{\ensuremath\uparrow}% - \DeclareUnicodeCharacter{2193}{\ensuremath\downarrow}% - \DeclareUnicodeCharacter{2194}{\ensuremath\leftrightarrow}% - \DeclareUnicodeCharacter{2195}{\ensuremath\updownarrow}% - \DeclareUnicodeCharacter{2196}{\ensuremath\nwarrow}% - \DeclareUnicodeCharacter{2197}{\ensuremath\nearrow}% - \DeclareUnicodeCharacter{2198}{\ensuremath\searrow}% - \DeclareUnicodeCharacter{2199}{\ensuremath\swarrow}% - \DeclareUnicodeCharacter{21A6}{\ensuremath\mapsto}% - \DeclareUnicodeCharacter{21A9}{\ensuremath\hookleftarrow}% - \DeclareUnicodeCharacter{21AA}{\ensuremath\hookrightarrow}% - \DeclareUnicodeCharacter{21BC}{\ensuremath\leftharpoonup}% - \DeclareUnicodeCharacter{21BD}{\ensuremath\leftharpoondown}% - \DeclareUnicodeCharacter{21C0}{\ensuremath\rightharpoonup}% - \DeclareUnicodeCharacter{21C1}{\ensuremath\rightharpoondown}% - \DeclareUnicodeCharacter{21CC}{\ensuremath\rightleftharpoons}% - \DeclareUnicodeCharacter{21D0}{\ensuremath\Leftarrow}% - \DeclareUnicodeCharacter{21D1}{\ensuremath\Uparrow}% - \DeclareUnicodeCharacter{21D3}{\ensuremath\Downarrow}% - \DeclareUnicodeCharacter{21D4}{\ensuremath\Leftrightarrow}% - \DeclareUnicodeCharacter{21D5}{\ensuremath\Updownarrow}% - \DeclareUnicodeCharacter{2202}{\ensuremath\partial}% - \DeclareUnicodeCharacter{2205}{\ensuremath\emptyset}% - \DeclareUnicodeCharacter{2207}{\ensuremath\nabla}% - \DeclareUnicodeCharacter{2209}{\ensuremath\notin}% - \DeclareUnicodeCharacter{220B}{\ensuremath\owns}% - \DeclareUnicodeCharacter{220F}{\ensuremath\prod}% - \DeclareUnicodeCharacter{2210}{\ensuremath\coprod}% - \DeclareUnicodeCharacter{2211}{\ensuremath\sum}% - \DeclareUnicodeCharacter{2213}{\ensuremath\mp}% - \DeclareUnicodeCharacter{2218}{\ensuremath\circ}% - \DeclareUnicodeCharacter{221A}{\ensuremath\surd}% - \DeclareUnicodeCharacter{221D}{\ensuremath\propto}% - \DeclareUnicodeCharacter{2220}{\ensuremath\angle}% - \DeclareUnicodeCharacter{2223}{\ensuremath\mid}% - \DeclareUnicodeCharacter{2228}{\ensuremath\vee}% - \DeclareUnicodeCharacter{222A}{\ensuremath\cup}% - \DeclareUnicodeCharacter{222B}{\ensuremath\smallint}% - \DeclareUnicodeCharacter{222E}{\ensuremath\oint}% - \DeclareUnicodeCharacter{223C}{\ensuremath\sim}% - \DeclareUnicodeCharacter{2240}{\ensuremath\wr}% - \DeclareUnicodeCharacter{2243}{\ensuremath\simeq}% - \DeclareUnicodeCharacter{2245}{\ensuremath\cong}% - \DeclareUnicodeCharacter{2248}{\ensuremath\approx}% - \DeclareUnicodeCharacter{224D}{\ensuremath\asymp}% - \DeclareUnicodeCharacter{2250}{\ensuremath\doteq}% - \DeclareUnicodeCharacter{2260}{\ensuremath\neq}% - \DeclareUnicodeCharacter{226A}{\ensuremath\ll}% - \DeclareUnicodeCharacter{226B}{\ensuremath\gg}% - \DeclareUnicodeCharacter{227A}{\ensuremath\prec}% - \DeclareUnicodeCharacter{227B}{\ensuremath\succ}% - \DeclareUnicodeCharacter{2283}{\ensuremath\supset}% - \DeclareUnicodeCharacter{2286}{\ensuremath\subseteq}% - \DeclareUnicodeCharacter{228E}{\ensuremath\uplus}% - \DeclareUnicodeCharacter{2291}{\ensuremath\sqsubseteq}% - \DeclareUnicodeCharacter{2292}{\ensuremath\sqsupseteq}% - \DeclareUnicodeCharacter{2293}{\ensuremath\sqcap}% - \DeclareUnicodeCharacter{2294}{\ensuremath\sqcup}% - \DeclareUnicodeCharacter{2295}{\ensuremath\oplus}% - \DeclareUnicodeCharacter{2296}{\ensuremath\ominus}% - \DeclareUnicodeCharacter{2297}{\ensuremath\otimes}% - \DeclareUnicodeCharacter{2298}{\ensuremath\oslash}% - \DeclareUnicodeCharacter{2299}{\ensuremath\odot}% - \DeclareUnicodeCharacter{22A2}{\ensuremath\vdash}% - \DeclareUnicodeCharacter{22A3}{\ensuremath\dashv}% - \DeclareUnicodeCharacter{22A4}{\ensuremath\ptextop}% - \DeclareUnicodeCharacter{22A5}{\ensuremath\bot}% - \DeclareUnicodeCharacter{22A8}{\ensuremath\models}% - \DeclareUnicodeCharacter{22C0}{\ensuremath\bigwedge}% - \DeclareUnicodeCharacter{22C1}{\ensuremath\bigvee}% - \DeclareUnicodeCharacter{22C2}{\ensuremath\bigcap}% - \DeclareUnicodeCharacter{22C3}{\ensuremath\bigcup}% - \DeclareUnicodeCharacter{22C4}{\ensuremath\diamond}% - \DeclareUnicodeCharacter{22C5}{\ensuremath\cdot}% - \DeclareUnicodeCharacter{22C6}{\ensuremath\star}% - \DeclareUnicodeCharacter{22C8}{\ensuremath\bowtie}% - \DeclareUnicodeCharacter{2308}{\ensuremath\lceil}% - \DeclareUnicodeCharacter{2309}{\ensuremath\rceil}% - \DeclareUnicodeCharacter{230A}{\ensuremath\lfloor}% - \DeclareUnicodeCharacter{230B}{\ensuremath\rfloor}% - \DeclareUnicodeCharacter{2322}{\ensuremath\frown}% - \DeclareUnicodeCharacter{2323}{\ensuremath\smile}% - % - \DeclareUnicodeCharacter{25B3}{\ensuremath\triangle}% - \DeclareUnicodeCharacter{25B7}{\ensuremath\triangleright}% - \DeclareUnicodeCharacter{25BD}{\ensuremath\bigtriangledown}% - \DeclareUnicodeCharacter{25C1}{\ensuremath\triangleleft}% - \DeclareUnicodeCharacter{25C7}{\ensuremath\diamond}% - \DeclareUnicodeCharacter{2660}{\ensuremath\spadesuit}% - \DeclareUnicodeCharacter{2661}{\ensuremath\heartsuit}% - \DeclareUnicodeCharacter{2662}{\ensuremath\diamondsuit}% - \DeclareUnicodeCharacter{2663}{\ensuremath\clubsuit}% - \DeclareUnicodeCharacter{266D}{\ensuremath\flat}% - \DeclareUnicodeCharacter{266E}{\ensuremath\natural}% - \DeclareUnicodeCharacter{266F}{\ensuremath\sharp}% - \DeclareUnicodeCharacter{26AA}{\ensuremath\bigcirc}% - \DeclareUnicodeCharacter{27B9}{\ensuremath\rangle}% - \DeclareUnicodeCharacter{27C2}{\ensuremath\perp}% - \DeclareUnicodeCharacter{27E8}{\ensuremath\langle}% - \DeclareUnicodeCharacter{27F5}{\ensuremath\longleftarrow}% - \DeclareUnicodeCharacter{27F6}{\ensuremath\longrightarrow}% - \DeclareUnicodeCharacter{27F7}{\ensuremath\longleftrightarrow}% - \DeclareUnicodeCharacter{27FC}{\ensuremath\longmapsto}% - \DeclareUnicodeCharacter{29F5}{\ensuremath\setminus}% - \DeclareUnicodeCharacter{2A00}{\ensuremath\bigodot}% - \DeclareUnicodeCharacter{2A01}{\ensuremath\bigoplus}% - \DeclareUnicodeCharacter{2A02}{\ensuremath\bigotimes}% - \DeclareUnicodeCharacter{2A04}{\ensuremath\biguplus}% - \DeclareUnicodeCharacter{2A06}{\ensuremath\bigsqcup}% - \DeclareUnicodeCharacter{2A3F}{\ensuremath\amalg}% - \DeclareUnicodeCharacter{2AAF}{\ensuremath\preceq}% - \DeclareUnicodeCharacter{2AB0}{\ensuremath\succeq}% - % - \global\mathchardef\checkmark="1370% actually the square root sign - \DeclareUnicodeCharacter{2713}{\ensuremath\checkmark}% -}% end of \unicodechardefs - -% UTF-8 byte sequence (pdfTeX) definitions (replacing and @U command) -% It makes the setting that replace UTF-8 byte sequence. -\def\utfeightchardefs{% - \let\DeclareUnicodeCharacter\DeclareUnicodeCharacterUTFviii - \unicodechardefs -} - -% Whether the active definitions of non-ASCII characters expand to -% non-active tokens with the same character code. This is used to -% write characters literally, instead of using active definitions for -% printing the correct glyphs. -\newif\ifpassthroughchars -\passthroughcharsfalse - -% For native Unicode handling (XeTeX and LuaTeX), -% provide a definition macro to replace/pass-through a Unicode character -% -\def\DeclareUnicodeCharacterNative#1#2{% - \catcode"#1=\active - \def\dodeclareunicodecharacternative##1##2##3{% - \begingroup - \uccode`\~="##2\relax - \uppercase{\gdef~}{% - \ifpassthroughchars - ##1% - \else - ##3% - \fi - } - \endgroup - } - \begingroup - \uccode`\.="#1\relax - \uppercase{\def\UTFNativeTmp{.}}% - \expandafter\dodeclareunicodecharacternative\UTFNativeTmp{#1}{#2}% - \endgroup -} - -% Native Unicode handling (XeTeX and LuaTeX) character replacing definition. -% It activates the setting that replaces Unicode characters. -\def\nativeunicodechardefs{% - \let\DeclareUnicodeCharacter\DeclareUnicodeCharacterNative - \unicodechardefs -} - -% For native Unicode handling (XeTeX and LuaTeX), -% make the character token expand -% to the sequences given in \unicodechardefs for printing. -\def\DeclareUnicodeCharacterNativeAtU#1#2{% - \def\UTFAtUTmp{#2} - \expandafter\globallet\csname uni:#1\endcsname \UTFAtUTmp -} - -% @U command definitions for native Unicode handling (XeTeX and LuaTeX). -\def\nativeunicodechardefsatu{% - \let\DeclareUnicodeCharacter\DeclareUnicodeCharacterNativeAtU - \unicodechardefs -} - -% US-ASCII character definitions. -\def\asciichardefs{% nothing need be done - \relax -} - -% define all Unicode characters we know about, for the sake of @U. -\iftxinativeunicodecapable - \nativeunicodechardefsatu -\else - \utfeightchardefs -\fi - - -% Make non-ASCII characters printable again for compatibility with -% existing Texinfo documents that may use them, even without declaring a -% document encoding. -% -\setnonasciicharscatcode \other - - -\message{formatting,} - -\newdimen\defaultparindent \defaultparindent = 15pt - -\chapheadingskip = 15pt plus 4pt minus 2pt -\secheadingskip = 12pt plus 3pt minus 2pt -\subsecheadingskip = 9pt plus 2pt minus 2pt - -% Prevent underfull vbox error messages. -\vbadness = 10000 - -% Don't be very finicky about underfull hboxes, either. -\hbadness = 6666 - -% Following George Bush, get rid of widows and orphans. -\widowpenalty=10000 -\clubpenalty=10000 - -% Use TeX 3.0's \emergencystretch to help line breaking, but if we're -% using an old version of TeX, don't do anything. We want the amount of -% stretch added to depend on the line length, hence the dependence on -% \hsize. We call this whenever the paper size is set. -% -\def\setemergencystretch{% - \ifx\emergencystretch\thisisundefined - % Allow us to assign to \emergencystretch anyway. - \def\emergencystretch{\dimen0}% - \else - \emergencystretch = .15\hsize - \fi -} - -% Parameters in order: 1) textheight; 2) textwidth; -% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip; -% 7) physical page height; 8) physical page width. -% -% We also call \setleading{\textleading}, so the caller should define -% \textleading. The caller should also set \parskip. -% -\def\internalpagesizes#1#2#3#4#5#6#7#8{% - \voffset = #3\relax - \topskip = #6\relax - \splittopskip = \topskip - % - \vsize = #1\relax - \advance\vsize by \topskip - \outervsize = \vsize - \advance\outervsize by 2\topandbottommargin - \txipageheight = \vsize - % - \hsize = #2\relax - \outerhsize = \hsize - \advance\outerhsize by 0.5in - \txipagewidth = \hsize - % - \normaloffset = #4\relax - \bindingoffset = #5\relax - % - \ifpdf - \pdfpageheight #7\relax - \pdfpagewidth #8\relax - % if we don't reset these, they will remain at "1 true in" of - % whatever layout pdftex was dumped with. - \pdfhorigin = 1 true in - \pdfvorigin = 1 true in - \else - \ifx\XeTeXrevision\thisisundefined - \special{papersize=#8,#7}% - \else - \pdfpageheight #7\relax - \pdfpagewidth #8\relax - % XeTeX does not have \pdfhorigin and \pdfvorigin. - \fi - \fi - % - \setleading{\textleading} - % - \parindent = \defaultparindent - \setemergencystretch -} - -% @letterpaper (the default). -\def\letterpaper{{\globaldefs = 1 - \parskip = 3pt plus 2pt minus 1pt - \textleading = 13.2pt - % - % If page is nothing but text, make it come out even. - \internalpagesizes{607.2pt}{6in}% that's 46 lines - {\voffset}{.25in}% - {\bindingoffset}{36pt}% - {11in}{8.5in}% -}} - -% Use @smallbook to reset parameters for 7x9.25 trim size. -\def\smallbook{{\globaldefs = 1 - \parskip = 2pt plus 1pt - \textleading = 12pt - % - \internalpagesizes{7.5in}{5in}% - {-.2in}{0in}% - {\bindingoffset}{16pt}% - {9.25in}{7in}% - % - \lispnarrowing = 0.3in - \tolerance = 700 - \contentsrightmargin = 0pt - \defbodyindent = .5cm -}} - -% Use @smallerbook to reset parameters for 6x9 trim size. -% (Just testing, parameters still in flux.) -\def\smallerbook{{\globaldefs = 1 - \parskip = 1.5pt plus 1pt - \textleading = 12pt - % - \internalpagesizes{7.4in}{4.8in}% - {-.2in}{-.4in}% - {0pt}{14pt}% - {9in}{6in}% - % - \lispnarrowing = 0.25in - \tolerance = 700 - \contentsrightmargin = 0pt - \defbodyindent = .4cm -}} - -% Use @afourpaper to print on European A4 paper. -\def\afourpaper{{\globaldefs = 1 - \parskip = 3pt plus 2pt minus 1pt - \textleading = 13.2pt - % - % Double-side printing via postscript on Laserjet 4050 - % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm. - % To change the settings for a different printer or situation, adjust - % \normaloffset until the front-side and back-side texts align. Then - % do the same for \bindingoffset. You can set these for testing in - % your texinfo source file like this: - % @tex - % \global\normaloffset = -6mm - % \global\bindingoffset = 10mm - % @end tex - \internalpagesizes{673.2pt}{160mm}% that's 51 lines - {\voffset}{\hoffset}% - {\bindingoffset}{44pt}% - {297mm}{210mm}% - % - \tolerance = 700 - \contentsrightmargin = 0pt - \defbodyindent = 5mm -}} - -% Use @afivepaper to print on European A5 paper. -% From romildo@urano.iceb.ufop.br, 2 July 2000. -% He also recommends making @example and @lisp be small. -\def\afivepaper{{\globaldefs = 1 - \parskip = 2pt plus 1pt minus 0.1pt - \textleading = 12.5pt - % - \internalpagesizes{160mm}{120mm}% - {\voffset}{\hoffset}% - {\bindingoffset}{8pt}% - {210mm}{148mm}% - % - \lispnarrowing = 0.2in - \tolerance = 800 - \contentsrightmargin = 0pt - \defbodyindent = 2mm - \tableindent = 12mm -}} - -% A specific text layout, 24x15cm overall, intended for A4 paper. -\def\afourlatex{{\globaldefs = 1 - \afourpaper - \internalpagesizes{237mm}{150mm}% - {\voffset}{4.6mm}% - {\bindingoffset}{7mm}% - {297mm}{210mm}% - % - % Must explicitly reset to 0 because we call \afourpaper. - \globaldefs = 0 -}} - -% Use @afourwide to print on A4 paper in landscape format. -\def\afourwide{{\globaldefs = 1 - \afourpaper - \internalpagesizes{241mm}{165mm}% - {\voffset}{-2.95mm}% - {\bindingoffset}{7mm}% - {297mm}{210mm}% - \globaldefs = 0 -}} - -% @pagesizes TEXTHEIGHT[,TEXTWIDTH] -% Perhaps we should allow setting the margins, \topskip, \parskip, -% and/or leading, also. Or perhaps we should compute them somehow. -% -\parseargdef\pagesizes{\pagesizesyyy #1,,\finish} -\def\pagesizesyyy#1,#2,#3\finish{{% - \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi - \globaldefs = 1 - % - \parskip = 3pt plus 2pt minus 1pt - \setleading{\textleading}% - % - \dimen0 = #1\relax - \advance\dimen0 by \voffset - \advance\dimen0 by 1in % reference point for DVI is 1 inch from top of page - % - \dimen2 = \hsize - \advance\dimen2 by \normaloffset - \advance\dimen2 by 1in % reference point is 1 inch from left edge of page - % - \internalpagesizes{#1}{\hsize}% - {\voffset}{\normaloffset}% - {\bindingoffset}{44pt}% - {\dimen0}{\dimen2}% -}} - -% Set default to letter. -% -\letterpaper - -% Default value of \hfuzz, for suppressing warnings about overfull hboxes. -\hfuzz = 1pt - - -\message{and turning on texinfo input format.} - -\def^^L{\par} % remove \outer, so ^L can appear in an @comment - -% DEL is a comment character, in case @c does not suffice. -\catcode`\^^? = 14 - -% Define macros to output various characters with catcode for normal text. -\catcode`\"=\other \def\normaldoublequote{"} -\catcode`\$=\other \def\normaldollar{$}%$ font-lock fix -\catcode`\+=\other \def\normalplus{+} -\catcode`\<=\other \def\normalless{<} -\catcode`\>=\other \def\normalgreater{>} -\catcode`\^=\other \def\normalcaret{^} -\catcode`\_=\other \def\normalunderscore{_} -\catcode`\|=\other \def\normalverticalbar{|} -\catcode`\~=\other \def\normaltilde{~} - -% This macro is used to make a character print one way in \tt -% (where it can probably be output as-is), and another way in other fonts, -% where something hairier probably needs to be done. -% -% #1 is what to print if we are indeed using \tt; #2 is what to print -% otherwise. Since all the Computer Modern typewriter fonts have zero -% interword stretch (and shrink), and it is reasonable to expect all -% typewriter fonts to have this, we can check that font parameter. -% -\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi} - -% Same as above, but check for italic font. Actually this also catches -% non-italic slanted fonts since it is impossible to distinguish them from -% italic fonts. But since this is only used by $ and it uses \sl anyway -% this is not a problem. -\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi} - -% Set catcodes for Texinfo file - -% Active characters for printing the wanted glyph. -% Most of these we simply print from the \tt font, but for some, we can -% use math or other variants that look better in normal text. -% -\catcode`\"=\active -\def\activedoublequote{{\tt\char34}} -\let"=\activedoublequote -\catcode`\~=\active \def\activetilde{{\tt\char126}} \let~ = \activetilde -\chardef\hatchar=`\^ -\catcode`\^=\active \def\activehat{{\tt \hatchar}} \let^ = \activehat - -\catcode`\_=\active -\def_{\ifusingtt\normalunderscore\_} -\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em } -\let\realunder=_ - -\catcode`\|=\active \def|{{\tt\char124}} - -\chardef \less=`\< -\catcode`\<=\active \def\activeless{{\tt \less}}\let< = \activeless -\chardef \gtr=`\> -\catcode`\>=\active \def\activegtr{{\tt \gtr}}\let> = \activegtr -\catcode`\+=\active \def+{{\tt \char 43}} -\catcode`\$=\active \def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix -\catcode`\-=\active \let-=\normaldash - - -% used for headline/footline in the output routine, in case the page -% breaks in the middle of an @tex block. -\def\texinfochars{% - \let< = \activeless - \let> = \activegtr - \let~ = \activetilde - \let^ = \activehat - \markupsetuplqdefault \markupsetuprqdefault - \let\b = \strong - \let\i = \smartitalic - % in principle, all other definitions in \tex have to be undone too. -} - -% Used sometimes to turn off (effectively) the active characters even after -% parsing them. -\def\turnoffactive{% - \normalturnoffactive - \otherbackslash -} - -\catcode`\@=0 - -% \backslashcurfont outputs one backslash character in current font, -% as in \char`\\. -\global\chardef\backslashcurfont=`\\ -\global\let\rawbackslashxx=\backslashcurfont % let existing .??s files work - -% \realbackslash is an actual character `\' with catcode other, and -% \doublebackslash is two of them (for the pdf outlines). -{\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}} - -% In Texinfo, backslash is an active character; it prints the backslash -% in fixed width font. -\catcode`\\=\active % @ for escape char from now on. - -% Print a typewriter backslash. For math mode, we can't simply use -% \backslashcurfont: the story here is that in math mode, the \char -% of \backslashcurfont ends up printing the roman \ from the math symbol -% font (because \char in math mode uses the \mathcode, and plain.tex -% sets \mathcode`\\="026E). Hence we use an explicit \mathchar, -% which is the decimal equivalent of "715c (class 7, e.g., use \fam; -% ignored family value; char position "5C). We can't use " for the -% usual hex value because it has already been made active. - -@def@ttbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}} -@let@backslashchar = @ttbackslash % @backslashchar{} is for user documents. - -% \rawbackslash defines an active \ to do \backslashcurfont. -% \otherbackslash defines an active \ to be a literal `\' character with -% catcode other. We switch back and forth between these. -@gdef@rawbackslash{@let\=@backslashcurfont} -@gdef@otherbackslash{@let\=@realbackslash} - -% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of -% the literal character `\'. -% -{@catcode`- = @active - @gdef@normalturnoffactive{% - @passthroughcharstrue - @let-=@normaldash - @let"=@normaldoublequote - @let$=@normaldollar %$ font-lock fix - @let+=@normalplus - @let<=@normalless - @let>=@normalgreater - @let^=@normalcaret - @let_=@normalunderscore - @let|=@normalverticalbar - @let~=@normaltilde - @let\=@ttbackslash - @markupsetuplqdefault - @markupsetuprqdefault - @unsepspaces - } -} - -% If a .fmt file is being used, characters that might appear in a file -% name cannot be active until we have parsed the command line. -% So turn them off again, and have @fixbackslash turn them back on. -@catcode`+=@other @catcode`@_=@other - -% \enablebackslashhack - allow file to begin `\input texinfo' -% -% If a .fmt file is being used, we don't want the `\input texinfo' to show up. -% That is what \eatinput is for; after that, the `\' should revert to printing -% a backslash. -% If the file did not have a `\input texinfo', then it is turned off after -% the first line; otherwise the first `\' in the file would cause an error. -% This is used on the very last line of this file, texinfo.tex. -% We also use @c to call @fixbackslash, in case ends of lines are hidden. -{ -@catcode`@^=7 -@catcode`@^^M=13@gdef@enablebackslashhack{% - @global@let\ = @eatinput% - @catcode`@^^M=13% - @def@c{@fixbackslash@c}% - % Definition for the newline at the end of this file. - @def ^^M{@let^^M@secondlinenl}% - % Definition for a newline in the main Texinfo file. - @gdef @secondlinenl{@fixbackslash}% - % In case the first line has a whole-line command on it - @let@originalparsearg@parsearg - @def@parsearg{@fixbackslash@originalparsearg} -}} - -{@catcode`@^=7 @catcode`@^^M=13% -@gdef@eatinput input texinfo#1^^M{@fixbackslash}} - -% Emergency active definition of newline, in case an active newline token -% appears by mistake. -{@catcode`@^=7 @catcode13=13% -@gdef@enableemergencynewline{% - @gdef^^M{% - @par% - %@par% -}}} - - -@gdef@fixbackslash{% - @ifx\@eatinput @let\ = @ttbackslash @fi - @catcode13=5 % regular end of line - @enableemergencynewline - @let@c=@texinfoc - @let@parsearg@originalparsearg - % Also turn back on active characters that might appear in the input - % file name, in case not using a pre-dumped format. - @catcode`+=@active - @catcode`@_=@active - % - % If texinfo.cnf is present on the system, read it. - % Useful for site-wide @afourpaper, etc. This macro, @fixbackslash, gets - % called at the beginning of every Texinfo file. Not opening texinfo.cnf - % directly in this file, texinfo.tex, makes it possible to make a format - % file for Texinfo. - % - @openin 1 texinfo.cnf - @ifeof 1 @else @input texinfo.cnf @fi - @closein 1 -} - - -% Say @foo, not \foo, in error messages. -@escapechar = `@@ - -% These (along with & and #) are made active for url-breaking, so need -% active definitions as the normal characters. -@def@normaldot{.} -@def@normalquest{?} -@def@normalslash{/} - -% These look ok in all fonts, so just make them not special. -% @hashchar{} gets its own user-level command, because of #line. -@catcode`@& = @other @def@normalamp{&} -@catcode`@# = @other @def@normalhash{#} -@catcode`@% = @other @def@normalpercent{%} - -@let @hashchar = @normalhash - -@c Finally, make ` and ' active, so that txicodequoteundirected and -@c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}. If we -@c don't make ` and ' active, @code will not get them as active chars. -@c Do this last of all since we use ` in the previous @catcode assignments. -@catcode`@'=@active -@catcode`@`=@active -@markupsetuplqdefault -@markupsetuprqdefault - -@c Local variables: -@c eval: (add-hook 'write-file-hooks 'time-stamp) -@c page-delimiter: "^\\\\message\\|emacs-page" -@c time-stamp-start: "def\\\\texinfoversion{" -@c time-stamp-format: "%:y-%02m-%02d.%02H" -@c time-stamp-end: "}" -@c End: - -@c vim:sw=2: - -@enablebackslashhack diff --git a/doc/version.texi b/doc/version.texi deleted file mode 100644 index d9d5094..0000000 --- a/doc/version.texi +++ /dev/null @@ -1,4 +0,0 @@ -@set UPDATED 22 November 2019 -@set UPDATED-MONTH November 2019 -@set EDITION 3.3 -@set VERSION 3.3 diff --git a/fficonfig.h b/fficonfig.h deleted file mode 100644 index 7f38b25..0000000 --- a/fficonfig.h +++ /dev/null @@ -1,180 +0,0 @@ -/* fficonfig.h.in. Generated from configure.ac by autoheader. */ - -/* Define if building universal (internal helper macro) */ -/* #undef AC_APPLE_UNIVERSAL_BUILD */ - -/* Define to the flags needed for the .section .eh_frame directive. */ -#define EH_FRAME_FLAGS "a" - -/* Define this if you want extra debugging. */ -/* #undef FFI_DEBUG */ - -/* Cannot use PROT_EXEC on this target, so, we revert to alternative means */ -#define FFI_EXEC_TRAMPOLINE_TABLE 0 - -/* Define this if you want to enable pax emulated trampolines */ -/* #undef FFI_MMAP_EXEC_EMUTRAMP_PAX */ - -/* Cannot use malloc on this target, so, we revert to alternative means */ -#define FFI_MMAP_EXEC_WRIT 1 - -/* Define this if you do not want support for the raw API. */ -/* #undef FFI_NO_RAW_API */ - -/* Define this if you do not want support for aggregate types. */ -/* #undef FFI_NO_STRUCTS */ - -/* Define to 1 if you have `alloca', as a function or macro. */ -/* #undef HAVE_ALLOCA */ - -/* Define to 1 if you have and it should be used */ -#define HAVE_ALLOCA_H 1 - -/* Define if your assembler supports .ascii. */ -/* #undef HAVE_AS_ASCII_PSEUDO_OP */ - -/* Define if your assembler supports .cfi_* directives. */ -/* #undef HAVE_AS_CFI_PSEUDO_OP */ - -/* Define if your assembler supports .register. */ -/* #undef HAVE_AS_REGISTER_PSEUDO_OP */ - -/* Define if your assembler and linker support unaligned PC relative relocs. - */ -/* #undef HAVE_AS_SPARC_UA_PCREL */ - -/* Define if your assembler supports .string. */ -/* #undef HAVE_AS_STRING_PSEUDO_OP */ - -/* Define if your assembler supports unwind section type. */ -/* #undef HAVE_AS_X86_64_UNWIND_SECTION_TYPE */ - -/* Define if your assembler supports PC relative relocs. */ -#ifdef __x86_64__ -#define HAVE_AS_X86_PCREL 1 -#define __ILP32__ -#endif - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_DLFCN_H */ - -/* Define if __attribute__((visibility("hidden"))) is supported. */ -#define HAVE_HIDDEN_VISIBILITY_ATTRIBUTE 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_INTTYPES_H - -/* Define if you have the long double type and it is bigger than a double */ -#ifdef __LP64__ -#define HAVE_LONG_DOUBLE 1 -#else -#define HAVE_LONG_DOUBLE 0 -#endif - -/* Define if you support more than one size of the long double type */ -#define HAVE_LONG_DOUBLE_VARIANT 0 - -/* Define to 1 if you have the `memcpy' function. */ -#define HAVE_MEMCPY 1 - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_MEMORY_H */ - -/* Define to 1 if you have the `mkostemp' function. */ -#define HAVE_MKOSTEMP - -/* Define to 1 if you have the `mmap' function. */ -/* #undef HAVE_MMAP */ - -/* Define if mmap with MAP_ANON(YMOUS) works. */ -/* #undef HAVE_MMAP_ANON */ - -/* Define if mmap of /dev/zero works. */ -/* #undef HAVE_MMAP_DEV_ZERO */ - -/* Define if read-only mmap of a plain file works. */ -/* #undef HAVE_MMAP_FILE */ - -/* Define if .eh_frame sections should be read-only. */ -#define HAVE_RO_EH_FRAME 1 - -/* Define to 1 if you have the header file. */ -#define 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 header file. */ -/* #undef HAVE_SYS_MMAN_H */ - -/* 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 */ - -/* The size of `double', as computed by sizeof. */ -#define SIZEOF_DOUBLE 8 - -/* The size of `long double', as computed by sizeof. */ -#ifdef __LP64__ -#define SIZEOF_LONG_DOUBLE 16 -#else -#define SIZEOF_LONG_DOUBLE 8 -#endif - -/* The size of `size_t', as computed by sizeof. */ -#ifdef __LP64__ -#define SIZEOF_SIZE_T 8 -#else -#define SIZEOF_SIZE_T 4 -#endif - -/* Define if symbols are underscored. */ -/* #undef SYMBOL_UNDERSCORE */ - -/* Define this if you are using Purify and want to suppress spurious messages. - */ -/* #undef USING_PURIFY */ - -/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most - significant byte first (like Motorola and SPARC, unlike Intel). */ -#if defined AC_APPLE_UNIVERSAL_BUILD -#if defined __BIG_ENDIAN__ -#define WORDS_BIGENDIAN 1 -#endif -#else -#ifndef WORDS_BIGENDIAN -/* #undef WORDS_BIGENDIAN */ -#endif -#endif - -/* Define to `unsigned int' if does not define. */ -/* #undef size_t */ - -#ifdef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE -#ifdef LIBFFI_ASM -#ifdef __APPLE__ -#define FFI_HIDDEN(name) .private_extern name -#else -#define FFI_HIDDEN(name) .hidden name -#endif -#else -#define FFI_HIDDEN __attribute__ ((visibility ("hidden"))) -#endif -#else -#ifdef LIBFFI_ASM -#define FFI_HIDDEN(name) -#else -#define FFI_HIDDEN -#endif -#endif diff --git a/fficonfig.h.in b/fficonfig.h.in deleted file mode 100644 index c675685..0000000 --- a/fficonfig.h.in +++ /dev/null @@ -1,214 +0,0 @@ -/* fficonfig.h.in. Generated from configure.ac by autoheader. */ - -/* Define if building universal (internal helper macro) */ -#undef AC_APPLE_UNIVERSAL_BUILD - -/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP - systems. This function is required for `alloca.c' support on those systems. - */ -#undef CRAY_STACKSEG_END - -/* Define to 1 if using `alloca.c'. */ -#undef C_ALLOCA - -/* Define to the flags needed for the .section .eh_frame directive. */ -#undef EH_FRAME_FLAGS - -/* Define this if you want extra debugging. */ -#undef FFI_DEBUG - -/* Cannot use PROT_EXEC on this target, so, we revert to alternative means */ -#undef FFI_EXEC_TRAMPOLINE_TABLE - -/* Define this if you want to enable pax emulated trampolines */ -#undef FFI_MMAP_EXEC_EMUTRAMP_PAX - -/* Cannot use malloc on this target, so, we revert to alternative means */ -#undef FFI_MMAP_EXEC_WRIT - -/* Define this if you do not want support for the raw API. */ -#undef FFI_NO_RAW_API - -/* Define this if you do not want support for aggregate types. */ -#undef FFI_NO_STRUCTS - -/* Define to 1 if you have `alloca', as a function or macro. */ -#undef HAVE_ALLOCA - -/* Define to 1 if you have and it should be used (not on Ultrix). - */ -#undef HAVE_ALLOCA_H - -/* Define if your assembler supports .cfi_* directives. */ -#undef HAVE_AS_CFI_PSEUDO_OP - -/* Define if your assembler supports .register. */ -#undef HAVE_AS_REGISTER_PSEUDO_OP - -/* Define if the compiler uses zarch features. */ -#undef HAVE_AS_S390_ZARCH - -/* Define if your assembler and linker support unaligned PC relative relocs. - */ -#undef HAVE_AS_SPARC_UA_PCREL - -/* Define if your assembler supports unwind section type. */ -#undef HAVE_AS_X86_64_UNWIND_SECTION_TYPE - -/* Define if your assembler supports PC relative relocs. */ -#undef HAVE_AS_X86_PCREL - -/* Define to 1 if you have the header file. */ -#undef HAVE_DLFCN_H - -/* Define if __attribute__((visibility("hidden"))) is supported. */ -#undef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE - -/* Define to 1 if you have the header file. */ -#undef HAVE_INTTYPES_H - -/* Define if you have the long double type and it is bigger than a double */ -#undef HAVE_LONG_DOUBLE - -/* Define if you support more than one size of the long double type */ -#undef HAVE_LONG_DOUBLE_VARIANT - -/* Define to 1 if you have the `memcpy' function. */ -#undef HAVE_MEMCPY - -/* Define to 1 if you have the header file. */ -#undef HAVE_MEMORY_H - -/* Define to 1 if you have the `mkostemp' function. */ -#undef HAVE_MKOSTEMP - -/* Define to 1 if you have the `mmap' function. */ -#undef HAVE_MMAP - -/* Define if mmap with MAP_ANON(YMOUS) works. */ -#undef HAVE_MMAP_ANON - -/* Define if mmap of /dev/zero works. */ -#undef HAVE_MMAP_DEV_ZERO - -/* Define if read-only mmap of a plain file works. */ -#undef HAVE_MMAP_FILE - -/* Define if .eh_frame sections should be read-only. */ -#undef HAVE_RO_EH_FRAME - -/* 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 header file. */ -#undef HAVE_SYS_MMAN_H - -/* 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 - -/* Define to 1 if GNU symbol versioning is used for libatomic. */ -#undef LIBFFI_GNU_SYMBOL_VERSIONING - -/* Define to the sub-directory where libtool stores uninstalled libraries. */ -#undef LT_OBJDIR - -/* 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 home page for this package. */ -#undef PACKAGE_URL - -/* Define to the version of this package. */ -#undef PACKAGE_VERSION - -/* The size of `double', as computed by sizeof. */ -#undef SIZEOF_DOUBLE - -/* The size of `long double', as computed by sizeof. */ -#undef SIZEOF_LONG_DOUBLE - -/* The size of `size_t', as computed by sizeof. */ -#undef SIZEOF_SIZE_T - -/* If using the C implementation of alloca, define if you know the - direction of stack growth for your system; otherwise it will be - automatically deduced at runtime. - STACK_DIRECTION > 0 => grows toward higher addresses - STACK_DIRECTION < 0 => grows toward lower addresses - STACK_DIRECTION = 0 => direction of growth unknown */ -#undef STACK_DIRECTION - -/* Define to 1 if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* Define if symbols are underscored. */ -#undef SYMBOL_UNDERSCORE - -/* Define this if you are using Purify and want to suppress spurious messages. - */ -#undef USING_PURIFY - -/* Version number of package */ -#undef VERSION - -/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most - significant byte first (like Motorola and SPARC, unlike Intel). */ -#if defined AC_APPLE_UNIVERSAL_BUILD -# if defined __BIG_ENDIAN__ -# define WORDS_BIGENDIAN 1 -# endif -#else -# ifndef WORDS_BIGENDIAN -# undef WORDS_BIGENDIAN -# endif -#endif - -/* Define to `unsigned int' if does not define. */ -#undef size_t - - -#ifdef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE -#ifdef LIBFFI_ASM -#ifdef __APPLE__ -#define FFI_HIDDEN(name) .private_extern name -#else -#define FFI_HIDDEN(name) .hidden name -#endif -#else -#define FFI_HIDDEN __attribute__ ((visibility ("hidden"))) -#endif -#else -#ifdef LIBFFI_ASM -#define FFI_HIDDEN(name) -#else -#define FFI_HIDDEN -#endif -#endif - diff --git a/generate-darwin-source-and-headers.py b/generate-darwin-source-and-headers.py deleted file mode 100755 index f7fc414..0000000 --- a/generate-darwin-source-and-headers.py +++ /dev/null @@ -1,203 +0,0 @@ -#!/usr/bin/env python -import subprocess -import os -import errno -import collections -import glob -import argparse - -class Platform(object): - pass - -class simulator_platform(Platform): - directory = 'darwin_ios' - sdk = 'iphonesimulator' - arch = 'i386' - triple = 'i386-apple-darwin11' - version_min = '-miphoneos-version-min=7.0' - - prefix = "#ifdef __i386__\n\n" - suffix = "\n\n#endif" - src_dir = 'x86' - src_files = ['sysv.S', 'ffi.c', 'internal.h'] - - -class simulator64_platform(Platform): - directory = 'darwin_ios' - sdk = 'iphonesimulator' - arch = 'x86_64' - triple = 'x86_64-apple-darwin13' - version_min = '-miphoneos-version-min=7.0' - - prefix = "#ifdef __x86_64__\n\n" - suffix = "\n\n#endif" - src_dir = 'x86' - src_files = ['unix64.S', 'ffi64.c', 'ffiw64.c', 'win64.S', 'internal64.h', 'asmnames.h'] - - -class device_platform(Platform): - directory = 'darwin_ios' - sdk = 'iphoneos' - arch = 'armv7' - triple = 'arm-apple-darwin11' - version_min = '-miphoneos-version-min=7.0' - - prefix = "#ifdef __arm__\n\n" - suffix = "\n\n#endif" - src_dir = 'arm' - src_files = ['sysv.S', 'ffi.c', 'internal.h'] - - -class device64_platform(Platform): - directory = 'darwin_ios' - sdk = 'iphoneos' - arch = 'arm64' - triple = 'aarch64-apple-darwin13' - version_min = '-miphoneos-version-min=7.0' - - prefix = "#ifdef __arm64__\n\n" - suffix = "\n\n#endif" - src_dir = 'aarch64' - src_files = ['sysv.S', 'ffi.c', 'internal.h'] - - -class desktop32_platform(Platform): - directory = 'darwin_osx' - sdk = 'macosx' - arch = 'i386' - triple = 'i386-apple-darwin10' - version_min = '-mmacosx-version-min=10.6' - src_dir = 'x86' - src_files = ['sysv.S', 'ffi.c', 'internal.h'] - - prefix = "#ifdef __i386__\n\n" - suffix = "\n\n#endif" - - -class desktop64_platform(Platform): - directory = 'darwin_osx' - sdk = 'macosx' - arch = 'x86_64' - triple = 'x86_64-apple-darwin10' - version_min = '-mmacosx-version-min=10.6' - - prefix = "#ifdef __x86_64__\n\n" - suffix = "\n\n#endif" - src_dir = 'x86' - src_files = ['unix64.S', 'ffi64.c', 'ffiw64.c', 'win64.S', 'internal64.h', 'asmnames.h'] - - -def mkdir_p(path): - try: - os.makedirs(path) - except OSError as exc: # Python >2.5 - if exc.errno != errno.EEXIST: - raise - - -def move_file(src_dir, dst_dir, filename, file_suffix=None, prefix='', suffix=''): - mkdir_p(dst_dir) - out_filename = filename - - if file_suffix: - if filename in ['internal64.h', 'asmnames.h', 'internal.h']: - out_filename = filename - else: - split_name = os.path.splitext(filename) - out_filename = "%s_%s%s" % (split_name[0], file_suffix, split_name[1]) - - with open(os.path.join(src_dir, filename)) as in_file: - with open(os.path.join(dst_dir, out_filename), 'w') as out_file: - if prefix: - out_file.write(prefix) - - out_file.write(in_file.read()) - - if suffix: - out_file.write(suffix) - - -def list_files(src_dir, pattern=None, filelist=None): - if pattern: filelist = glob.iglob(os.path.join(src_dir, pattern)) - for file in filelist: - yield os.path.basename(file) - - -def copy_files(src_dir, dst_dir, pattern=None, filelist=None, file_suffix=None, prefix=None, suffix=None): - for filename in list_files(src_dir, pattern=pattern, filelist=filelist): - move_file(src_dir, dst_dir, filename, file_suffix=file_suffix, prefix=prefix, suffix=suffix) - - -def copy_src_platform_files(platform): - src_dir = os.path.join('src', platform.src_dir) - dst_dir = os.path.join(platform.directory, 'src', platform.src_dir) - copy_files(src_dir, dst_dir, filelist=platform.src_files, file_suffix=platform.arch, prefix=platform.prefix, suffix=platform.suffix) - - -def build_target(platform, platform_headers): - def xcrun_cmd(cmd): - return 'xcrun -sdk %s %s -arch %s' % (platform.sdk, cmd, platform.arch) - - tag='%s-%s' % (platform.sdk, platform.arch) - build_dir = 'build_%s' % tag - mkdir_p(build_dir) - env = dict(CC=xcrun_cmd('clang'), - LD=xcrun_cmd('ld'), - CFLAGS='%s' % (platform.version_min)) - working_dir = os.getcwd() - try: - os.chdir(build_dir) - subprocess.check_call(['../configure', '-host', platform.triple], env=env) - finally: - os.chdir(working_dir) - - for src_dir in [build_dir, os.path.join(build_dir, 'include')]: - copy_files(src_dir, - os.path.join(platform.directory, 'include'), - pattern='*.h', - file_suffix=platform.arch, - prefix=platform.prefix, - suffix=platform.suffix) - - for filename in list_files(src_dir, pattern='*.h'): - platform_headers[filename].add((platform.prefix, platform.arch, platform.suffix)) - - -def generate_source_and_headers(generate_osx=True, generate_ios=True): - copy_files('src', 'darwin_common/src', pattern='*.c') - copy_files('include', 'darwin_common/include', pattern='*.h') - - if generate_ios: - copy_src_platform_files(simulator_platform) - copy_src_platform_files(simulator64_platform) - copy_src_platform_files(device_platform) - copy_src_platform_files(device64_platform) - if generate_osx: - copy_src_platform_files(desktop32_platform) - copy_src_platform_files(desktop64_platform) - - platform_headers = collections.defaultdict(set) - - if generate_ios: - build_target(simulator_platform, platform_headers) - build_target(simulator64_platform, platform_headers) - build_target(device_platform, platform_headers) - build_target(device64_platform, platform_headers) - if generate_osx: - build_target(desktop32_platform, platform_headers) - build_target(desktop64_platform, platform_headers) - - mkdir_p('darwin_common/include') - for header_name, tag_tuples in platform_headers.iteritems(): - basename, suffix = os.path.splitext(header_name) - with open(os.path.join('darwin_common/include', header_name), 'w') as header: - for tag_tuple in tag_tuples: - header.write('%s#include <%s_%s%s>\n%s\n' % (tag_tuple[0], basename, tag_tuple[1], suffix, tag_tuple[2])) - -if __name__ == '__main__': - parser = argparse.ArgumentParser() - parser.add_argument('--only-ios', action='store_true', default=False) - parser.add_argument('--only-osx', action='store_true', default=False) - args = parser.parse_args() - - generate_source_and_headers(generate_osx=not args.only_ios, generate_ios=not args.only_osx) diff --git a/include/Makefile.am b/include/Makefile.am deleted file mode 100644 index c59df9f..0000000 --- a/include/Makefile.am +++ /dev/null @@ -1,9 +0,0 @@ -## Process this with automake to create Makefile.in - -AUTOMAKE_OPTIONS=foreign - -DISTCLEANFILES=ffitarget.h -noinst_HEADERS=ffi_common.h ffi_cfi.h -EXTRA_DIST=ffi.h.in - -nodist_include_HEADERS = ffi.h ffitarget.h diff --git a/include/Makefile.in b/include/Makefile.in deleted file mode 100644 index 4ab941e..0000000 --- a/include/Makefile.in +++ /dev/null @@ -1,607 +0,0 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2018 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@ - -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -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@ -target_triplet = @target@ -subdir = include -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/asmcfi.m4 \ - $(top_srcdir)/m4/ax_append_flag.m4 \ - $(top_srcdir)/m4/ax_cc_maxopt.m4 \ - $(top_srcdir)/m4/ax_cflags_warn_all.m4 \ - $(top_srcdir)/m4/ax_check_compile_flag.m4 \ - $(top_srcdir)/m4/ax_compiler_vendor.m4 \ - $(top_srcdir)/m4/ax_configure_args.m4 \ - $(top_srcdir)/m4/ax_enable_builddir.m4 \ - $(top_srcdir)/m4/ax_gcc_archflag.m4 \ - $(top_srcdir)/m4/ax_gcc_x86_cpuid.m4 \ - $(top_srcdir)/m4/ax_require_defined.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \ - $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/fficonfig.h -CONFIG_CLEAN_FILES = ffi.h -CONFIG_CLEAN_VPATH_FILES = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -SOURCES = -DIST_SOURCES = -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -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 = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__installdirs = "$(DESTDIR)$(includedir)" -HEADERS = $(nodist_include_HEADERS) $(noinst_HEADERS) -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/ffi.h.in -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AM_LTLDFLAGS = @AM_LTLDFLAGS@ -AM_RUNTESTFLAGS = @AM_RUNTESTFLAGS@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCAS = @CCAS@ -CCASDEPMODE = @CCASDEPMODE@ -CCASFLAGS = @CCASFLAGS@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FFI_EXEC_TRAMPOLINE_TABLE = @FFI_EXEC_TRAMPOLINE_TABLE@ -FGREP = @FGREP@ -GREP = @GREP@ -HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@ -HAVE_LONG_DOUBLE_VARIANT = @HAVE_LONG_DOUBLE_VARIANT@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OPT_LDFLAGS = @OPT_LDFLAGS@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PRTDIAG = @PRTDIAG@ -RANLIB = @RANLIB@ -SECTION_LDFLAGS = @SECTION_LDFLAGS@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -TARGET = @TARGET@ -TARGETDIR = @TARGETDIR@ -TARGET_OBJ = @TARGET_OBJ@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -ax_enable_builddir_sed = @ax_enable_builddir_sed@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sys_symbol_underscore = @sys_symbol_underscore@ -sysconfdir = @sysconfdir@ -target = @target@ -target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ -toolexecdir = @toolexecdir@ -toolexeclibdir = @toolexeclibdir@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -AUTOMAKE_OPTIONS = foreign -DISTCLEANFILES = ffitarget.h -noinst_HEADERS = ffi_common.h ffi_cfi.h -EXTRA_DIST = ffi.h.in -nodist_include_HEADERS = ffi.h ffitarget.h -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign include/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): -ffi.h: $(top_builddir)/config.status $(srcdir)/ffi.h.in - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-nodist_includeHEADERS: $(nodist_include_HEADERS) - @$(NORMAL_INSTALL) - @list='$(nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ - done - -uninstall-nodist_includeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(HEADERS) -installdirs: - for dir in "$(DESTDIR)$(includedir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: install-nodist_includeHEADERS - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-nodist_includeHEADERS - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-libtool cscopelist-am ctags ctags-am distclean \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man \ - install-nodist_includeHEADERS install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ - uninstall-am uninstall-nodist_includeHEADERS - -.PRECIOUS: Makefile - - -# 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: diff --git a/include/ffi-aarch64.h b/include/ffi-aarch64.h deleted file mode 100644 index ea557e6..0000000 --- a/include/ffi-aarch64.h +++ /dev/null @@ -1,500 +0,0 @@ -/* -----------------------------------------------------------------*-C-*- - libffi 3.2.9999 - Copyright (c) 2011, 2014 Anthony Green - - Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc. - - 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 AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - ----------------------------------------------------------------------- */ - -/* ------------------------------------------------------------------- - Most of the API is documented in doc/libffi.texi. - - The raw API is designed to bypass some of the argument packing and - unpacking on architectures for which it can be avoided. Routines - are provided to emulate the raw API if the underlying platform - doesn't allow faster implementation. - - More details on the raw API can be found in: - - http://gcc.gnu.org/ml/java/1999-q3/msg00138.html - - and - - http://gcc.gnu.org/ml/java/1999-q3/msg00174.html - -------------------------------------------------------------------- */ - -#ifndef LIBFFI_H -#define LIBFFI_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* Specify which architecture libffi is configured for. */ -#ifndef AARCH64 -#define AARCH64 -#endif - -/* ---- System configuration information --------------------------------- */ - -#include - -/* Need minimal decorations for DLLs to works on Windows. GCC has - autoimport and autoexport. Rely on Libtool to help MSVC export - from a DLL, but always declare data to be imported for MSVC - clients. This costs an extra indirection for MSVC clients using - the static version of the library, but don't worry about that. - Besides, as a workaround, they can define FFI_BUILDING if they - *know* they are going to link with the static library. */ -#if defined _WIN32 && !defined FFI_STATIC_BUILD -#ifdef FFI_BUILDING -#define FFI_EXTERN __declspec(dllexport) -#else -#define FFI_EXTERN __declspec(dllimport) -#endif -#else -#define FFI_EXTERN extern -#endif - -#ifndef LIBFFI_ASM - -#if defined(_MSC_VER) && !defined(__clang__) -#define __attribute__(X) -#endif - -#include -#include - -/* LONG_LONG_MAX is not always defined (not if STRICT_ANSI, for example). - But we can find it either under the correct ANSI name, or under GNU - C's internal name. */ - -#define FFI_64_BIT_MAX 9223372036854775807 - -#ifdef LONG_LONG_MAX -# define FFI_LONG_LONG_MAX LONG_LONG_MAX -#else -# ifdef LLONG_MAX -# define FFI_LONG_LONG_MAX LLONG_MAX -# ifdef _AIX52 /* or newer has C99 LLONG_MAX */ -# undef FFI_64_BIT_MAX -# define FFI_64_BIT_MAX 9223372036854775807LL -# endif /* _AIX52 or newer */ -# else -# ifdef __GNUC__ -# define FFI_LONG_LONG_MAX __LONG_LONG_MAX__ -# endif -# ifdef _AIX /* AIX 5.1 and earlier have LONGLONG_MAX */ -# ifndef __PPC64__ -# if defined (__IBMC__) || defined (__IBMCPP__) -# define FFI_LONG_LONG_MAX LONGLONG_MAX -# endif -# endif /* __PPC64__ */ -# undef FFI_64_BIT_MAX -# define FFI_64_BIT_MAX 9223372036854775807LL -# endif -# endif -#endif - -/* The closure code assumes that this works on pointers, i.e. a size_t - can hold a pointer. */ - -typedef struct _ffi_type -{ - size_t size; - unsigned short alignment; - unsigned short type; - struct _ffi_type **elements; -} ffi_type; - -#ifndef LIBFFI_HIDE_BASIC_TYPES -#if SCHAR_MAX == 127 -# define ffi_type_uchar ffi_type_uint8 -# define ffi_type_schar ffi_type_sint8 -#else - #error "char size not supported" -#endif - -#if SHRT_MAX == 32767 -# define ffi_type_ushort ffi_type_uint16 -# define ffi_type_sshort ffi_type_sint16 -#elif SHRT_MAX == 2147483647 -# define ffi_type_ushort ffi_type_uint32 -# define ffi_type_sshort ffi_type_sint32 -#else - #error "short size not supported" -#endif - -#if INT_MAX == 32767 -# define ffi_type_uint ffi_type_uint16 -# define ffi_type_sint ffi_type_sint16 -#elif INT_MAX == 2147483647 -# define ffi_type_uint ffi_type_uint32 -# define ffi_type_sint ffi_type_sint32 -#elif INT_MAX == 9223372036854775807 -# define ffi_type_uint ffi_type_uint64 -# define ffi_type_sint ffi_type_sint64 -#else - #error "int size not supported" -#endif - -#if LONG_MAX == 2147483647 -# if FFI_LONG_LONG_MAX != FFI_64_BIT_MAX - #error "no 64-bit data type supported" -# endif -#elif LONG_MAX != FFI_64_BIT_MAX - #error "long size not supported" -#endif - -#if LONG_MAX == 2147483647 -# define ffi_type_ulong ffi_type_uint32 -# define ffi_type_slong ffi_type_sint32 -#elif LONG_MAX == FFI_64_BIT_MAX -# define ffi_type_ulong ffi_type_uint64 -# define ffi_type_slong ffi_type_sint64 -#else - #error "long size not supported" -#endif - -/* These are defined in types.c. */ -FFI_EXTERN ffi_type ffi_type_void; -FFI_EXTERN ffi_type ffi_type_uint8; -FFI_EXTERN ffi_type ffi_type_sint8; -FFI_EXTERN ffi_type ffi_type_uint16; -FFI_EXTERN ffi_type ffi_type_sint16; -FFI_EXTERN ffi_type ffi_type_uint32; -FFI_EXTERN ffi_type ffi_type_sint32; -FFI_EXTERN ffi_type ffi_type_uint64; -FFI_EXTERN ffi_type ffi_type_sint64; -FFI_EXTERN ffi_type ffi_type_float; -FFI_EXTERN ffi_type ffi_type_double; -FFI_EXTERN ffi_type ffi_type_pointer; - -#if 1 -FFI_EXTERN ffi_type ffi_type_longdouble; -#else -#define ffi_type_longdouble ffi_type_double -#endif - -#ifdef FFI_TARGET_HAS_COMPLEX_TYPE -FFI_EXTERN ffi_type ffi_type_complex_float; -FFI_EXTERN ffi_type ffi_type_complex_double; -#if 1 -FFI_EXTERN ffi_type ffi_type_complex_longdouble; -#else -#define ffi_type_complex_longdouble ffi_type_complex_double -#endif -#endif -#endif /* LIBFFI_HIDE_BASIC_TYPES */ - -typedef enum { - FFI_OK = 0, - FFI_BAD_TYPEDEF, - FFI_BAD_ABI -} ffi_status; - -typedef struct { - ffi_abi abi; - unsigned nargs; - ffi_type **arg_types; - ffi_type *rtype; - unsigned bytes; - unsigned flags; - unsigned isVariadic; -#ifdef FFI_EXTRA_CIF_FIELDS - FFI_EXTRA_CIF_FIELDS; -#endif -} ffi_cif; - -/* ---- Definitions for the raw API -------------------------------------- */ - -#ifndef FFI_SIZEOF_ARG -# if LONG_MAX == 2147483647 -# define FFI_SIZEOF_ARG 4 -# elif LONG_MAX == FFI_64_BIT_MAX -# define FFI_SIZEOF_ARG 8 -# endif -#endif - -#ifndef FFI_SIZEOF_JAVA_RAW -# define FFI_SIZEOF_JAVA_RAW FFI_SIZEOF_ARG -#endif - -typedef union { - ffi_sarg sint; - ffi_arg uint; - float flt; - char data[FFI_SIZEOF_ARG]; - void* ptr; -} ffi_raw; - -#if FFI_SIZEOF_JAVA_RAW == 4 && FFI_SIZEOF_ARG == 8 -/* This is a special case for mips64/n32 ABI (and perhaps others) where - sizeof(void *) is 4 and FFI_SIZEOF_ARG is 8. */ -typedef union { - signed int sint; - unsigned int uint; - float flt; - char data[FFI_SIZEOF_JAVA_RAW]; - void* ptr; -} ffi_java_raw; -#else -typedef ffi_raw ffi_java_raw; -#endif - -FFI_EXTERN -void ffi_raw_call (ffi_cif *cif, - void (*fn)(void), - void *rvalue, - ffi_raw *avalue); - -FFI_EXTERN void ffi_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_raw *raw); -FFI_EXTERN void ffi_raw_to_ptrarray (ffi_cif *cif, ffi_raw *raw, void **args); -FFI_EXTERN size_t ffi_raw_size (ffi_cif *cif); - -/* This is analogous to the raw API, except it uses Java parameter - packing, even on 64-bit machines. I.e. on 64-bit machines longs - and doubles are followed by an empty 64-bit word. */ -FFI_EXTERN -void ffi_java_raw_call (ffi_cif *cif, - void (*fn)(void), - void *rvalue, - ffi_java_raw *avalue); - -FFI_EXTERN void ffi_java_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_java_raw *raw); -FFI_EXTERN void ffi_java_raw_to_ptrarray (ffi_cif *cif, ffi_java_raw *raw, void **args); -FFI_EXTERN size_t ffi_java_raw_size (ffi_cif *cif); - -/* ---- Definitions for closures ----------------------------------------- */ - -#if FFI_CLOSURES - -#ifdef _MSC_VER -__declspec(align(8)) -#endif -typedef struct { -#if 0 - void *trampoline_table; - void *trampoline_table_entry; -#else - char tramp[FFI_TRAMPOLINE_SIZE]; -#endif - ffi_cif *cif; - void (*fun)(ffi_cif*,void*,void**,void*); - void *user_data; -} ffi_closure -#ifdef __GNUC__ - __attribute__((aligned (8))) -#endif - ; - -#ifndef __GNUC__ -# ifdef __sgi -# pragma pack 0 -# endif -#endif - -FFI_EXTERN void *ffi_closure_alloc (size_t size, void **code); -FFI_EXTERN void ffi_closure_free (void *); - -FFI_EXTERN ffi_status -ffi_prep_closure (ffi_closure*, - ffi_cif *, - void (*fun)(ffi_cif*,void*,void**,void*), - void *user_data) -#if defined(__GNUC__) && (((__GNUC__ * 100) + __GNUC_MINOR__) >= 405) - __attribute__((deprecated ("use ffi_prep_closure_loc instead"))) -#elif defined(__GNUC__) && __GNUC__ >= 3 - __attribute__((deprecated)) -#endif - ; - -FFI_EXTERN ffi_status -ffi_prep_closure_loc (ffi_closure*, - ffi_cif *, - void (*fun)(ffi_cif*,void*,void**,void*), - void *user_data, - void*codeloc); - -#ifdef __sgi -# pragma pack 8 -#endif -typedef struct { -#if 0 - void *trampoline_table; - void *trampoline_table_entry; -#else - char tramp[FFI_TRAMPOLINE_SIZE]; -#endif - ffi_cif *cif; - -#if !FFI_NATIVE_RAW_API - - /* If this is enabled, then a raw closure has the same layout - as a regular closure. We use this to install an intermediate - handler to do the transaltion, void** -> ffi_raw*. */ - - void (*translate_args)(ffi_cif*,void*,void**,void*); - void *this_closure; - -#endif - - void (*fun)(ffi_cif*,void*,ffi_raw*,void*); - void *user_data; - -} ffi_raw_closure; - -typedef struct { -#if 0 - void *trampoline_table; - void *trampoline_table_entry; -#else - char tramp[FFI_TRAMPOLINE_SIZE]; -#endif - - ffi_cif *cif; - -#if !FFI_NATIVE_RAW_API - - /* If this is enabled, then a raw closure has the same layout - as a regular closure. We use this to install an intermediate - handler to do the translation, void** -> ffi_raw*. */ - - void (*translate_args)(ffi_cif*,void*,void**,void*); - void *this_closure; - -#endif - - void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*); - void *user_data; - -} ffi_java_raw_closure; - -FFI_EXTERN ffi_status -ffi_prep_raw_closure (ffi_raw_closure*, - ffi_cif *cif, - void (*fun)(ffi_cif*,void*,ffi_raw*,void*), - void *user_data); - -FFI_EXTERN ffi_status -ffi_prep_raw_closure_loc (ffi_raw_closure*, - ffi_cif *cif, - void (*fun)(ffi_cif*,void*,ffi_raw*,void*), - void *user_data, - void *codeloc); - -FFI_EXTERN ffi_status -ffi_prep_java_raw_closure (ffi_java_raw_closure*, - ffi_cif *cif, - void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), - void *user_data); - -FFI_EXTERN ffi_status -ffi_prep_java_raw_closure_loc (ffi_java_raw_closure*, - ffi_cif *cif, - void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), - void *user_data, - void *codeloc); - -#endif /* FFI_CLOSURES */ - -#if FFI_GO_CLOSURES - -typedef struct { - void *tramp; - ffi_cif *cif; - void (*fun)(ffi_cif*,void*,void**,void*); -} ffi_go_closure; - -FFI_EXTERN -ffi_status ffi_prep_go_closure (ffi_go_closure*, ffi_cif *, - void (*fun)(ffi_cif*,void*,void**,void*)); - -FFI_EXTERN -void ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue, - void **avalue, void *closure); - -#endif /* FFI_GO_CLOSURES */ - -/* ---- Public interface definition -------------------------------------- */ - -FFI_EXTERN -ffi_status ffi_prep_cif(ffi_cif *cif, - ffi_abi abi, - unsigned int nargs, - ffi_type *rtype, - ffi_type **atypes); - -FFI_EXTERN -ffi_status ffi_prep_cif_var(ffi_cif *cif, - ffi_abi abi, - unsigned int nfixedargs, - unsigned int ntotalargs, - ffi_type *rtype, - ffi_type **atypes); - -FFI_EXTERN -void ffi_call(ffi_cif *cif, - void (*fn)(void), - void *rvalue, - void **avalue); - -FFI_EXTERN -ffi_status ffi_get_struct_offsets (ffi_abi abi, ffi_type *struct_type, - size_t *offsets); - -/* Useful for eliminating compiler warnings. */ -#define FFI_FN(f) ((void (*)(void))f) - -/* ---- Definitions shared with assembly code ---------------------------- */ - -#endif /* !LIBFFI_ASM */ - -/* If these change, update src/mips/ffitarget.h. */ -#define FFI_TYPE_VOID 0 -#define FFI_TYPE_INT 1 -#define FFI_TYPE_FLOAT 2 -#define FFI_TYPE_DOUBLE 3 -#if 1 -#define FFI_TYPE_LONGDOUBLE 4 -#else -#define FFI_TYPE_LONGDOUBLE FFI_TYPE_DOUBLE -#endif -#define FFI_TYPE_UINT8 5 -#define FFI_TYPE_SINT8 6 -#define FFI_TYPE_UINT16 7 -#define FFI_TYPE_SINT16 8 -#define FFI_TYPE_UINT32 9 -#define FFI_TYPE_SINT32 10 -#define FFI_TYPE_UINT64 11 -#define FFI_TYPE_SINT64 12 -#define FFI_TYPE_STRUCT 13 -#define FFI_TYPE_POINTER 14 -#define FFI_TYPE_COMPLEX 15 - -/* This should always refer to the last type code (for sanity checks). */ -#define FFI_TYPE_LAST FFI_TYPE_COMPLEX - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/include/ffi-arm.h b/include/ffi-arm.h deleted file mode 100644 index e78adf2..0000000 --- a/include/ffi-arm.h +++ /dev/null @@ -1,500 +0,0 @@ -/* -----------------------------------------------------------------*-C-*- - libffi 3.2.9999 - Copyright (c) 2011, 2014 Anthony Green - - Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc. - - 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 AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - ----------------------------------------------------------------------- */ - -/* ------------------------------------------------------------------- - Most of the API is documented in doc/libffi.texi. - - The raw API is designed to bypass some of the argument packing and - unpacking on architectures for which it can be avoided. Routines - are provided to emulate the raw API if the underlying platform - doesn't allow faster implementation. - - More details on the raw API can be found in: - - http://gcc.gnu.org/ml/java/1999-q3/msg00138.html - - and - - http://gcc.gnu.org/ml/java/1999-q3/msg00174.html - -------------------------------------------------------------------- */ - -#ifndef LIBFFI_H -#define LIBFFI_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* Specify which architecture libffi is configured for. */ -#ifndef ARM -#define ARM -#endif - -/* ---- System configuration information --------------------------------- */ - -#include - -/* Need minimal decorations for DLLs to works on Windows. GCC has - autoimport and autoexport. Rely on Libtool to help MSVC export - from a DLL, but always declare data to be imported for MSVC - clients. This costs an extra indirection for MSVC clients using - the static version of the library, but don't worry about that. - Besides, as a workaround, they can define FFI_BUILDING if they - *know* they are going to link with the static library. */ -#if defined _MSC_VER && !defined FFI_STATIC_BUILD -#ifdef FFI_BUILDING -#define FFI_EXTERN __declspec(dllexport) -#else -#define FFI_EXTERN __declspec(dllimport) -#endif -#else -#define FFI_EXTERN extern -#endif - -#ifndef LIBFFI_ASM - -#if defined(_MSC_VER) && !defined(__clang__) -#define __attribute__(X) -#endif - -#include -#include - -/* LONG_LONG_MAX is not always defined (not if STRICT_ANSI, for example). - But we can find it either under the correct ANSI name, or under GNU - C's internal name. */ - -#define FFI_64_BIT_MAX 9223372036854775807 - -#ifdef LONG_LONG_MAX -# define FFI_LONG_LONG_MAX LONG_LONG_MAX -#else -# ifdef LLONG_MAX -# define FFI_LONG_LONG_MAX LLONG_MAX -# ifdef _AIX52 /* or newer has C99 LLONG_MAX */ -# undef FFI_64_BIT_MAX -# define FFI_64_BIT_MAX 9223372036854775807LL -# endif /* _AIX52 or newer */ -# else -# ifdef __GNUC__ -# define FFI_LONG_LONG_MAX __LONG_LONG_MAX__ -# endif -# ifdef _AIX /* AIX 5.1 and earlier have LONGLONG_MAX */ -# ifndef __PPC64__ -# if defined (__IBMC__) || defined (__IBMCPP__) -# define FFI_LONG_LONG_MAX LONGLONG_MAX -# endif -# endif /* __PPC64__ */ -# undef FFI_64_BIT_MAX -# define FFI_64_BIT_MAX 9223372036854775807LL -# endif -# endif -#endif - -/* The closure code assumes that this works on pointers, i.e. a size_t - can hold a pointer. */ - -typedef struct _ffi_type -{ - size_t size; - unsigned short alignment; - unsigned short type; - struct _ffi_type **elements; -} ffi_type; - -#ifndef LIBFFI_HIDE_BASIC_TYPES -#if SCHAR_MAX == 127 -# define ffi_type_uchar ffi_type_uint8 -# define ffi_type_schar ffi_type_sint8 -#else - #error "char size not supported" -#endif - -#if SHRT_MAX == 32767 -# define ffi_type_ushort ffi_type_uint16 -# define ffi_type_sshort ffi_type_sint16 -#elif SHRT_MAX == 2147483647 -# define ffi_type_ushort ffi_type_uint32 -# define ffi_type_sshort ffi_type_sint32 -#else - #error "short size not supported" -#endif - -#if INT_MAX == 32767 -# define ffi_type_uint ffi_type_uint16 -# define ffi_type_sint ffi_type_sint16 -#elif INT_MAX == 2147483647 -# define ffi_type_uint ffi_type_uint32 -# define ffi_type_sint ffi_type_sint32 -#elif INT_MAX == 9223372036854775807 -# define ffi_type_uint ffi_type_uint64 -# define ffi_type_sint ffi_type_sint64 -#else - #error "int size not supported" -#endif - -#if LONG_MAX == 2147483647 -# if FFI_LONG_LONG_MAX != FFI_64_BIT_MAX - #error "no 64-bit data type supported" -# endif -#elif LONG_MAX != FFI_64_BIT_MAX - #error "long size not supported" -#endif - -#if LONG_MAX == 2147483647 -# define ffi_type_ulong ffi_type_uint32 -# define ffi_type_slong ffi_type_sint32 -#elif LONG_MAX == FFI_64_BIT_MAX -# define ffi_type_ulong ffi_type_uint64 -# define ffi_type_slong ffi_type_sint64 -#else - #error "long size not supported" -#endif - -/* These are defined in types.c. */ -FFI_EXTERN ffi_type ffi_type_void; -FFI_EXTERN ffi_type ffi_type_uint8; -FFI_EXTERN ffi_type ffi_type_sint8; -FFI_EXTERN ffi_type ffi_type_uint16; -FFI_EXTERN ffi_type ffi_type_sint16; -FFI_EXTERN ffi_type ffi_type_uint32; -FFI_EXTERN ffi_type ffi_type_sint32; -FFI_EXTERN ffi_type ffi_type_uint64; -FFI_EXTERN ffi_type ffi_type_sint64; -FFI_EXTERN ffi_type ffi_type_float; -FFI_EXTERN ffi_type ffi_type_double; -FFI_EXTERN ffi_type ffi_type_pointer; - -#if 0 -FFI_EXTERN ffi_type ffi_type_longdouble; -#else -#define ffi_type_longdouble ffi_type_double -#endif - -#ifdef FFI_TARGET_HAS_COMPLEX_TYPE -FFI_EXTERN ffi_type ffi_type_complex_float; -FFI_EXTERN ffi_type ffi_type_complex_double; -#if 0 -FFI_EXTERN ffi_type ffi_type_complex_longdouble; -#else -#define ffi_type_complex_longdouble ffi_type_complex_double -#endif -#endif -#endif /* LIBFFI_HIDE_BASIC_TYPES */ - -typedef enum { - FFI_OK = 0, - FFI_BAD_TYPEDEF, - FFI_BAD_ABI -} ffi_status; - -typedef struct { - ffi_abi abi; - unsigned nargs; - ffi_type **arg_types; - ffi_type *rtype; - unsigned bytes; - unsigned flags; - unsigned isVariadic; -#ifdef FFI_EXTRA_CIF_FIELDS - FFI_EXTRA_CIF_FIELDS; -#endif -} ffi_cif; - -/* ---- Definitions for the raw API -------------------------------------- */ - -#ifndef FFI_SIZEOF_ARG -# if LONG_MAX == 2147483647 -# define FFI_SIZEOF_ARG 4 -# elif LONG_MAX == FFI_64_BIT_MAX -# define FFI_SIZEOF_ARG 8 -# endif -#endif - -#ifndef FFI_SIZEOF_JAVA_RAW -# define FFI_SIZEOF_JAVA_RAW FFI_SIZEOF_ARG -#endif - -typedef union { - ffi_sarg sint; - ffi_arg uint; - float flt; - char data[FFI_SIZEOF_ARG]; - void* ptr; -} ffi_raw; - -#if FFI_SIZEOF_JAVA_RAW == 4 && FFI_SIZEOF_ARG == 8 -/* This is a special case for mips64/n32 ABI (and perhaps others) where - sizeof(void *) is 4 and FFI_SIZEOF_ARG is 8. */ -typedef union { - signed int sint; - unsigned int uint; - float flt; - char data[FFI_SIZEOF_JAVA_RAW]; - void* ptr; -} ffi_java_raw; -#else -typedef ffi_raw ffi_java_raw; -#endif - -FFI_EXTERN -void ffi_raw_call (ffi_cif *cif, - void (*fn)(void), - void *rvalue, - ffi_raw *avalue); - -FFI_EXTERN void ffi_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_raw *raw); -FFI_EXTERN void ffi_raw_to_ptrarray (ffi_cif *cif, ffi_raw *raw, void **args); -FFI_EXTERN size_t ffi_raw_size (ffi_cif *cif); - -/* This is analogous to the raw API, except it uses Java parameter - packing, even on 64-bit machines. I.e. on 64-bit machines longs - and doubles are followed by an empty 64-bit word. */ -FFI_EXTERN -void ffi_java_raw_call (ffi_cif *cif, - void (*fn)(void), - void *rvalue, - ffi_java_raw *avalue); - -FFI_EXTERN void ffi_java_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_java_raw *raw); -FFI_EXTERN void ffi_java_raw_to_ptrarray (ffi_cif *cif, ffi_java_raw *raw, void **args); -FFI_EXTERN size_t ffi_java_raw_size (ffi_cif *cif); - -/* ---- Definitions for closures ----------------------------------------- */ - -#if FFI_CLOSURES - -#ifdef _MSC_VER -__declspec(align(8)) -#endif -typedef struct { -#if 0 - void *trampoline_table; - void *trampoline_table_entry; -#else - char tramp[FFI_TRAMPOLINE_SIZE]; -#endif - ffi_cif *cif; - void (*fun)(ffi_cif*,void*,void**,void*); - void *user_data; -} ffi_closure -#ifdef __GNUC__ - __attribute__((aligned (8))) -#endif - ; - -#ifndef __GNUC__ -# ifdef __sgi -# pragma pack 0 -# endif -#endif - -FFI_EXTERN void *ffi_closure_alloc (size_t size, void **code); -FFI_EXTERN void ffi_closure_free (void *); - -FFI_EXTERN ffi_status -ffi_prep_closure (ffi_closure*, - ffi_cif *, - void (*fun)(ffi_cif*,void*,void**,void*), - void *user_data) -#if defined(__GNUC__) && (((__GNUC__ * 100) + __GNUC_MINOR__) >= 405) - __attribute__((deprecated ("use ffi_prep_closure_loc instead"))) -#elif defined(__GNUC__) && __GNUC__ >= 3 - __attribute__((deprecated)) -#endif - ; - -FFI_EXTERN ffi_status -ffi_prep_closure_loc (ffi_closure*, - ffi_cif *, - void (*fun)(ffi_cif*,void*,void**,void*), - void *user_data, - void*codeloc); - -#ifdef __sgi -# pragma pack 8 -#endif -typedef struct { -#if 0 - void *trampoline_table; - void *trampoline_table_entry; -#else - char tramp[FFI_TRAMPOLINE_SIZE]; -#endif - ffi_cif *cif; - -#if !FFI_NATIVE_RAW_API - - /* If this is enabled, then a raw closure has the same layout - as a regular closure. We use this to install an intermediate - handler to do the transaltion, void** -> ffi_raw*. */ - - void (*translate_args)(ffi_cif*,void*,void**,void*); - void *this_closure; - -#endif - - void (*fun)(ffi_cif*,void*,ffi_raw*,void*); - void *user_data; - -} ffi_raw_closure; - -typedef struct { -#if 0 - void *trampoline_table; - void *trampoline_table_entry; -#else - char tramp[FFI_TRAMPOLINE_SIZE]; -#endif - - ffi_cif *cif; - -#if !FFI_NATIVE_RAW_API - - /* If this is enabled, then a raw closure has the same layout - as a regular closure. We use this to install an intermediate - handler to do the translation, void** -> ffi_raw*. */ - - void (*translate_args)(ffi_cif*,void*,void**,void*); - void *this_closure; - -#endif - - void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*); - void *user_data; - -} ffi_java_raw_closure; - -FFI_EXTERN ffi_status -ffi_prep_raw_closure (ffi_raw_closure*, - ffi_cif *cif, - void (*fun)(ffi_cif*,void*,ffi_raw*,void*), - void *user_data); - -FFI_EXTERN ffi_status -ffi_prep_raw_closure_loc (ffi_raw_closure*, - ffi_cif *cif, - void (*fun)(ffi_cif*,void*,ffi_raw*,void*), - void *user_data, - void *codeloc); - -FFI_EXTERN ffi_status -ffi_prep_java_raw_closure (ffi_java_raw_closure*, - ffi_cif *cif, - void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), - void *user_data); - -FFI_EXTERN ffi_status -ffi_prep_java_raw_closure_loc (ffi_java_raw_closure*, - ffi_cif *cif, - void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), - void *user_data, - void *codeloc); - -#endif /* FFI_CLOSURES */ - -#if FFI_GO_CLOSURES - -typedef struct { - void *tramp; - ffi_cif *cif; - void (*fun)(ffi_cif*,void*,void**,void*); -} ffi_go_closure; - -FFI_EXTERN -ffi_status ffi_prep_go_closure (ffi_go_closure*, ffi_cif *, - void (*fun)(ffi_cif*,void*,void**,void*)); - -FFI_EXTERN -void ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue, - void **avalue, void *closure); - -#endif /* FFI_GO_CLOSURES */ - -/* ---- Public interface definition -------------------------------------- */ - -FFI_EXTERN -ffi_status ffi_prep_cif(ffi_cif *cif, - ffi_abi abi, - unsigned int nargs, - ffi_type *rtype, - ffi_type **atypes); - -FFI_EXTERN -ffi_status ffi_prep_cif_var(ffi_cif *cif, - ffi_abi abi, - unsigned int nfixedargs, - unsigned int ntotalargs, - ffi_type *rtype, - ffi_type **atypes); - -FFI_EXTERN -void ffi_call(ffi_cif *cif, - void (*fn)(void), - void *rvalue, - void **avalue); - -FFI_EXTERN -ffi_status ffi_get_struct_offsets (ffi_abi abi, ffi_type *struct_type, - size_t *offsets); - -/* Useful for eliminating compiler warnings. */ -#define FFI_FN(f) ((void (*)(void))f) - -/* ---- Definitions shared with assembly code ---------------------------- */ - -#endif /* !LIBFFI_ASM */ - -/* If these change, update src/mips/ffitarget.h. */ -#define FFI_TYPE_VOID 0 -#define FFI_TYPE_INT 1 -#define FFI_TYPE_FLOAT 2 -#define FFI_TYPE_DOUBLE 3 -#if 0 -#define FFI_TYPE_LONGDOUBLE 4 -#else -#define FFI_TYPE_LONGDOUBLE FFI_TYPE_DOUBLE -#endif -#define FFI_TYPE_UINT8 5 -#define FFI_TYPE_SINT8 6 -#define FFI_TYPE_UINT16 7 -#define FFI_TYPE_SINT16 8 -#define FFI_TYPE_UINT32 9 -#define FFI_TYPE_SINT32 10 -#define FFI_TYPE_UINT64 11 -#define FFI_TYPE_SINT64 12 -#define FFI_TYPE_STRUCT 13 -#define FFI_TYPE_POINTER 14 -#define FFI_TYPE_COMPLEX 15 - -/* This should always refer to the last type code (for sanity checks). */ -#define FFI_TYPE_LAST FFI_TYPE_COMPLEX - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/include/ffi-x86_64.h b/include/ffi-x86_64.h deleted file mode 100644 index 68e355d..0000000 --- a/include/ffi-x86_64.h +++ /dev/null @@ -1,500 +0,0 @@ -/* -----------------------------------------------------------------*-C-*- - libffi 3.2.9999 - Copyright (c) 2011, 2014 Anthony Green - - Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc. - - 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 AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - ----------------------------------------------------------------------- */ - -/* ------------------------------------------------------------------- - Most of the API is documented in doc/libffi.texi. - - The raw API is designed to bypass some of the argument packing and - unpacking on architectures for which it can be avoided. Routines - are provided to emulate the raw API if the underlying platform - doesn't allow faster implementation. - - More details on the raw API can be found in: - - http://gcc.gnu.org/ml/java/1999-q3/msg00138.html - - and - - http://gcc.gnu.org/ml/java/1999-q3/msg00174.html - -------------------------------------------------------------------- */ - -#ifndef LIBFFI_H -#define LIBFFI_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* Specify which architecture libffi is configured for. */ -#ifndef X86_64 -#define X86_64 -#endif - -/* ---- System configuration information --------------------------------- */ - -#include - -/* Need minimal decorations for DLLs to works on Windows. GCC has - autoimport and autoexport. Rely on Libtool to help MSVC export - from a DLL, but always declare data to be imported for MSVC - clients. This costs an extra indirection for MSVC clients using - the static version of the library, but don't worry about that. - Besides, as a workaround, they can define FFI_BUILDING if they - *know* they are going to link with the static library. */ -#if defined _MSC_VER && !defined FFI_STATIC_BUILD -#ifdef FFI_BUILDING -#define FFI_EXTERN __declspec(dllexport) -#else -#define FFI_EXTERN __declspec(dllimport) -#endif -#else -#define FFI_EXTERN extern -#endif - -#ifndef LIBFFI_ASM - -#if defined(_MSC_VER) && !defined(__clang__) -#define __attribute__(X) -#endif - -#include -#include - -/* LONG_LONG_MAX is not always defined (not if STRICT_ANSI, for example). - But we can find it either under the correct ANSI name, or under GNU - C's internal name. */ - -#define FFI_64_BIT_MAX 9223372036854775807 - -#ifdef LONG_LONG_MAX -# define FFI_LONG_LONG_MAX LONG_LONG_MAX -#else -# ifdef LLONG_MAX -# define FFI_LONG_LONG_MAX LLONG_MAX -# ifdef _AIX52 /* or newer has C99 LLONG_MAX */ -# undef FFI_64_BIT_MAX -# define FFI_64_BIT_MAX 9223372036854775807LL -# endif /* _AIX52 or newer */ -# else -# ifdef __GNUC__ -# define FFI_LONG_LONG_MAX __LONG_LONG_MAX__ -# endif -# ifdef _AIX /* AIX 5.1 and earlier have LONGLONG_MAX */ -# ifndef __PPC64__ -# if defined (__IBMC__) || defined (__IBMCPP__) -# define FFI_LONG_LONG_MAX LONGLONG_MAX -# endif -# endif /* __PPC64__ */ -# undef FFI_64_BIT_MAX -# define FFI_64_BIT_MAX 9223372036854775807LL -# endif -# endif -#endif - -/* The closure code assumes that this works on pointers, i.e. a size_t - can hold a pointer. */ - -typedef struct _ffi_type -{ - size_t size; - unsigned short alignment; - unsigned short type; - struct _ffi_type **elements; -} ffi_type; - -#ifndef LIBFFI_HIDE_BASIC_TYPES -#if SCHAR_MAX == 127 -# define ffi_type_uchar ffi_type_uint8 -# define ffi_type_schar ffi_type_sint8 -#else - #error "char size not supported" -#endif - -#if SHRT_MAX == 32767 -# define ffi_type_ushort ffi_type_uint16 -# define ffi_type_sshort ffi_type_sint16 -#elif SHRT_MAX == 2147483647 -# define ffi_type_ushort ffi_type_uint32 -# define ffi_type_sshort ffi_type_sint32 -#else - #error "short size not supported" -#endif - -#if INT_MAX == 32767 -# define ffi_type_uint ffi_type_uint16 -# define ffi_type_sint ffi_type_sint16 -#elif INT_MAX == 2147483647 -# define ffi_type_uint ffi_type_uint32 -# define ffi_type_sint ffi_type_sint32 -#elif INT_MAX == 9223372036854775807 -# define ffi_type_uint ffi_type_uint64 -# define ffi_type_sint ffi_type_sint64 -#else - #error "int size not supported" -#endif - -#if LONG_MAX == 2147483647 -# if FFI_LONG_LONG_MAX != FFI_64_BIT_MAX - #error "no 64-bit data type supported" -# endif -#elif LONG_MAX != FFI_64_BIT_MAX - #error "long size not supported" -#endif - -#if LONG_MAX == 2147483647 -# define ffi_type_ulong ffi_type_uint32 -# define ffi_type_slong ffi_type_sint32 -#elif LONG_MAX == FFI_64_BIT_MAX -# define ffi_type_ulong ffi_type_uint64 -# define ffi_type_slong ffi_type_sint64 -#else - #error "long size not supported" -#endif - -/* These are defined in types.c. */ -FFI_EXTERN ffi_type ffi_type_void; -FFI_EXTERN ffi_type ffi_type_uint8; -FFI_EXTERN ffi_type ffi_type_sint8; -FFI_EXTERN ffi_type ffi_type_uint16; -FFI_EXTERN ffi_type ffi_type_sint16; -FFI_EXTERN ffi_type ffi_type_uint32; -FFI_EXTERN ffi_type ffi_type_sint32; -FFI_EXTERN ffi_type ffi_type_uint64; -FFI_EXTERN ffi_type ffi_type_sint64; -FFI_EXTERN ffi_type ffi_type_float; -FFI_EXTERN ffi_type ffi_type_double; -FFI_EXTERN ffi_type ffi_type_pointer; - -#if 1 -FFI_EXTERN ffi_type ffi_type_longdouble; -#else -#define ffi_type_longdouble ffi_type_double -#endif - -#ifdef FFI_TARGET_HAS_COMPLEX_TYPE -FFI_EXTERN ffi_type ffi_type_complex_float; -FFI_EXTERN ffi_type ffi_type_complex_double; -#if 1 -FFI_EXTERN ffi_type ffi_type_complex_longdouble; -#else -#define ffi_type_complex_longdouble ffi_type_complex_double -#endif -#endif -#endif /* LIBFFI_HIDE_BASIC_TYPES */ - -typedef enum { - FFI_OK = 0, - FFI_BAD_TYPEDEF, - FFI_BAD_ABI -} ffi_status; - -typedef struct { - ffi_abi abi; - unsigned nargs; - ffi_type **arg_types; - ffi_type *rtype; - unsigned bytes; - unsigned flags; - unsigned isVariadic; -#ifdef FFI_EXTRA_CIF_FIELDS - FFI_EXTRA_CIF_FIELDS; -#endif -} ffi_cif; - -/* ---- Definitions for the raw API -------------------------------------- */ - -#ifndef FFI_SIZEOF_ARG -# if LONG_MAX == 2147483647 -# define FFI_SIZEOF_ARG 4 -# elif LONG_MAX == FFI_64_BIT_MAX -# define FFI_SIZEOF_ARG 8 -# endif -#endif - -#ifndef FFI_SIZEOF_JAVA_RAW -# define FFI_SIZEOF_JAVA_RAW FFI_SIZEOF_ARG -#endif - -typedef union { - ffi_sarg sint; - ffi_arg uint; - float flt; - char data[FFI_SIZEOF_ARG]; - void* ptr; -} ffi_raw; - -#if FFI_SIZEOF_JAVA_RAW == 4 && FFI_SIZEOF_ARG == 8 -/* This is a special case for mips64/n32 ABI (and perhaps others) where - sizeof(void *) is 4 and FFI_SIZEOF_ARG is 8. */ -typedef union { - signed int sint; - unsigned int uint; - float flt; - char data[FFI_SIZEOF_JAVA_RAW]; - void* ptr; -} ffi_java_raw; -#else -typedef ffi_raw ffi_java_raw; -#endif - -FFI_EXTERN -void ffi_raw_call (ffi_cif *cif, - void (*fn)(void), - void *rvalue, - ffi_raw *avalue); - -FFI_EXTERN void ffi_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_raw *raw); -FFI_EXTERN void ffi_raw_to_ptrarray (ffi_cif *cif, ffi_raw *raw, void **args); -FFI_EXTERN size_t ffi_raw_size (ffi_cif *cif); - -/* This is analogous to the raw API, except it uses Java parameter - packing, even on 64-bit machines. I.e. on 64-bit machines longs - and doubles are followed by an empty 64-bit word. */ -FFI_EXTERN -void ffi_java_raw_call (ffi_cif *cif, - void (*fn)(void), - void *rvalue, - ffi_java_raw *avalue); - -FFI_EXTERN void ffi_java_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_java_raw *raw); -FFI_EXTERN void ffi_java_raw_to_ptrarray (ffi_cif *cif, ffi_java_raw *raw, void **args); -FFI_EXTERN size_t ffi_java_raw_size (ffi_cif *cif); - -/* ---- Definitions for closures ----------------------------------------- */ - -#if FFI_CLOSURES - -#ifdef _MSC_VER -__declspec(align(8)) -#endif -typedef struct { -#if 0 - void *trampoline_table; - void *trampoline_table_entry; -#else - char tramp[FFI_TRAMPOLINE_SIZE]; -#endif - ffi_cif *cif; - void (*fun)(ffi_cif*,void*,void**,void*); - void *user_data; -} ffi_closure -#ifdef __GNUC__ - __attribute__((aligned (8))) -#endif - ; - -#ifndef __GNUC__ -# ifdef __sgi -# pragma pack 0 -# endif -#endif - -FFI_EXTERN void *ffi_closure_alloc (size_t size, void **code); -FFI_EXTERN void ffi_closure_free (void *); - -FFI_EXTERN ffi_status -ffi_prep_closure (ffi_closure*, - ffi_cif *, - void (*fun)(ffi_cif*,void*,void**,void*), - void *user_data) -#if defined(__GNUC__) && (((__GNUC__ * 100) + __GNUC_MINOR__) >= 405) - __attribute__((deprecated ("use ffi_prep_closure_loc instead"))) -#elif defined(__GNUC__) && __GNUC__ >= 3 - __attribute__((deprecated)) -#endif - ; - -FFI_EXTERN ffi_status -ffi_prep_closure_loc (ffi_closure*, - ffi_cif *, - void (*fun)(ffi_cif*,void*,void**,void*), - void *user_data, - void*codeloc); - -#ifdef __sgi -# pragma pack 8 -#endif -typedef struct { -#if 0 - void *trampoline_table; - void *trampoline_table_entry; -#else - char tramp[FFI_TRAMPOLINE_SIZE]; -#endif - ffi_cif *cif; - -#if !FFI_NATIVE_RAW_API - - /* If this is enabled, then a raw closure has the same layout - as a regular closure. We use this to install an intermediate - handler to do the transaltion, void** -> ffi_raw*. */ - - void (*translate_args)(ffi_cif*,void*,void**,void*); - void *this_closure; - -#endif - - void (*fun)(ffi_cif*,void*,ffi_raw*,void*); - void *user_data; - -} ffi_raw_closure; - -typedef struct { -#if 0 - void *trampoline_table; - void *trampoline_table_entry; -#else - char tramp[FFI_TRAMPOLINE_SIZE]; -#endif - - ffi_cif *cif; - -#if !FFI_NATIVE_RAW_API - - /* If this is enabled, then a raw closure has the same layout - as a regular closure. We use this to install an intermediate - handler to do the translation, void** -> ffi_raw*. */ - - void (*translate_args)(ffi_cif*,void*,void**,void*); - void *this_closure; - -#endif - - void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*); - void *user_data; - -} ffi_java_raw_closure; - -FFI_EXTERN ffi_status -ffi_prep_raw_closure (ffi_raw_closure*, - ffi_cif *cif, - void (*fun)(ffi_cif*,void*,ffi_raw*,void*), - void *user_data); - -FFI_EXTERN ffi_status -ffi_prep_raw_closure_loc (ffi_raw_closure*, - ffi_cif *cif, - void (*fun)(ffi_cif*,void*,ffi_raw*,void*), - void *user_data, - void *codeloc); - -FFI_EXTERN ffi_status -ffi_prep_java_raw_closure (ffi_java_raw_closure*, - ffi_cif *cif, - void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), - void *user_data); - -FFI_EXTERN ffi_status -ffi_prep_java_raw_closure_loc (ffi_java_raw_closure*, - ffi_cif *cif, - void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), - void *user_data, - void *codeloc); - -#endif /* FFI_CLOSURES */ - -#if FFI_GO_CLOSURES - -typedef struct { - void *tramp; - ffi_cif *cif; - void (*fun)(ffi_cif*,void*,void**,void*); -} ffi_go_closure; - -FFI_EXTERN -ffi_status ffi_prep_go_closure (ffi_go_closure*, ffi_cif *, - void (*fun)(ffi_cif*,void*,void**,void*)); - -FFI_EXTERN -void ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue, - void **avalue, void *closure); - -#endif /* FFI_GO_CLOSURES */ - -/* ---- Public interface definition -------------------------------------- */ - -FFI_EXTERN -ffi_status ffi_prep_cif(ffi_cif *cif, - ffi_abi abi, - unsigned int nargs, - ffi_type *rtype, - ffi_type **atypes); - -FFI_EXTERN -ffi_status ffi_prep_cif_var(ffi_cif *cif, - ffi_abi abi, - unsigned int nfixedargs, - unsigned int ntotalargs, - ffi_type *rtype, - ffi_type **atypes); - -FFI_EXTERN -void ffi_call(ffi_cif *cif, - void (*fn)(void), - void *rvalue, - void **avalue); - -FFI_EXTERN -ffi_status ffi_get_struct_offsets (ffi_abi abi, ffi_type *struct_type, - size_t *offsets); - -/* Useful for eliminating compiler warnings. */ -#define FFI_FN(f) ((void (*)(void))f) - -/* ---- Definitions shared with assembly code ---------------------------- */ - -#endif /* !LIBFFI_ASM */ - -/* If these change, update src/mips/ffitarget.h. */ -#define FFI_TYPE_VOID 0 -#define FFI_TYPE_INT 1 -#define FFI_TYPE_FLOAT 2 -#define FFI_TYPE_DOUBLE 3 -#if 1 -#define FFI_TYPE_LONGDOUBLE 4 -#else -#define FFI_TYPE_LONGDOUBLE FFI_TYPE_DOUBLE -#endif -#define FFI_TYPE_UINT8 5 -#define FFI_TYPE_SINT8 6 -#define FFI_TYPE_UINT16 7 -#define FFI_TYPE_SINT16 8 -#define FFI_TYPE_UINT32 9 -#define FFI_TYPE_SINT32 10 -#define FFI_TYPE_UINT64 11 -#define FFI_TYPE_SINT64 12 -#define FFI_TYPE_STRUCT 13 -#define FFI_TYPE_POINTER 14 -#define FFI_TYPE_COMPLEX 15 - -/* This should always refer to the last type code (for sanity checks). */ -#define FFI_TYPE_LAST FFI_TYPE_COMPLEX - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/include/ffi.h b/include/ffi.h deleted file mode 100644 index e32cd73..0000000 --- a/include/ffi.h +++ /dev/null @@ -1,21 +0,0 @@ -/* Include the correct ffi.h automatically. This helps us create prefixes - * with multi-lib Linux and OSX/iOS universal builds. To avoid listing all - * possible architectures here, we try the configured target arch first and then - * include the most common multilib/universal setups in the #elif ladder */ -#ifdef __arm__ -#include "ffi-arm.h" -#elif defined(__i386__) || defined(_M_IX86) -#include "ffi-x86.h" -#elif defined(__x86_64__) || defined(_M_X64) -#include "ffi-x86_64.h" -#elif defined(__arm__) || defined(_M_ARM) -#include "ffi-arm.h" -#elif defined(__aarch64__) || defined(_M_ARM64) -#include "ffi-aarch64.h" -#elif defined(__powerpc__) || defined(_M_PPC) -#include "ffi-powerpc.h" -#elif defined(__powerpc64__) -#include "ffi-powerpc64.h" -#else -#error "Unsupported Architecture" -#endif diff --git a/include/ffi.h.in b/include/ffi.h.in deleted file mode 100644 index 71cc05c..0000000 --- a/include/ffi.h.in +++ /dev/null @@ -1,515 +0,0 @@ -/* -----------------------------------------------------------------*-C-*- - libffi @VERSION@ - Copyright (c) 2011, 2014, 2019 Anthony Green - - Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc. - - 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 AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - ----------------------------------------------------------------------- */ - -/* ------------------------------------------------------------------- - Most of the API is documented in doc/libffi.texi. - - The raw API is designed to bypass some of the argument packing and - unpacking on architectures for which it can be avoided. Routines - are provided to emulate the raw API if the underlying platform - doesn't allow faster implementation. - - More details on the raw API can be found in: - - http://gcc.gnu.org/ml/java/1999-q3/msg00138.html - - and - - http://gcc.gnu.org/ml/java/1999-q3/msg00174.html - -------------------------------------------------------------------- */ - -#ifndef LIBFFI_H -#define LIBFFI_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* Specify which architecture libffi is configured for. */ -#ifndef @TARGET@ -#define @TARGET@ -#endif - -/* ---- System configuration information --------------------------------- */ - -#include - -#ifndef LIBFFI_ASM - -#if defined(_MSC_VER) && !defined(__clang__) -#define __attribute__(X) -#endif - -#include -#include - -/* LONG_LONG_MAX is not always defined (not if STRICT_ANSI, for example). - But we can find it either under the correct ANSI name, or under GNU - C's internal name. */ - -#define FFI_64_BIT_MAX 9223372036854775807 - -#ifdef LONG_LONG_MAX -# define FFI_LONG_LONG_MAX LONG_LONG_MAX -#else -# ifdef LLONG_MAX -# define FFI_LONG_LONG_MAX LLONG_MAX -# ifdef _AIX52 /* or newer has C99 LLONG_MAX */ -# undef FFI_64_BIT_MAX -# define FFI_64_BIT_MAX 9223372036854775807LL -# endif /* _AIX52 or newer */ -# else -# ifdef __GNUC__ -# define FFI_LONG_LONG_MAX __LONG_LONG_MAX__ -# endif -# ifdef _AIX /* AIX 5.1 and earlier have LONGLONG_MAX */ -# ifndef __PPC64__ -# if defined (__IBMC__) || defined (__IBMCPP__) -# define FFI_LONG_LONG_MAX LONGLONG_MAX -# endif -# endif /* __PPC64__ */ -# undef FFI_64_BIT_MAX -# define FFI_64_BIT_MAX 9223372036854775807LL -# endif -# endif -#endif - -/* The closure code assumes that this works on pointers, i.e. a size_t - can hold a pointer. */ - -typedef struct _ffi_type -{ - size_t size; - unsigned short alignment; - unsigned short type; - struct _ffi_type **elements; -} ffi_type; - -/* Need minimal decorations for DLLs to work on Windows. GCC has - autoimport and autoexport. Always mark externally visible symbols - as dllimport for MSVC clients, even if it means an extra indirection - when using the static version of the library. - Besides, as a workaround, they can define FFI_BUILDING if they - *know* they are going to link with the static library. */ -#if defined _MSC_VER -# if defined FFI_BUILDING_DLL /* Building libffi.DLL with msvcc.sh */ -# define FFI_API __declspec(dllexport) -# elif !defined FFI_BUILDING /* Importing libffi.DLL */ -# define FFI_API __declspec(dllimport) -# else /* Building/linking static library */ -# define FFI_API -# endif -#else -# define FFI_API -#endif - -/* The externally visible type declarations also need the MSVC DLL - decorations, or they will not be exported from the object file. */ -#if defined LIBFFI_HIDE_BASIC_TYPES -# define FFI_EXTERN FFI_API -#else -# define FFI_EXTERN extern FFI_API -#endif - -#ifndef LIBFFI_HIDE_BASIC_TYPES -#if SCHAR_MAX == 127 -# define ffi_type_uchar ffi_type_uint8 -# define ffi_type_schar ffi_type_sint8 -#else - #error "char size not supported" -#endif - -#if SHRT_MAX == 32767 -# define ffi_type_ushort ffi_type_uint16 -# define ffi_type_sshort ffi_type_sint16 -#elif SHRT_MAX == 2147483647 -# define ffi_type_ushort ffi_type_uint32 -# define ffi_type_sshort ffi_type_sint32 -#else - #error "short size not supported" -#endif - -#if INT_MAX == 32767 -# define ffi_type_uint ffi_type_uint16 -# define ffi_type_sint ffi_type_sint16 -#elif INT_MAX == 2147483647 -# define ffi_type_uint ffi_type_uint32 -# define ffi_type_sint ffi_type_sint32 -#elif INT_MAX == 9223372036854775807 -# define ffi_type_uint ffi_type_uint64 -# define ffi_type_sint ffi_type_sint64 -#else - #error "int size not supported" -#endif - -#if LONG_MAX == 2147483647 -# if FFI_LONG_LONG_MAX != FFI_64_BIT_MAX - #error "no 64-bit data type supported" -# endif -#elif LONG_MAX != FFI_64_BIT_MAX - #error "long size not supported" -#endif - -#if LONG_MAX == 2147483647 -# define ffi_type_ulong ffi_type_uint32 -# define ffi_type_slong ffi_type_sint32 -#elif LONG_MAX == FFI_64_BIT_MAX -# define ffi_type_ulong ffi_type_uint64 -# define ffi_type_slong ffi_type_sint64 -#else - #error "long size not supported" -#endif - -/* These are defined in types.c. */ -FFI_EXTERN ffi_type ffi_type_void; -FFI_EXTERN ffi_type ffi_type_uint8; -FFI_EXTERN ffi_type ffi_type_sint8; -FFI_EXTERN ffi_type ffi_type_uint16; -FFI_EXTERN ffi_type ffi_type_sint16; -FFI_EXTERN ffi_type ffi_type_uint32; -FFI_EXTERN ffi_type ffi_type_sint32; -FFI_EXTERN ffi_type ffi_type_uint64; -FFI_EXTERN ffi_type ffi_type_sint64; -FFI_EXTERN ffi_type ffi_type_float; -FFI_EXTERN ffi_type ffi_type_double; -FFI_EXTERN ffi_type ffi_type_pointer; - -#if @HAVE_LONG_DOUBLE@ -FFI_EXTERN ffi_type ffi_type_longdouble; -#else -#define ffi_type_longdouble ffi_type_double -#endif - -#ifdef FFI_TARGET_HAS_COMPLEX_TYPE -FFI_EXTERN ffi_type ffi_type_complex_float; -FFI_EXTERN ffi_type ffi_type_complex_double; -#if @HAVE_LONG_DOUBLE@ -FFI_EXTERN ffi_type ffi_type_complex_longdouble; -#else -#define ffi_type_complex_longdouble ffi_type_complex_double -#endif -#endif -#endif /* LIBFFI_HIDE_BASIC_TYPES */ - -typedef enum { - FFI_OK = 0, - FFI_BAD_TYPEDEF, - FFI_BAD_ABI -} ffi_status; - -typedef struct { - ffi_abi abi; - unsigned nargs; - ffi_type **arg_types; - ffi_type *rtype; - unsigned bytes; - unsigned flags; -#ifdef FFI_EXTRA_CIF_FIELDS - FFI_EXTRA_CIF_FIELDS; -#endif -} ffi_cif; - -/* ---- Definitions for the raw API -------------------------------------- */ - -#ifndef FFI_SIZEOF_ARG -# if LONG_MAX == 2147483647 -# define FFI_SIZEOF_ARG 4 -# elif LONG_MAX == FFI_64_BIT_MAX -# define FFI_SIZEOF_ARG 8 -# endif -#endif - -#ifndef FFI_SIZEOF_JAVA_RAW -# define FFI_SIZEOF_JAVA_RAW FFI_SIZEOF_ARG -#endif - -typedef union { - ffi_sarg sint; - ffi_arg uint; - float flt; - char data[FFI_SIZEOF_ARG]; - void* ptr; -} ffi_raw; - -#if FFI_SIZEOF_JAVA_RAW == 4 && FFI_SIZEOF_ARG == 8 -/* This is a special case for mips64/n32 ABI (and perhaps others) where - sizeof(void *) is 4 and FFI_SIZEOF_ARG is 8. */ -typedef union { - signed int sint; - unsigned int uint; - float flt; - char data[FFI_SIZEOF_JAVA_RAW]; - void* ptr; -} ffi_java_raw; -#else -typedef ffi_raw ffi_java_raw; -#endif - - -FFI_API -void ffi_raw_call (ffi_cif *cif, - void (*fn)(void), - void *rvalue, - ffi_raw *avalue); - -FFI_API void ffi_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_raw *raw); -FFI_API void ffi_raw_to_ptrarray (ffi_cif *cif, ffi_raw *raw, void **args); -FFI_API size_t ffi_raw_size (ffi_cif *cif); - -/* This is analogous to the raw API, except it uses Java parameter - packing, even on 64-bit machines. I.e. on 64-bit machines longs - and doubles are followed by an empty 64-bit word. */ - -#if !FFI_NATIVE_RAW_API -FFI_API -void ffi_java_raw_call (ffi_cif *cif, - void (*fn)(void), - void *rvalue, - ffi_java_raw *avalue) __attribute__((deprecated)); -#endif - -FFI_API -void ffi_java_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_java_raw *raw) __attribute__((deprecated)); -FFI_API -void ffi_java_raw_to_ptrarray (ffi_cif *cif, ffi_java_raw *raw, void **args) __attribute__((deprecated)); -FFI_API -size_t ffi_java_raw_size (ffi_cif *cif) __attribute__((deprecated)); - -/* ---- Definitions for closures ----------------------------------------- */ - -#if FFI_CLOSURES - -#ifdef _MSC_VER -__declspec(align(8)) -#endif -typedef struct { -#if @FFI_EXEC_TRAMPOLINE_TABLE@ - void *trampoline_table; - void *trampoline_table_entry; -#else - char tramp[FFI_TRAMPOLINE_SIZE]; -#endif - ffi_cif *cif; - void (*fun)(ffi_cif*,void*,void**,void*); - void *user_data; -} ffi_closure -#ifdef __GNUC__ - __attribute__((aligned (8))) -#endif - ; - -#ifndef __GNUC__ -# ifdef __sgi -# pragma pack 0 -# endif -#endif - -FFI_API void *ffi_closure_alloc (size_t size, void **code); -FFI_API void ffi_closure_free (void *); - -FFI_API ffi_status -ffi_prep_closure (ffi_closure*, - ffi_cif *, - void (*fun)(ffi_cif*,void*,void**,void*), - void *user_data) -#if defined(__GNUC__) && (((__GNUC__ * 100) + __GNUC_MINOR__) >= 405) - __attribute__((deprecated ("use ffi_prep_closure_loc instead"))) -#elif defined(__GNUC__) && __GNUC__ >= 3 - __attribute__((deprecated)) -#endif - ; - -FFI_API ffi_status -ffi_prep_closure_loc (ffi_closure*, - ffi_cif *, - void (*fun)(ffi_cif*,void*,void**,void*), - void *user_data, - void*codeloc); - -#ifdef __sgi -# pragma pack 8 -#endif -typedef struct { -#if @FFI_EXEC_TRAMPOLINE_TABLE@ - void *trampoline_table; - void *trampoline_table_entry; -#else - char tramp[FFI_TRAMPOLINE_SIZE]; -#endif - ffi_cif *cif; - -#if !FFI_NATIVE_RAW_API - - /* If this is enabled, then a raw closure has the same layout - as a regular closure. We use this to install an intermediate - handler to do the transaltion, void** -> ffi_raw*. */ - - void (*translate_args)(ffi_cif*,void*,void**,void*); - void *this_closure; - -#endif - - void (*fun)(ffi_cif*,void*,ffi_raw*,void*); - void *user_data; - -} ffi_raw_closure; - -typedef struct { -#if @FFI_EXEC_TRAMPOLINE_TABLE@ - void *trampoline_table; - void *trampoline_table_entry; -#else - char tramp[FFI_TRAMPOLINE_SIZE]; -#endif - - ffi_cif *cif; - -#if !FFI_NATIVE_RAW_API - - /* If this is enabled, then a raw closure has the same layout - as a regular closure. We use this to install an intermediate - handler to do the translation, void** -> ffi_raw*. */ - - void (*translate_args)(ffi_cif*,void*,void**,void*); - void *this_closure; - -#endif - - void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*); - void *user_data; - -} ffi_java_raw_closure; - -FFI_API ffi_status -ffi_prep_raw_closure (ffi_raw_closure*, - ffi_cif *cif, - void (*fun)(ffi_cif*,void*,ffi_raw*,void*), - void *user_data); - -FFI_API ffi_status -ffi_prep_raw_closure_loc (ffi_raw_closure*, - ffi_cif *cif, - void (*fun)(ffi_cif*,void*,ffi_raw*,void*), - void *user_data, - void *codeloc); - -#if !FFI_NATIVE_RAW_API -FFI_API ffi_status -ffi_prep_java_raw_closure (ffi_java_raw_closure*, - ffi_cif *cif, - void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), - void *user_data) __attribute__((deprecated)); - -FFI_API ffi_status -ffi_prep_java_raw_closure_loc (ffi_java_raw_closure*, - ffi_cif *cif, - void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), - void *user_data, - void *codeloc) __attribute__((deprecated)); -#endif - -#endif /* FFI_CLOSURES */ - -#if FFI_GO_CLOSURES - -typedef struct { - void *tramp; - ffi_cif *cif; - void (*fun)(ffi_cif*,void*,void**,void*); -} ffi_go_closure; - -FFI_API ffi_status ffi_prep_go_closure (ffi_go_closure*, ffi_cif *, - void (*fun)(ffi_cif*,void*,void**,void*)); - -FFI_API void ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue, - void **avalue, void *closure); - -#endif /* FFI_GO_CLOSURES */ - -/* ---- Public interface definition -------------------------------------- */ - -FFI_API -ffi_status ffi_prep_cif(ffi_cif *cif, - ffi_abi abi, - unsigned int nargs, - ffi_type *rtype, - ffi_type **atypes); - -FFI_API -ffi_status ffi_prep_cif_var(ffi_cif *cif, - ffi_abi abi, - unsigned int nfixedargs, - unsigned int ntotalargs, - ffi_type *rtype, - ffi_type **atypes); - -FFI_API -void ffi_call(ffi_cif *cif, - void (*fn)(void), - void *rvalue, - void **avalue); - -FFI_API -ffi_status ffi_get_struct_offsets (ffi_abi abi, ffi_type *struct_type, - size_t *offsets); - -/* Useful for eliminating compiler warnings. */ -#define FFI_FN(f) ((void (*)(void))f) - -/* ---- Definitions shared with assembly code ---------------------------- */ - -#endif - -/* If these change, update src/mips/ffitarget.h. */ -#define FFI_TYPE_VOID 0 -#define FFI_TYPE_INT 1 -#define FFI_TYPE_FLOAT 2 -#define FFI_TYPE_DOUBLE 3 -#if @HAVE_LONG_DOUBLE@ -#define FFI_TYPE_LONGDOUBLE 4 -#else -#define FFI_TYPE_LONGDOUBLE FFI_TYPE_DOUBLE -#endif -#define FFI_TYPE_UINT8 5 -#define FFI_TYPE_SINT8 6 -#define FFI_TYPE_UINT16 7 -#define FFI_TYPE_SINT16 8 -#define FFI_TYPE_UINT32 9 -#define FFI_TYPE_SINT32 10 -#define FFI_TYPE_UINT64 11 -#define FFI_TYPE_SINT64 12 -#define FFI_TYPE_STRUCT 13 -#define FFI_TYPE_POINTER 14 -#define FFI_TYPE_COMPLEX 15 - -/* This should always refer to the last type code (for sanity checks). */ -#define FFI_TYPE_LAST FFI_TYPE_COMPLEX - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/include/ffi_cfi.h b/include/ffi_cfi.h deleted file mode 100644 index 244ce57..0000000 --- a/include/ffi_cfi.h +++ /dev/null @@ -1,55 +0,0 @@ -/* ----------------------------------------------------------------------- - ffi_cfi.h - Copyright (c) 2014 Red Hat, Inc. - - Conditionally assemble cfi directives. Only necessary for building libffi. - ----------------------------------------------------------------------- */ - -#ifndef FFI_CFI_H -#define FFI_CFI_H - -#ifdef HAVE_AS_CFI_PSEUDO_OP - -# define cfi_startproc .cfi_startproc -# define cfi_endproc .cfi_endproc -# define cfi_def_cfa(reg, off) .cfi_def_cfa reg, off -# define cfi_def_cfa_register(reg) .cfi_def_cfa_register reg -# define cfi_def_cfa_offset(off) .cfi_def_cfa_offset off -# define cfi_adjust_cfa_offset(off) .cfi_adjust_cfa_offset off -# define cfi_offset(reg, off) .cfi_offset reg, off -# define cfi_rel_offset(reg, off) .cfi_rel_offset reg, off -# define cfi_register(r1, r2) .cfi_register r1, r2 -# define cfi_return_column(reg) .cfi_return_column reg -# define cfi_restore(reg) .cfi_restore reg -# define cfi_same_value(reg) .cfi_same_value reg -# define cfi_undefined(reg) .cfi_undefined reg -# define cfi_remember_state .cfi_remember_state -# define cfi_restore_state .cfi_restore_state -# define cfi_window_save .cfi_window_save -# define cfi_personality(enc, exp) .cfi_personality enc, exp -# define cfi_lsda(enc, exp) .cfi_lsda enc, exp -# define cfi_escape(...) .cfi_escape __VA_ARGS__ - -#else - -# define cfi_startproc -# define cfi_endproc -# define cfi_def_cfa(reg, off) -# define cfi_def_cfa_register(reg) -# define cfi_def_cfa_offset(off) -# define cfi_adjust_cfa_offset(off) -# define cfi_offset(reg, off) -# define cfi_rel_offset(reg, off) -# define cfi_register(r1, r2) -# define cfi_return_column(reg) -# define cfi_restore(reg) -# define cfi_same_value(reg) -# define cfi_undefined(reg) -# define cfi_remember_state -# define cfi_restore_state -# define cfi_window_save -# define cfi_personality(enc, exp) -# define cfi_lsda(enc, exp) -# define cfi_escape(...) - -#endif /* HAVE_AS_CFI_PSEUDO_OP */ -#endif /* FFI_CFI_H */ diff --git a/include/ffi_common.h b/include/ffi_common.h deleted file mode 100644 index 76b9dd6..0000000 --- a/include/ffi_common.h +++ /dev/null @@ -1,153 +0,0 @@ -/* ----------------------------------------------------------------------- - ffi_common.h - Copyright (C) 2011, 2012, 2013 Anthony Green - Copyright (C) 2007 Free Software Foundation, Inc - Copyright (c) 1996 Red Hat, Inc. - - Common internal definitions and macros. Only necessary for building - libffi. - ----------------------------------------------------------------------- */ - -#ifndef FFI_COMMON_H -#define FFI_COMMON_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -/* Do not move this. Some versions of AIX are very picky about where - this is positioned. */ -#ifdef __GNUC__ -# if HAVE_ALLOCA_H -# include -# else - /* mingw64 defines this already in malloc.h. */ -# ifndef alloca -# define alloca __builtin_alloca -# endif -# endif -# define MAYBE_UNUSED __attribute__((__unused__)) -#else -# define MAYBE_UNUSED -# if HAVE_ALLOCA_H -# include -# else -# ifdef _AIX -# pragma alloca -# else -# ifndef alloca /* predefined by HP cc +Olibcalls */ -# ifdef _MSC_VER -# define alloca _alloca -# else -char *alloca (); -# endif -# endif -# endif -# endif -#endif - -/* Check for the existence of memcpy. */ -#if STDC_HEADERS -# include -#else -# ifndef HAVE_MEMCPY -# define memcpy(d, s, n) bcopy ((s), (d), (n)) -# endif -#endif - -#if defined(FFI_DEBUG) -#include -#endif - -#ifdef FFI_DEBUG -void ffi_assert(char *expr, char *file, int line); -void ffi_stop_here(void); -void ffi_type_test(ffi_type *a, char *file, int line); - -#define FFI_ASSERT(x) ((x) ? (void)0 : ffi_assert(#x, __FILE__,__LINE__)) -#define FFI_ASSERT_AT(x, f, l) ((x) ? 0 : ffi_assert(#x, (f), (l))) -#define FFI_ASSERT_VALID_TYPE(x) ffi_type_test (x, __FILE__, __LINE__) -#else -#define FFI_ASSERT(x) -#define FFI_ASSERT_AT(x, f, l) -#define FFI_ASSERT_VALID_TYPE(x) -#endif - -/* v cast to size_t and aligned up to a multiple of a */ -#define FFI_ALIGN(v, a) (((((size_t) (v))-1) | ((a)-1))+1) -/* v cast to size_t and aligned down to a multiple of a */ -#define FFI_ALIGN_DOWN(v, a) (((size_t) (v)) & -a) - -/* Perform machine dependent cif processing */ -ffi_status ffi_prep_cif_machdep(ffi_cif *cif); -ffi_status ffi_prep_cif_machdep_var(ffi_cif *cif, - unsigned int nfixedargs, unsigned int ntotalargs); - - -#if HAVE_LONG_DOUBLE_VARIANT -/* Used to adjust size/alignment of ffi types. */ -void ffi_prep_types (ffi_abi abi); -#endif - -/* Used internally, but overridden by some architectures */ -ffi_status ffi_prep_cif_core(ffi_cif *cif, - ffi_abi abi, - unsigned int isvariadic, - unsigned int nfixedargs, - unsigned int ntotalargs, - ffi_type *rtype, - ffi_type **atypes); - -/* Translate a data pointer to a code pointer. Needed for closures on - some targets. */ -void *ffi_data_to_code_pointer (void *data) FFI_HIDDEN; - -/* Extended cif, used in callback from assembly routine */ -typedef struct -{ - ffi_cif *cif; - void *rvalue; - void **avalue; -} extended_cif; - -/* Terse sized type definitions. */ -#if defined(_MSC_VER) || defined(__sgi) || defined(__SUNPRO_C) -typedef unsigned char UINT8; -typedef signed char SINT8; -typedef unsigned short UINT16; -typedef signed short SINT16; -typedef unsigned int UINT32; -typedef signed int SINT32; -# ifdef _MSC_VER -typedef unsigned __int64 UINT64; -typedef signed __int64 SINT64; -# else -# include -typedef uint64_t UINT64; -typedef int64_t SINT64; -# endif -#else -typedef unsigned int UINT8 __attribute__((__mode__(__QI__))); -typedef signed int SINT8 __attribute__((__mode__(__QI__))); -typedef unsigned int UINT16 __attribute__((__mode__(__HI__))); -typedef signed int SINT16 __attribute__((__mode__(__HI__))); -typedef unsigned int UINT32 __attribute__((__mode__(__SI__))); -typedef signed int SINT32 __attribute__((__mode__(__SI__))); -typedef unsigned int UINT64 __attribute__((__mode__(__DI__))); -typedef signed int SINT64 __attribute__((__mode__(__DI__))); -#endif - -typedef float FLOAT32; - -#ifndef __GNUC__ -#define __builtin_expect(x, expected_value) (x) -#endif -#define LIKELY(x) __builtin_expect(!!(x),1) -#define UNLIKELY(x) __builtin_expect((x)!=0,0) - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/include/ffitarget-aarch64.h b/include/ffitarget-aarch64.h deleted file mode 100644 index 32c4f08..0000000 --- a/include/ffitarget-aarch64.h +++ /dev/null @@ -1,88 +0,0 @@ -/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd. - -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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - -#ifndef LIBFFI_TARGET_H -#define LIBFFI_TARGET_H - -#ifndef LIBFFI_H -#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." -#endif - -#ifndef LIBFFI_ASM -#ifdef __ILP32__ -#define FFI_SIZEOF_ARG 8 -#define FFI_SIZEOF_JAVA_RAW 4 -typedef unsigned long long ffi_arg; -typedef signed long long ffi_sarg; -#elif defined(_M_ARM64) -#define FFI_SIZEOF_ARG 8 -typedef unsigned long long ffi_arg; -typedef signed long long ffi_sarg; -#else -typedef unsigned long ffi_arg; -typedef signed long ffi_sarg; -#endif - -typedef enum ffi_abi - { - FFI_FIRST_ABI = 0, - FFI_SYSV, - FFI_LAST_ABI, - FFI_DEFAULT_ABI = FFI_SYSV - } ffi_abi; -#endif - -/* ---- Definitions for closures ----------------------------------------- */ - -#define FFI_CLOSURES 1 -#define FFI_NATIVE_RAW_API 0 - -#if defined (FFI_EXEC_TRAMPOLINE_TABLE) && FFI_EXEC_TRAMPOLINE_TABLE - -#ifdef __MACH__ -#define FFI_TRAMPOLINE_SIZE 16 -#define FFI_TRAMPOLINE_CLOSURE_OFFSET 16 -#else -#error "No trampoline table implementation" -#endif - -#else -#define FFI_TRAMPOLINE_SIZE 24 -#define FFI_TRAMPOLINE_CLOSURE_OFFSET FFI_TRAMPOLINE_SIZE -#endif - -/* ---- Internal ---- */ - -#if defined (__APPLE__) -#define FFI_TARGET_SPECIFIC_VARIADIC -#define FFI_EXTRA_CIF_FIELDS unsigned aarch64_nfixedargs -#elif !defined(_M_ARM64) -/* iOS and Windows reserve x18 for the system. Disable Go closures until - a new static chain is chosen. */ -#define FFI_GO_CLOSURES 1 -#endif - -#ifndef _M_ARM64 -/* No complex type on Windows */ -#define FFI_TARGET_HAS_COMPLEX_TYPE -#endif - -#endif diff --git a/include/ffitarget-arm.h b/include/ffitarget-arm.h deleted file mode 100644 index 1cf1036..0000000 --- a/include/ffitarget-arm.h +++ /dev/null @@ -1,82 +0,0 @@ -/* -----------------------------------------------------------------*-C-*- - ffitarget.h - Copyright (c) 2012 Anthony Green - Copyright (c) 2010 CodeSourcery - Copyright (c) 1996-2003 Red Hat, Inc. - - Target configuration macros for ARM. - - 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 AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - ----------------------------------------------------------------------- */ - -#ifndef LIBFFI_TARGET_H -#define LIBFFI_TARGET_H - -#ifndef LIBFFI_H -#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." -#endif - -#ifndef LIBFFI_ASM -typedef unsigned long ffi_arg; -typedef signed long ffi_sarg; - -typedef enum ffi_abi { - FFI_FIRST_ABI = 0, - FFI_SYSV, - FFI_VFP, - FFI_LAST_ABI, -#ifdef __ARM_PCS_VFP - FFI_DEFAULT_ABI = FFI_VFP, -#else - FFI_DEFAULT_ABI = FFI_SYSV, -#endif -} ffi_abi; -#endif - -#define FFI_EXTRA_CIF_FIELDS \ - int vfp_used; \ - unsigned short vfp_reg_free, vfp_nargs; \ - signed char vfp_args[16] \ - -#define FFI_TARGET_SPECIFIC_VARIADIC -#define FFI_TARGET_HAS_COMPLEX_TYPE - -/* ---- Definitions for closures ----------------------------------------- */ - -#define FFI_CLOSURES 1 -#define FFI_GO_CLOSURES 1 -#define FFI_NATIVE_RAW_API 0 - -#if defined (FFI_EXEC_TRAMPOLINE_TABLE) && FFI_EXEC_TRAMPOLINE_TABLE - -#ifdef __MACH__ -#define FFI_TRAMPOLINE_SIZE 12 -#define FFI_TRAMPOLINE_CLOSURE_OFFSET 8 -#else -#error "No trampoline table implementation" -#endif - -#else -#define FFI_TRAMPOLINE_SIZE 12 -#define FFI_TRAMPOLINE_CLOSURE_OFFSET FFI_TRAMPOLINE_SIZE -#endif - -#endif diff --git a/include/ffitarget-x86_64.h b/include/ffitarget-x86_64.h deleted file mode 100644 index 85ccedf..0000000 --- a/include/ffitarget-x86_64.h +++ /dev/null @@ -1,147 +0,0 @@ -/* -----------------------------------------------------------------*-C-*- - ffitarget.h - Copyright (c) 2012, 2014, 2018 Anthony Green - Copyright (c) 1996-2003, 2010 Red Hat, Inc. - Copyright (C) 2008 Free Software Foundation, Inc. - - Target configuration macros for x86 and x86-64. - - 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 AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - ----------------------------------------------------------------------- */ - -#ifndef LIBFFI_TARGET_H -#define LIBFFI_TARGET_H - -#ifndef LIBFFI_H -#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." -#endif - -/* ---- System specific configurations ----------------------------------- */ - -/* For code common to all platforms on x86 and x86_64. */ -#define X86_ANY - -#if defined (X86_64) && defined (__i386__) -#undef X86_64 -#define X86 -#endif - -#ifdef X86_WIN64 -#define FFI_SIZEOF_ARG 8 -#define USE_BUILTIN_FFS 0 /* not yet implemented in mingw-64 */ -#endif - -#define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION -#ifndef _MSC_VER -#define FFI_TARGET_HAS_COMPLEX_TYPE -#endif - -/* ---- Generic type definitions ----------------------------------------- */ - -#ifndef LIBFFI_ASM -#ifdef X86_WIN64 -#ifdef _MSC_VER -typedef unsigned __int64 ffi_arg; -typedef __int64 ffi_sarg; -#else -typedef unsigned long long ffi_arg; -typedef long long ffi_sarg; -#endif -#else -#if defined __x86_64__ && defined __ILP32__ -#define FFI_SIZEOF_ARG 8 -#define FFI_SIZEOF_JAVA_RAW 4 -typedef unsigned long long ffi_arg; -typedef long long ffi_sarg; -#else -typedef unsigned long ffi_arg; -typedef signed long ffi_sarg; -#endif -#endif - -typedef enum ffi_abi { -#if defined(X86_WIN64) - FFI_FIRST_ABI = 0, - FFI_WIN64, /* sizeof(long double) == 8 - microsoft compilers */ - FFI_GNUW64, /* sizeof(long double) == 16 - GNU compilers */ - FFI_LAST_ABI, -#ifdef __GNUC__ - FFI_DEFAULT_ABI = FFI_GNUW64 -#else - FFI_DEFAULT_ABI = FFI_WIN64 -#endif - -#elif defined(X86_64) || (defined (__x86_64__) && defined (X86_DARWIN)) - FFI_FIRST_ABI = 1, - FFI_UNIX64, - FFI_WIN64, - FFI_EFI64 = FFI_WIN64, - FFI_GNUW64, - FFI_LAST_ABI, - FFI_DEFAULT_ABI = FFI_UNIX64 - -#elif defined(X86_WIN32) - FFI_FIRST_ABI = 0, - FFI_SYSV = 1, - FFI_STDCALL = 2, - FFI_THISCALL = 3, - FFI_FASTCALL = 4, - FFI_MS_CDECL = 5, - FFI_PASCAL = 6, - FFI_REGISTER = 7, - FFI_LAST_ABI, - FFI_DEFAULT_ABI = FFI_MS_CDECL -#else - FFI_FIRST_ABI = 0, - FFI_SYSV = 1, - FFI_THISCALL = 3, - FFI_FASTCALL = 4, - FFI_STDCALL = 5, - FFI_PASCAL = 6, - FFI_REGISTER = 7, - FFI_MS_CDECL = 8, - FFI_LAST_ABI, - FFI_DEFAULT_ABI = FFI_SYSV -#endif -} ffi_abi; -#endif - -/* ---- Definitions for closures ----------------------------------------- */ - -#define FFI_CLOSURES 1 -#define FFI_GO_CLOSURES 1 - -#define FFI_TYPE_SMALL_STRUCT_1B (FFI_TYPE_LAST + 1) -#define FFI_TYPE_SMALL_STRUCT_2B (FFI_TYPE_LAST + 2) -#define FFI_TYPE_SMALL_STRUCT_4B (FFI_TYPE_LAST + 3) -#define FFI_TYPE_MS_STRUCT (FFI_TYPE_LAST + 4) - -#if defined (X86_64) || defined(X86_WIN64) \ - || (defined (__x86_64__) && defined (X86_DARWIN)) -# define FFI_TRAMPOLINE_SIZE 24 -# define FFI_NATIVE_RAW_API 0 -#else -# define FFI_TRAMPOLINE_SIZE 12 -# define FFI_NATIVE_RAW_API 1 /* x86 has native raw api support */ -#endif - -#endif - diff --git a/include/ffitarget.h b/include/ffitarget.h deleted file mode 100644 index 93a5579..0000000 --- a/include/ffitarget.h +++ /dev/null @@ -1,21 +0,0 @@ -/* Include the correct ffitarget.h automatically. This helps us create prefixes - * with multi-lib Linux and OSX/iOS universal builds. To avoid listing all - * possible architectures here, we try the configured target arch first and then - * include the most common multilib/universal setups in the #elif ladder */ -#ifdef __arm__ -#include "ffitarget-arm.h" -#elif defined(__i386__) || defined(_M_IX86) -#include "ffitarget-x86.h" -#elif defined(__x86_64__) || defined(_M_X64) -#include "ffitarget-x86_64.h" -#elif defined(__arm__) || defined(_M_ARM) -#include "ffitarget-arm.h" -#elif defined(__aarch64__) || defined(_M_ARM64) -#include "ffitarget-aarch64.h" -#elif defined(__powerpc__) || defined(_M_PPC) -#include "ffitarget-powerpc.h" -#elif defined(__powerpc64__) -#include "ffitarget-powerpc64.h" -#else -#error "Unsupported Architecture" -#endif diff --git a/install-sh b/install-sh deleted file mode 100755 index 8175c64..0000000 --- a/install-sh +++ /dev/null @@ -1,518 +0,0 @@ -#!/bin/sh -# install - install a program, script, or datafile - -scriptversion=2018-03-11.20; # UTC - -# 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. - -tab=' ' -nl=' -' -IFS=" $tab$nl" - -# Set DOITPROG to "echo" to test this script. - -doit=${DOITPROG-} -doit_exec=${doit:-exec} - -# Put in absolute file names if you don't have them in your path; -# or use environment vars. - -chgrpprog=${CHGRPPROG-chgrp} -chmodprog=${CHMODPROG-chmod} -chownprog=${CHOWNPROG-chown} -cmpprog=${CMPPROG-cmp} -cpprog=${CPPROG-cp} -mkdirprog=${MKDIRPROG-mkdir} -mvprog=${MVPROG-mv} -rmprog=${RMPROG-rm} -stripprog=${STRIPPROG-strip} - -posix_mkdir= - -# Desired mode of installed file. -mode=0755 - -chgrpcmd= -chmodcmd=$chmodprog -chowncmd= -mvcmd=$mvprog -rmcmd="$rmprog -f" -stripcmd= - -src= -dst= -dir_arg= -dst_arg= - -copy_on_change=false -is_target_a_directory=possibly - -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: - --help display this help and exit. - --version display version info and exit. - - -c (ignored) - -C install only if different (preserve the last data modification time) - -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. - -Environment variables override the default commands: - CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG - RMPROG STRIPPROG -" - -while test $# -ne 0; do - case $1 in - -c) ;; - - -C) copy_on_change=true;; - - -d) dir_arg=true;; - - -g) chgrpcmd="$chgrpprog $2" - shift;; - - --help) echo "$usage"; exit $?;; - - -m) mode=$2 - case $mode in - *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) - echo "$0: invalid mode: $mode" >&2 - exit 1;; - esac - shift;; - - -o) chowncmd="$chownprog $2" - shift;; - - -s) stripcmd=$stripprog;; - - -t) - is_target_a_directory=always - dst_arg=$2 - # Protect names problematic for 'test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac - shift;; - - -T) is_target_a_directory=never;; - - --version) echo "$0 $scriptversion"; exit $?;; - - --) shift - break;; - - -*) echo "$0: invalid option: $1" >&2 - exit 1;; - - *) break;; - esac - shift -done - -# We allow the use of options -d and -T together, by making -d -# take the precedence; this is for compatibility with GNU install. - -if test -n "$dir_arg"; then - if test -n "$dst_arg"; then - echo "$0: target directory not allowed when installing a directory." >&2 - exit 1 - fi -fi - -if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then - # When -d is used, all remaining arguments are directories to create. - # When -t is used, the destination is already specified. - # Otherwise, the last argument is the destination. Remove it from $@. - for arg - do - if test -n "$dst_arg"; then - # $@ is not empty: it contains at least $arg. - set fnord "$@" "$dst_arg" - shift # fnord - fi - shift # arg - dst_arg=$arg - # Protect names problematic for 'test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac - done -fi - -if test $# -eq 0; 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 - -if test -z "$dir_arg"; then - if test $# -gt 1 || test "$is_target_a_directory" = always; then - if test ! -d "$dst_arg"; then - echo "$0: $dst_arg: Is not a directory." >&2 - exit 1 - fi - fi -fi - -if test -z "$dir_arg"; then - do_exit='(exit $ret); exit $ret' - trap "ret=129; $do_exit" 1 - trap "ret=130; $do_exit" 2 - trap "ret=141; $do_exit" 13 - trap "ret=143; $do_exit" 15 - - # Set umask so as not to create temps with too-generous modes. - # However, 'strip' requires both read and write access to temps. - case $mode in - # Optimize common cases. - *644) cp_umask=133;; - *755) cp_umask=22;; - - *[0-7]) - if test -z "$stripcmd"; then - u_plus_rw= - else - u_plus_rw='% 200' - fi - cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; - *) - if test -z "$stripcmd"; then - u_plus_rw= - else - u_plus_rw=,u+rw - fi - cp_umask=$mode$u_plus_rw;; - esac -fi - -for src -do - # Protect names problematic for 'test' and other utilities. - case $src in - -* | [=\(\)!]) src=./$src;; - esac - - if test -n "$dir_arg"; then - dst=$src - dstdir=$dst - test -d "$dstdir" - dstdir_status=$? - 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 "$dst_arg"; then - echo "$0: no destination specified." >&2 - exit 1 - fi - dst=$dst_arg - - # If destination is a directory, append the input filename. - if test -d "$dst"; then - if test "$is_target_a_directory" = never; then - echo "$0: $dst_arg: Is a directory" >&2 - exit 1 - fi - dstdir=$dst - dstbase=`basename "$src"` - case $dst in - */) dst=$dst$dstbase;; - *) dst=$dst/$dstbase;; - esac - dstdir_status=0 - else - dstdir=`dirname "$dst"` - test -d "$dstdir" - dstdir_status=$? - fi - fi - - case $dstdir in - */) dstdirslash=$dstdir;; - *) dstdirslash=$dstdir/;; - esac - - obsolete_mkdir_used=false - - if test $dstdir_status != 0; then - case $posix_mkdir in - '') - # Create intermediate dirs using mode 755 as modified by the umask. - # This is like FreeBSD 'install' as of 1997-10-28. - umask=`umask` - case $stripcmd.$umask in - # Optimize common cases. - *[2367][2367]) mkdir_umask=$umask;; - .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; - - *[0-7]) - mkdir_umask=`expr $umask + 22 \ - - $umask % 100 % 40 + $umask % 20 \ - - $umask % 10 % 4 + $umask % 2 - `;; - *) mkdir_umask=$umask,go-w;; - esac - - # With -d, create the new directory with the user-specified mode. - # Otherwise, rely on $mkdir_umask. - if test -n "$dir_arg"; then - mkdir_mode=-m$mode - else - mkdir_mode= - fi - - posix_mkdir=false - case $umask in - *[123567][0-7][0-7]) - # POSIX mkdir -p sets u+wx bits regardless of umask, which - # is incompatible with FreeBSD 'install' when (umask & 300) != 0. - ;; - *) - # Note that $RANDOM variable is not portable (e.g. dash); Use it - # here however when possible just to lower collision chance. - tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - - trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 - - # Because "mkdir -p" follows existing symlinks and we likely work - # directly in world-writeable /tmp, make sure that the '$tmpdir' - # directory is successfully created first before we actually test - # 'mkdir -p' feature. - if (umask $mkdir_umask && - $mkdirprog $mkdir_mode "$tmpdir" && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 - then - if test -z "$dir_arg" || { - # Check for POSIX incompatibilities with -m. - # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writable bit of parent directory when it shouldn't. - # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - test_tmpdir="$tmpdir/a" - ls_ld_tmpdir=`ls -ld "$test_tmpdir"` - case $ls_ld_tmpdir in - d????-?r-*) different_mode=700;; - d????-?--*) different_mode=755;; - *) false;; - esac && - $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` - test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" - } - } - then posix_mkdir=: - fi - rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" - else - # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null - fi - trap '' 0;; - esac;; - esac - - if - $posix_mkdir && ( - umask $mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" - ) - then : - else - - # The umask is ridiculous, or mkdir does not conform to POSIX, - # or it failed possibly due to a race condition. Create the - # directory the slow way, step by step, checking for races as we go. - - case $dstdir in - /*) prefix='/';; - [-=\(\)!]*) prefix='./';; - *) prefix='';; - esac - - oIFS=$IFS - IFS=/ - set -f - set fnord $dstdir - shift - set +f - IFS=$oIFS - - prefixes= - - for d - do - test X"$d" = X && continue - - prefix=$prefix$d - if test -d "$prefix"; then - prefixes= - else - if $posix_mkdir; then - (umask=$mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break - # Don't fail if two instances are running concurrently. - test -d "$prefix" || exit 1 - else - case $prefix in - *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; - *) qprefix=$prefix;; - esac - prefixes="$prefixes '$qprefix'" - fi - fi - prefix=$prefix/ - done - - if test -n "$prefixes"; then - # Don't fail if two instances are running concurrently. - (umask $mkdir_umask && - eval "\$doit_exec \$mkdirprog $prefixes") || - test -d "$dstdir" || exit 1 - obsolete_mkdir_used=true - fi - fi - fi - - if test -n "$dir_arg"; then - { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && - { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && - { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || - test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 - else - - # Make a couple of temp file names in the proper directory. - dsttmp=${dstdirslash}_inst.$$_ - rmtmp=${dstdirslash}_rm.$$_ - - # Trap to clean up those temp files at exit. - trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 - - # Copy the file name to the temp name. - (umask $cp_umask && $doit_exec $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 $mode "$dsttmp"; } && - - # If -C, don't bother to copy if it wouldn't change the file. - if $copy_on_change && - old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && - new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && - set -f && - set X $old && old=:$2:$4:$5:$6 && - set X $new && new=:$2:$4:$5:$6 && - set +f && - test "$old" = "$new" && - $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 - then - rm -f "$dsttmp" - else - # Rename the file to the real destination. - $doit $mvcmd -f "$dsttmp" "$dst" 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. - { - test ! -f "$dst" || - $doit $rmcmd -f "$dst" 2>/dev/null || - { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && - { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } - } || - { echo "$0: cannot unlink or rename $dst" >&2 - (exit 1); exit 1 - } - } && - - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dst" - } - fi || exit 1 - - trap '' 0 - fi -done - -# Local variables: -# eval: (add-hook 'before-save-hook 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC0" -# time-stamp-end: "; # UTC" -# End: diff --git a/install.py b/install.py new file mode 100755 index 0000000..9380a09 --- /dev/null +++ b/install.py @@ -0,0 +1,77 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import tarfile +import argparse +import os +import subprocess +import sys +import shutil + +patch_files = [ + "backport-x86-64-Always-double-jump-table-slot-size-for-CET-71.patch", + "backport-Fix-check-for-invalid-varargs-arguments-707.patch", + "libffi-Add-sw64-architecture.patch", + "backport-Fix-signed-vs-unsigned-comparison.patch", + "riscv-extend-return-types-smaller-than-ffi_arg-680.patch", + "fix-AARCH64EB-support.patch", + "backport-openharmony-adapt.patch", + "backport-openharmony-dummy.patch" +] + +def untar_file(tar_file_path, extract_path): + try: + tar_cmd = ['tar', '-zxf', tar_file_path, '-C', extract_path] + subprocess.run(tar_cmd, check=True) + except Exception as e: + print("tar error!") + return + +def move_file(src_path, dst_path): + patch_dir = os.path.join(src_path, "patch") + for file in patch_files: + src_file = os.path.join(patch_dir, file) + dst_file = os.path.join(dst_path, file) + shutil.copy(src_file, dst_file) + +def apply_patch(patch_file, target_dir): + try: + if not os.path.exists(target_dir): + return + patch_cmd = ['patch', '-p1', "--fuzz=0", "--no-backup-if-mismatch", '-i', patch_file, '-d', target_dir] + subprocess.run(patch_cmd, check=True) + except Exception as e: + print("apply_patch error!") + return + +def do_patch(target_dir): + for patch in patch_files: + apply_patch(patch, target_dir) + +def main(): + libffi_path = argparse.ArgumentParser() + libffi_path.add_argument('--gen-dir', help='generate path of log', required=True) + libffi_path.add_argument('--source-dir', help='generate path of log', required=True) + args = libffi_path.parse_args() + tar_file_path = os.path.join(args.source_dir, "libffi-3.4.2.tar.gz") + target_dir = os.path.join(args.gen_dir, "libffi-3.4.2") + + untar_file(tar_file_path, args.gen_dir) + move_file(args.source_dir, target_dir) + do_patch(target_dir) + return 0 + +if __name__ == '__main__': + sys.exit(main()) diff --git a/libffi-3.4.2.tar.gz b/libffi-3.4.2.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..6752a27688d5817706e3d3f369478975f8a179e6 GIT binary patch literal 1351355 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 z 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

Mdf8D)Q&$z7SSE~GCJu5r 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%0Dw#L0 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