diff options
author | Thomas Schwinge <thomas@codesourcery.com> | 2022-10-17 22:19:55 +0200 |
---|---|---|
committer | Thomas Schwinge <thomas@codesourcery.com> | 2022-11-04 10:51:01 +0100 |
commit | e4cba49413ca429dc82f6aa2e88129ecb3fdd943 (patch) | |
tree | c949e231f1a973cb7cb5aad1985c2aab9c653378 | |
parent | e724b0480bfa5ec04f39be8c7290330b495c59de (diff) | |
download | gcc-e4cba49413ca429dc82f6aa2e88129ecb3fdd943.zip gcc-e4cba49413ca429dc82f6aa2e88129ecb3fdd943.tar.gz gcc-e4cba49413ca429dc82f6aa2e88129ecb3fdd943.tar.bz2 |
Remove support for Intel MIC offloading
... after its deprecation in GCC 12.
* Makefile.def: Remove module 'liboffloadmic'.
* Makefile.in: Regenerate.
* configure.ac: Remove 'liboffloadmic' handling.
* configure: Regenerate.
contrib/
* gcc-changelog/git_commit.py (default_changelog_locations):
Remove 'liboffloadmic'.
* gcc_update (files_and_dependencies): Remove 'liboffloadmic'
files.
* update-copyright.py (GCCCmdLine): Remove 'liboffloadmic'
comment.
gcc/
* config.gcc [target *-intelmic-* | *-intelmicemul-*]: Remove.
* config/i386/i386-options.cc (ix86_omp_device_kind_arch_isa)
[ACCEL_COMPILER]: Remove.
* config/i386/intelmic-mkoffload.cc: Remove.
* config/i386/intelmic-offload.h: Likewise.
* config/i386/t-intelmic: Likewise.
* config/i386/t-omp-device: Likewise.
* configure.ac [target *-intelmic-* | *-intelmicemul-*]: Remove.
* configure: Regenerate.
* doc/install.texi (--enable-offload-targets=[...]): Update.
* doc/sourcebuild.texi: Remove 'liboffloadmic' documentation.
include/
* gomp-constants.h (GOMP_DEVICE_INTEL_MIC): Comment out.
(GOMP_VERSION_INTEL_MIC): Remove.
libgomp/
* libgomp-plugin.h (OFFLOAD_TARGET_TYPE_INTEL_MIC): Remove.
* libgomp.texi (OpenMP Context Selectors): Remove Intel MIC
documentation.
* plugin/configfrag.ac <enable_offload_targets>
[*-intelmic-* | *-intelmicemul-*]: Remove.
* configure: Regenerate.
* testsuite/lib/libgomp.exp (libgomp_init): Remove 'liboffloadmic'
handling.
(offload_target_to_openacc_device_type)
[$offload_target = *-intelmic*]: Remove.
(check_effective_target_offload_device_intel_mic)
(check_effective_target_offload_device_any_intel_mic): Remove.
* testsuite/libgomp.c-c++-common/on_device_arch.h
(device_arch_intel_mic, on_device_arch_intel_mic, any_device_arch)
(any_device_arch_intel_mic): Remove.
* testsuite/libgomp.c-c++-common/target-45.c: Remove
'offload_device_any_intel_mic' XFAIL.
* testsuite/libgomp.fortran/target10.f90: Likewise.
liboffloadmic/
* ChangeLog: Remove.
* Makefile.am: Likewise.
* Makefile.in: Likewise.
* aclocal.m4: Likewise.
* configure: Likewise.
* configure.ac: Likewise.
* configure.tgt: Likewise.
* doc/doxygen/config: Likewise.
* doc/doxygen/header.tex: Likewise.
* include/coi/common/COIEngine_common.h: Likewise.
* include/coi/common/COIEvent_common.h: Likewise.
* include/coi/common/COIMacros_common.h: Likewise.
* include/coi/common/COIPerf_common.h: Likewise.
* include/coi/common/COIResult_common.h: Likewise.
* include/coi/common/COISysInfo_common.h: Likewise.
* include/coi/common/COITypes_common.h: Likewise.
* include/coi/sink/COIBuffer_sink.h: Likewise.
* include/coi/sink/COIPipeline_sink.h: Likewise.
* include/coi/sink/COIProcess_sink.h: Likewise.
* include/coi/source/COIBuffer_source.h: Likewise.
* include/coi/source/COIEngine_source.h: Likewise.
* include/coi/source/COIEvent_source.h: Likewise.
* include/coi/source/COIPipeline_source.h: Likewise.
* include/coi/source/COIProcess_source.h: Likewise.
* liboffloadmic_host.spec.in: Likewise.
* liboffloadmic_target.spec.in: Likewise.
* plugin/Makefile.am: Likewise.
* plugin/Makefile.in: Likewise.
* plugin/aclocal.m4: Likewise.
* plugin/configure: Likewise.
* plugin/configure.ac: Likewise.
* plugin/libgomp-plugin-intelmic.cpp: Likewise.
* plugin/offload_target_main.cpp: Likewise.
* runtime/cean_util.cpp: Likewise.
* runtime/cean_util.h: Likewise.
* runtime/coi/coi_client.cpp: Likewise.
* runtime/coi/coi_client.h: Likewise.
* runtime/coi/coi_server.cpp: Likewise.
* runtime/coi/coi_server.h: Likewise.
* runtime/compiler_if_host.cpp: Likewise.
* runtime/compiler_if_host.h: Likewise.
* runtime/compiler_if_target.cpp: Likewise.
* runtime/compiler_if_target.h: Likewise.
* runtime/dv_util.cpp: Likewise.
* runtime/dv_util.h: Likewise.
* runtime/emulator/coi_common.h: Likewise.
* runtime/emulator/coi_device.cpp: Likewise.
* runtime/emulator/coi_device.h: Likewise.
* runtime/emulator/coi_host.cpp: Likewise.
* runtime/emulator/coi_host.h: Likewise.
* runtime/emulator/coi_version_asm.h: Likewise.
* runtime/emulator/coi_version_linker_script.map: Likewise.
* runtime/liboffload_error.c: Likewise.
* runtime/liboffload_error_codes.h: Likewise.
* runtime/liboffload_msg.c: Likewise.
* runtime/liboffload_msg.h: Likewise.
* runtime/mic_lib.f90: Likewise.
* runtime/offload.h: Likewise.
* runtime/offload_common.cpp: Likewise.
* runtime/offload_common.h: Likewise.
* runtime/offload_engine.cpp: Likewise.
* runtime/offload_engine.h: Likewise.
* runtime/offload_env.cpp: Likewise.
* runtime/offload_env.h: Likewise.
* runtime/offload_host.cpp: Likewise.
* runtime/offload_host.h: Likewise.
* runtime/offload_iterator.h: Likewise.
* runtime/offload_omp_host.cpp: Likewise.
* runtime/offload_omp_target.cpp: Likewise.
* runtime/offload_orsl.cpp: Likewise.
* runtime/offload_orsl.h: Likewise.
* runtime/offload_table.cpp: Likewise.
* runtime/offload_table.h: Likewise.
* runtime/offload_target.cpp: Likewise.
* runtime/offload_target.h: Likewise.
* runtime/offload_target_main.cpp: Likewise.
* runtime/offload_timer.h: Likewise.
* runtime/offload_timer_host.cpp: Likewise.
* runtime/offload_timer_target.cpp: Likewise.
* runtime/offload_trace.cpp: Likewise.
* runtime/offload_trace.h: Likewise.
* runtime/offload_util.cpp: Likewise.
* runtime/offload_util.h: Likewise.
* runtime/ofldbegin.cpp: Likewise.
* runtime/ofldend.cpp: Likewise.
* runtime/orsl-lite/include/orsl-lite.h: Likewise.
* runtime/orsl-lite/lib/orsl-lite.c: Likewise.
* runtime/orsl-lite/version.txt: Likewise.
114 files changed, 10 insertions, 75949 deletions
diff --git a/Makefile.def b/Makefile.def index 3291b12..02e63c5 100644 --- a/Makefile.def +++ b/Makefile.def @@ -158,9 +158,6 @@ target_modules = { module= libvtv; bootstrap=true; lib_path=.libs; raw_cxx=true; }; -target_modules = { module= liboffloadmic; - lib_path=.libs; - extra_configure_flags='@extra_liboffloadmic_configure_flags@'; }; target_modules = { module= libssp; lib_path=.libs; }; target_modules = { module= newlib; }; target_modules = { module= libgcc; bootstrap=true; no_check=true; @@ -603,7 +600,6 @@ dependencies = { module=all-m4; on=all-build-texinfo; }; // on libgcc and newlib/libgloss. lang_env_dependencies = { module=libitm; cxx=true; }; lang_env_dependencies = { module=libffi; cxx=true; }; -lang_env_dependencies = { module=liboffloadmic; cxx=true; }; lang_env_dependencies = { module=newlib; no_c=true; }; lang_env_dependencies = { module=libgloss; no_c=true; }; lang_env_dependencies = { module=libgcc; no_gcc=true; no_c=true; }; @@ -625,14 +621,12 @@ dependencies = { module=all-target-libphobos; on=all-target-libbacktrace; }; dependencies = { module=all-target-libphobos; on=all-target-zlib; }; dependencies = { module=all-target-libphobos; on=all-target-libatomic; }; dependencies = { module=configure-target-libstdc++-v3; on=configure-target-libgomp; }; -dependencies = { module=configure-target-liboffloadmic; on=configure-target-libgomp; }; dependencies = { module=configure-target-libsanitizer; on=all-target-libstdc++-v3; }; dependencies = { module=configure-target-libvtv; on=all-target-libstdc++-v3; }; // parallel_list.o and parallel_settings.o depend on omp.h, which is // generated by the libgomp configure. Unfortunately, due to the use of // recursive make, we can't be that specific. dependencies = { module=all-target-libstdc++-v3; on=configure-target-libgomp; }; -dependencies = { module=all-target-liboffloadmic; on=all-target-libgomp; }; dependencies = { module=install-target-libgo; on=install-target-libatomic; }; dependencies = { module=install-target-libgfortran; on=install-target-libquadmath; }; @@ -642,8 +636,6 @@ dependencies = { module=install-target-libsanitizer; on=install-target-libstdc++ dependencies = { module=install-target-libsanitizer; on=install-target-libgcc; }; dependencies = { module=install-target-libvtv; on=install-target-libstdc++-v3; }; dependencies = { module=install-target-libvtv; on=install-target-libgcc; }; -dependencies = { module=install-target-liboffloadmic; on=install-target-libstdc++-v3; }; -dependencies = { module=install-target-liboffloadmic; on=install-target-libgcc; }; dependencies = { module=install-target-libitm; on=install-target-libgcc; }; dependencies = { module=install-target-libobjc; on=install-target-libgcc; }; dependencies = { module=install-target-libstdc++-v3; on=install-target-libgcc; }; diff --git a/Makefile.in b/Makefile.in index 1919dfe..6ffa966 100644 --- a/Makefile.in +++ b/Makefile.in @@ -706,7 +706,7 @@ all: # This is the list of directories that may be needed in RPATH_ENVVAR # so that programs built for the target machine work. -TARGET_LIB_PATH = $(TARGET_LIB_PATH_libstdc++-v3)$(TARGET_LIB_PATH_libsanitizer)$(TARGET_LIB_PATH_libvtv)$(TARGET_LIB_PATH_liboffloadmic)$(TARGET_LIB_PATH_libssp)$(TARGET_LIB_PATH_libphobos)$(TARGET_LIB_PATH_libgomp)$(TARGET_LIB_PATH_libitm)$(TARGET_LIB_PATH_libatomic)$(HOST_LIB_PATH_gcc) +TARGET_LIB_PATH = $(TARGET_LIB_PATH_libstdc++-v3)$(TARGET_LIB_PATH_libsanitizer)$(TARGET_LIB_PATH_libvtv)$(TARGET_LIB_PATH_libssp)$(TARGET_LIB_PATH_libphobos)$(TARGET_LIB_PATH_libgomp)$(TARGET_LIB_PATH_libitm)$(TARGET_LIB_PATH_libatomic)$(HOST_LIB_PATH_gcc) @if target-libstdc++-v3 TARGET_LIB_PATH_libstdc++-v3 = $$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs: @@ -720,10 +720,6 @@ TARGET_LIB_PATH_libsanitizer = $$r/$(TARGET_SUBDIR)/libsanitizer/.libs: TARGET_LIB_PATH_libvtv = $$r/$(TARGET_SUBDIR)/libvtv/.libs: @endif target-libvtv -@if target-liboffloadmic -TARGET_LIB_PATH_liboffloadmic = $$r/$(TARGET_SUBDIR)/liboffloadmic/.libs: -@endif target-liboffloadmic - @if target-libssp TARGET_LIB_PATH_libssp = $$r/$(TARGET_SUBDIR)/libssp/.libs: @endif target-libssp @@ -1107,7 +1103,6 @@ configure-target: \ maybe-configure-target-libstdc++-v3 \ maybe-configure-target-libsanitizer \ maybe-configure-target-libvtv \ - maybe-configure-target-liboffloadmic \ maybe-configure-target-libssp \ maybe-configure-target-newlib \ maybe-configure-target-libgcc \ @@ -1290,7 +1285,6 @@ all-target: maybe-all-target-libsanitizer @if target-libvtv-no-bootstrap all-target: maybe-all-target-libvtv @endif target-libvtv-no-bootstrap -all-target: maybe-all-target-liboffloadmic all-target: maybe-all-target-libssp all-target: maybe-all-target-newlib @if target-libgcc-no-bootstrap @@ -1396,7 +1390,6 @@ info-host: maybe-info-libctf info-target: maybe-info-target-libstdc++-v3 info-target: maybe-info-target-libsanitizer info-target: maybe-info-target-libvtv -info-target: maybe-info-target-liboffloadmic info-target: maybe-info-target-libssp info-target: maybe-info-target-newlib info-target: maybe-info-target-libgcc @@ -1485,7 +1478,6 @@ dvi-host: maybe-dvi-libctf dvi-target: maybe-dvi-target-libstdc++-v3 dvi-target: maybe-dvi-target-libsanitizer dvi-target: maybe-dvi-target-libvtv -dvi-target: maybe-dvi-target-liboffloadmic dvi-target: maybe-dvi-target-libssp dvi-target: maybe-dvi-target-newlib dvi-target: maybe-dvi-target-libgcc @@ -1574,7 +1566,6 @@ pdf-host: maybe-pdf-libctf pdf-target: maybe-pdf-target-libstdc++-v3 pdf-target: maybe-pdf-target-libsanitizer pdf-target: maybe-pdf-target-libvtv -pdf-target: maybe-pdf-target-liboffloadmic pdf-target: maybe-pdf-target-libssp pdf-target: maybe-pdf-target-newlib pdf-target: maybe-pdf-target-libgcc @@ -1663,7 +1654,6 @@ html-host: maybe-html-libctf html-target: maybe-html-target-libstdc++-v3 html-target: maybe-html-target-libsanitizer html-target: maybe-html-target-libvtv -html-target: maybe-html-target-liboffloadmic html-target: maybe-html-target-libssp html-target: maybe-html-target-newlib html-target: maybe-html-target-libgcc @@ -1752,7 +1742,6 @@ TAGS-host: maybe-TAGS-libctf TAGS-target: maybe-TAGS-target-libstdc++-v3 TAGS-target: maybe-TAGS-target-libsanitizer TAGS-target: maybe-TAGS-target-libvtv -TAGS-target: maybe-TAGS-target-liboffloadmic TAGS-target: maybe-TAGS-target-libssp TAGS-target: maybe-TAGS-target-newlib TAGS-target: maybe-TAGS-target-libgcc @@ -1841,7 +1830,6 @@ install-info-host: maybe-install-info-libctf install-info-target: maybe-install-info-target-libstdc++-v3 install-info-target: maybe-install-info-target-libsanitizer install-info-target: maybe-install-info-target-libvtv -install-info-target: maybe-install-info-target-liboffloadmic install-info-target: maybe-install-info-target-libssp install-info-target: maybe-install-info-target-newlib install-info-target: maybe-install-info-target-libgcc @@ -1930,7 +1918,6 @@ install-dvi-host: maybe-install-dvi-libctf install-dvi-target: maybe-install-dvi-target-libstdc++-v3 install-dvi-target: maybe-install-dvi-target-libsanitizer install-dvi-target: maybe-install-dvi-target-libvtv -install-dvi-target: maybe-install-dvi-target-liboffloadmic install-dvi-target: maybe-install-dvi-target-libssp install-dvi-target: maybe-install-dvi-target-newlib install-dvi-target: maybe-install-dvi-target-libgcc @@ -2019,7 +2006,6 @@ install-pdf-host: maybe-install-pdf-libctf install-pdf-target: maybe-install-pdf-target-libstdc++-v3 install-pdf-target: maybe-install-pdf-target-libsanitizer install-pdf-target: maybe-install-pdf-target-libvtv -install-pdf-target: maybe-install-pdf-target-liboffloadmic install-pdf-target: maybe-install-pdf-target-libssp install-pdf-target: maybe-install-pdf-target-newlib install-pdf-target: maybe-install-pdf-target-libgcc @@ -2108,7 +2094,6 @@ install-html-host: maybe-install-html-libctf install-html-target: maybe-install-html-target-libstdc++-v3 install-html-target: maybe-install-html-target-libsanitizer install-html-target: maybe-install-html-target-libvtv -install-html-target: maybe-install-html-target-liboffloadmic install-html-target: maybe-install-html-target-libssp install-html-target: maybe-install-html-target-newlib install-html-target: maybe-install-html-target-libgcc @@ -2197,7 +2182,6 @@ installcheck-host: maybe-installcheck-libctf installcheck-target: maybe-installcheck-target-libstdc++-v3 installcheck-target: maybe-installcheck-target-libsanitizer installcheck-target: maybe-installcheck-target-libvtv -installcheck-target: maybe-installcheck-target-liboffloadmic installcheck-target: maybe-installcheck-target-libssp installcheck-target: maybe-installcheck-target-newlib installcheck-target: maybe-installcheck-target-libgcc @@ -2286,7 +2270,6 @@ mostlyclean-host: maybe-mostlyclean-libctf mostlyclean-target: maybe-mostlyclean-target-libstdc++-v3 mostlyclean-target: maybe-mostlyclean-target-libsanitizer mostlyclean-target: maybe-mostlyclean-target-libvtv -mostlyclean-target: maybe-mostlyclean-target-liboffloadmic mostlyclean-target: maybe-mostlyclean-target-libssp mostlyclean-target: maybe-mostlyclean-target-newlib mostlyclean-target: maybe-mostlyclean-target-libgcc @@ -2375,7 +2358,6 @@ clean-host: maybe-clean-libctf clean-target: maybe-clean-target-libstdc++-v3 clean-target: maybe-clean-target-libsanitizer clean-target: maybe-clean-target-libvtv -clean-target: maybe-clean-target-liboffloadmic clean-target: maybe-clean-target-libssp clean-target: maybe-clean-target-newlib clean-target: maybe-clean-target-libgcc @@ -2464,7 +2446,6 @@ distclean-host: maybe-distclean-libctf distclean-target: maybe-distclean-target-libstdc++-v3 distclean-target: maybe-distclean-target-libsanitizer distclean-target: maybe-distclean-target-libvtv -distclean-target: maybe-distclean-target-liboffloadmic distclean-target: maybe-distclean-target-libssp distclean-target: maybe-distclean-target-newlib distclean-target: maybe-distclean-target-libgcc @@ -2553,7 +2534,6 @@ maintainer-clean-host: maybe-maintainer-clean-libctf maintainer-clean-target: maybe-maintainer-clean-target-libstdc++-v3 maintainer-clean-target: maybe-maintainer-clean-target-libsanitizer maintainer-clean-target: maybe-maintainer-clean-target-libvtv -maintainer-clean-target: maybe-maintainer-clean-target-liboffloadmic maintainer-clean-target: maybe-maintainer-clean-target-libssp maintainer-clean-target: maybe-maintainer-clean-target-newlib maintainer-clean-target: maybe-maintainer-clean-target-libgcc @@ -2700,7 +2680,6 @@ check-target: \ maybe-check-target-libstdc++-v3 \ maybe-check-target-libsanitizer \ maybe-check-target-libvtv \ - maybe-check-target-liboffloadmic \ maybe-check-target-libssp \ maybe-check-target-newlib \ maybe-check-target-libgcc \ @@ -2890,7 +2869,6 @@ install-target: \ maybe-install-target-libstdc++-v3 \ maybe-install-target-libsanitizer \ maybe-install-target-libvtv \ - maybe-install-target-liboffloadmic \ maybe-install-target-libssp \ maybe-install-target-newlib \ maybe-install-target-libgcc \ @@ -2999,7 +2977,6 @@ install-strip-target: \ maybe-install-strip-target-libstdc++-v3 \ maybe-install-strip-target-libsanitizer \ maybe-install-strip-target-libvtv \ - maybe-install-strip-target-liboffloadmic \ maybe-install-strip-target-libssp \ maybe-install-strip-target-newlib \ maybe-install-strip-target-libgcc \ @@ -46216,491 +46193,6 @@ maintainer-clean-target-libvtv: -.PHONY: configure-target-liboffloadmic maybe-configure-target-liboffloadmic -maybe-configure-target-liboffloadmic: -@if gcc-bootstrap -configure-target-liboffloadmic: stage_current -@endif gcc-bootstrap -@if target-liboffloadmic -maybe-configure-target-liboffloadmic: configure-target-liboffloadmic -configure-target-liboffloadmic: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - echo "Checking multilib configuration for liboffloadmic..."; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/liboffloadmic; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/liboffloadmic/multilib.tmp 2> /dev/null; \ - if test -r $(TARGET_SUBDIR)/liboffloadmic/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/liboffloadmic/multilib.tmp $(TARGET_SUBDIR)/liboffloadmic/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/liboffloadmic/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/liboffloadmic/Makefile; \ - mv $(TARGET_SUBDIR)/liboffloadmic/multilib.tmp $(TARGET_SUBDIR)/liboffloadmic/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/liboffloadmic/multilib.tmp $(TARGET_SUBDIR)/liboffloadmic/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/liboffloadmic/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/liboffloadmic; \ - $(NORMAL_TARGET_EXPORTS) \ - echo Configuring in $(TARGET_SUBDIR)/liboffloadmic; \ - cd "$(TARGET_SUBDIR)/liboffloadmic" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/liboffloadmic/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - module_srcdir=liboffloadmic; \ - rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) \ - $$s/$$module_srcdir/configure \ - --srcdir=$${topdir}/$$module_srcdir \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} @extra_liboffloadmic_configure_flags@ \ - || exit 1 -@endif target-liboffloadmic - - - - - -.PHONY: all-target-liboffloadmic maybe-all-target-liboffloadmic -maybe-all-target-liboffloadmic: -@if gcc-bootstrap -all-target-liboffloadmic: stage_current -@endif gcc-bootstrap -@if target-liboffloadmic -TARGET-target-liboffloadmic=all -maybe-all-target-liboffloadmic: all-target-liboffloadmic -all-target-liboffloadmic: configure-target-liboffloadmic - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/liboffloadmic && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ - $(TARGET-target-liboffloadmic)) -@endif target-liboffloadmic - - - - - -.PHONY: check-target-liboffloadmic maybe-check-target-liboffloadmic -maybe-check-target-liboffloadmic: -@if target-liboffloadmic -maybe-check-target-liboffloadmic: check-target-liboffloadmic - -check-target-liboffloadmic: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/liboffloadmic && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) check) - -@endif target-liboffloadmic - -.PHONY: install-target-liboffloadmic maybe-install-target-liboffloadmic -maybe-install-target-liboffloadmic: -@if target-liboffloadmic -maybe-install-target-liboffloadmic: install-target-liboffloadmic - -install-target-liboffloadmic: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/liboffloadmic && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) install) - -@endif target-liboffloadmic - -.PHONY: install-strip-target-liboffloadmic maybe-install-strip-target-liboffloadmic -maybe-install-strip-target-liboffloadmic: -@if target-liboffloadmic -maybe-install-strip-target-liboffloadmic: install-strip-target-liboffloadmic - -install-strip-target-liboffloadmic: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/liboffloadmic && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) - -@endif target-liboffloadmic - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-target-liboffloadmic info-target-liboffloadmic -maybe-info-target-liboffloadmic: -@if target-liboffloadmic -maybe-info-target-liboffloadmic: info-target-liboffloadmic - -info-target-liboffloadmic: \ - configure-target-liboffloadmic - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing info in $(TARGET_SUBDIR)/liboffloadmic"; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/liboffloadmic && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif target-liboffloadmic - -.PHONY: maybe-dvi-target-liboffloadmic dvi-target-liboffloadmic -maybe-dvi-target-liboffloadmic: -@if target-liboffloadmic -maybe-dvi-target-liboffloadmic: dvi-target-liboffloadmic - -dvi-target-liboffloadmic: \ - configure-target-liboffloadmic - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing dvi in $(TARGET_SUBDIR)/liboffloadmic"; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/liboffloadmic && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif target-liboffloadmic - -.PHONY: maybe-pdf-target-liboffloadmic pdf-target-liboffloadmic -maybe-pdf-target-liboffloadmic: -@if target-liboffloadmic -maybe-pdf-target-liboffloadmic: pdf-target-liboffloadmic - -pdf-target-liboffloadmic: \ - configure-target-liboffloadmic - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing pdf in $(TARGET_SUBDIR)/liboffloadmic"; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/liboffloadmic && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif target-liboffloadmic - -.PHONY: maybe-html-target-liboffloadmic html-target-liboffloadmic -maybe-html-target-liboffloadmic: -@if target-liboffloadmic -maybe-html-target-liboffloadmic: html-target-liboffloadmic - -html-target-liboffloadmic: \ - configure-target-liboffloadmic - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing html in $(TARGET_SUBDIR)/liboffloadmic"; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/liboffloadmic && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif target-liboffloadmic - -.PHONY: maybe-TAGS-target-liboffloadmic TAGS-target-liboffloadmic -maybe-TAGS-target-liboffloadmic: -@if target-liboffloadmic -maybe-TAGS-target-liboffloadmic: TAGS-target-liboffloadmic - -TAGS-target-liboffloadmic: \ - configure-target-liboffloadmic - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing TAGS in $(TARGET_SUBDIR)/liboffloadmic"; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/liboffloadmic && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif target-liboffloadmic - -.PHONY: maybe-install-info-target-liboffloadmic install-info-target-liboffloadmic -maybe-install-info-target-liboffloadmic: -@if target-liboffloadmic -maybe-install-info-target-liboffloadmic: install-info-target-liboffloadmic - -install-info-target-liboffloadmic: \ - configure-target-liboffloadmic \ - info-target-liboffloadmic - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-info in $(TARGET_SUBDIR)/liboffloadmic"; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/liboffloadmic && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif target-liboffloadmic - -.PHONY: maybe-install-dvi-target-liboffloadmic install-dvi-target-liboffloadmic -maybe-install-dvi-target-liboffloadmic: -@if target-liboffloadmic -maybe-install-dvi-target-liboffloadmic: install-dvi-target-liboffloadmic - -install-dvi-target-liboffloadmic: \ - configure-target-liboffloadmic \ - dvi-target-liboffloadmic - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-dvi in $(TARGET_SUBDIR)/liboffloadmic"; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/liboffloadmic && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-dvi) \ - || exit 1 - -@endif target-liboffloadmic - -.PHONY: maybe-install-pdf-target-liboffloadmic install-pdf-target-liboffloadmic -maybe-install-pdf-target-liboffloadmic: -@if target-liboffloadmic -maybe-install-pdf-target-liboffloadmic: install-pdf-target-liboffloadmic - -install-pdf-target-liboffloadmic: \ - configure-target-liboffloadmic \ - pdf-target-liboffloadmic - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-pdf in $(TARGET_SUBDIR)/liboffloadmic"; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/liboffloadmic && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif target-liboffloadmic - -.PHONY: maybe-install-html-target-liboffloadmic install-html-target-liboffloadmic -maybe-install-html-target-liboffloadmic: -@if target-liboffloadmic -maybe-install-html-target-liboffloadmic: install-html-target-liboffloadmic - -install-html-target-liboffloadmic: \ - configure-target-liboffloadmic \ - html-target-liboffloadmic - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-html in $(TARGET_SUBDIR)/liboffloadmic"; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/liboffloadmic && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif target-liboffloadmic - -.PHONY: maybe-installcheck-target-liboffloadmic installcheck-target-liboffloadmic -maybe-installcheck-target-liboffloadmic: -@if target-liboffloadmic -maybe-installcheck-target-liboffloadmic: installcheck-target-liboffloadmic - -installcheck-target-liboffloadmic: \ - configure-target-liboffloadmic - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing installcheck in $(TARGET_SUBDIR)/liboffloadmic"; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/liboffloadmic && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif target-liboffloadmic - -.PHONY: maybe-mostlyclean-target-liboffloadmic mostlyclean-target-liboffloadmic -maybe-mostlyclean-target-liboffloadmic: -@if target-liboffloadmic -maybe-mostlyclean-target-liboffloadmic: mostlyclean-target-liboffloadmic - -mostlyclean-target-liboffloadmic: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing mostlyclean in $(TARGET_SUBDIR)/liboffloadmic"; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/liboffloadmic && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif target-liboffloadmic - -.PHONY: maybe-clean-target-liboffloadmic clean-target-liboffloadmic -maybe-clean-target-liboffloadmic: -@if target-liboffloadmic -maybe-clean-target-liboffloadmic: clean-target-liboffloadmic - -clean-target-liboffloadmic: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing clean in $(TARGET_SUBDIR)/liboffloadmic"; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/liboffloadmic && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif target-liboffloadmic - -.PHONY: maybe-distclean-target-liboffloadmic distclean-target-liboffloadmic -maybe-distclean-target-liboffloadmic: -@if target-liboffloadmic -maybe-distclean-target-liboffloadmic: distclean-target-liboffloadmic - -distclean-target-liboffloadmic: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing distclean in $(TARGET_SUBDIR)/liboffloadmic"; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/liboffloadmic && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif target-liboffloadmic - -.PHONY: maybe-maintainer-clean-target-liboffloadmic maintainer-clean-target-liboffloadmic -maybe-maintainer-clean-target-liboffloadmic: -@if target-liboffloadmic -maybe-maintainer-clean-target-liboffloadmic: maintainer-clean-target-liboffloadmic - -maintainer-clean-target-liboffloadmic: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing maintainer-clean in $(TARGET_SUBDIR)/liboffloadmic"; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/liboffloadmic && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif target-liboffloadmic - - - - - .PHONY: configure-target-libssp maybe-configure-target-libssp maybe-configure-target-libssp: @if gcc-bootstrap @@ -63863,7 +63355,6 @@ configure-stagetrain-target-libvtv: maybe-all-stagetrain-gcc configure-stagefeedback-target-libvtv: maybe-all-stagefeedback-gcc configure-stageautoprofile-target-libvtv: maybe-all-stageautoprofile-gcc configure-stageautofeedback-target-libvtv: maybe-all-stageautofeedback-gcc -configure-target-liboffloadmic: stage_last configure-target-libssp: stage_last configure-target-newlib: stage_last configure-stage1-target-libgcc: maybe-all-stage1-gcc @@ -63937,7 +63428,6 @@ configure-stageautofeedback-target-libatomic: maybe-all-stageautofeedback-gcc configure-target-libstdc++-v3: maybe-all-gcc configure-target-libsanitizer: maybe-all-gcc configure-target-libvtv: maybe-all-gcc -configure-target-liboffloadmic: maybe-all-gcc configure-target-libssp: maybe-all-gcc configure-target-newlib: maybe-all-gcc configure-target-libgcc: maybe-all-gcc @@ -65163,8 +64653,6 @@ install-target-libsanitizer: maybe-install-target-libstdc++-v3 install-target-libsanitizer: maybe-install-target-libgcc install-target-libvtv: maybe-install-target-libstdc++-v3 install-target-libvtv: maybe-install-target-libgcc -install-target-liboffloadmic: maybe-install-target-libstdc++-v3 -install-target-liboffloadmic: maybe-install-target-libgcc install-target-libitm: maybe-install-target-libgcc install-target-libobjc: maybe-install-target-libgcc install-target-libstdc++-v3: maybe-install-target-libgcc @@ -65232,8 +64720,6 @@ all-target-fastjar: maybe-all-target-zlib configure-target-libgo: maybe-all-target-libstdc++-v3 all-target-libgo: maybe-all-target-libbacktrace all-target-libgo: maybe-all-target-libatomic -configure-target-liboffloadmic: maybe-configure-target-libgomp -all-target-liboffloadmic: maybe-all-target-libgomp configure-target-newlib: maybe-all-binutils configure-target-newlib: maybe-all-ld configure-target-libgfortran: maybe-all-target-libbacktrace @@ -65324,7 +64810,6 @@ configure-stageautofeedback-target-libatomic: maybe-all-stageautofeedback-target configure-target-libstdc++-v3: maybe-all-target-libgcc configure-target-libsanitizer: maybe-all-target-libgcc configure-target-libvtv: maybe-all-target-libgcc -configure-target-liboffloadmic: maybe-all-target-libgcc configure-target-libssp: maybe-all-target-libgcc configure-target-newlib: maybe-all-target-libgcc configure-target-libbacktrace: maybe-all-target-libgcc @@ -65352,9 +64837,6 @@ configure-target-libsanitizer: maybe-all-target-newlib maybe-all-target-libgloss configure-target-libvtv: maybe-all-target-newlib maybe-all-target-libgloss -configure-target-liboffloadmic: maybe-all-target-newlib maybe-all-target-libgloss -configure-target-liboffloadmic: maybe-all-target-libstdc++-v3 - configure-target-libssp: maybe-all-target-newlib maybe-all-target-libgloss @@ -719,7 +719,6 @@ CPPFLAGS LDFLAGS CFLAGS CC -extra_liboffloadmic_configure_flags target_subdir host_subdir build_subdir @@ -805,7 +804,6 @@ enable_libquadmath_support enable_libada enable_libssp enable_libstdcxx -enable_liboffloadmic enable_bootstrap enable_pgo_build with_mpc @@ -1543,8 +1541,6 @@ Optional Features: --enable-libada build libada directory --enable-libssp build libssp directory --disable-libstdcxx do not build libstdc++-v3 directory - --enable-liboffloadmic=ARG - build liboffloadmic [ARG={no,host,target}] --enable-bootstrap enable bootstrapping [yes if native build] --enable-pgo-build[=lto] enable the PGO build @@ -2825,7 +2821,6 @@ target_libraries="target-libgcc \ target-libgloss \ target-newlib \ target-libgomp \ - target-liboffloadmic \ target-libatomic \ target-libitm \ target-libstdc++-v3 \ @@ -3199,44 +3194,6 @@ if test "${ENABLE_LIBSTDCXX}" = "no" ; then noconfigdirs="$noconfigdirs target-libstdc++-v3" fi -# If this is accelerator compiler and its target is intelmic we enable -# target liboffloadmic by default. If this is compiler with offloading -# for intelmic we enable host liboffloadmic by default. Otherwise -# liboffloadmic is disabled by default. -# Check whether --enable-liboffloadmic was given. -if test "${enable_liboffloadmic+set}" = set; then : - enableval=$enable_liboffloadmic; case "$enableval" in - no | host | target) - enable_liboffloadmic=$enableval ;; - *) - as_fn_error $? "--enable-liboffloadmic=no/host/target" "$LINENO" 5 ;; -esac -else - if test x"$enable_as_accelerator_for" != x; then - case "${target}" in - *-intelmic-* | *-intelmicemul-*) - enable_liboffloadmic=target - extra_liboffloadmic_configure_flags="--enable-liboffloadmic=target" - ;; - *) - enable_liboffloadmic=no - ;; - esac -else - case "${enable_offload_targets}" in - *-intelmic-* | *-intelmicemul-*) - enable_liboffloadmic=host - extra_liboffloadmic_configure_flags="--enable-liboffloadmic=host" - ;; - *) - enable_liboffloadmic=no - ;; - esac -fi -fi - - - # Enable libgomp by default on hosted POSIX systems, and a few others. if test x$enable_libgomp = x ; then case "${target}" in @@ -3275,25 +3232,6 @@ $as_echo "yes" >&6; } fi fi -# Disable liboffloadmic on unsupported systems. -if test -d ${srcdir}/liboffloadmic; then - if test x$enable_liboffloadmic != xno; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for liboffloadmic support" >&5 -$as_echo_n "checking for liboffloadmic support... " >&6; } - if (srcdir=${srcdir}/liboffloadmic; \ - . ${srcdir}/configure.tgt; \ - test -n "$UNSUPPORTED") - then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - noconfigdirs="$noconfigdirs target-liboffloadmic" - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - fi - fi -fi - # Disable libitm on unsupported systems. if test -d ${srcdir}/libitm; then if test x$enable_libitm = x; then @@ -9083,7 +9021,7 @@ $as_echo "using paths configured with --with-target-bdw-gc options" >&6; } fi esac -# Disable libitm, libsanitizer, libvtv, liboffloadmic if we're not building C++ +# Disable libitm, libsanitizer, libvtv if we're not building C++ case ,${enable_languages}, in *,c++,*) # Disable libitm, libsanitizer if we're not building libstdc++ @@ -9095,7 +9033,7 @@ case ,${enable_languages}, in esac ;; *) - noconfigdirs="$noconfigdirs target-liboffloadmic target-libitm target-libsanitizer target-libvtv" + noconfigdirs="$noconfigdirs target-libitm target-libsanitizer target-libvtv" ;; esac diff --git a/configure.ac b/configure.ac index 1df410b..1eb689d 100644 --- a/configure.ac +++ b/configure.ac @@ -150,7 +150,6 @@ target_libraries="target-libgcc \ target-libgloss \ target-newlib \ target-libgomp \ - target-liboffloadmic \ target-libatomic \ target-libitm \ target-libstdc++-v3 \ @@ -479,42 +478,6 @@ ENABLE_LIBSTDCXX=default) noconfigdirs="$noconfigdirs target-libstdc++-v3" fi] -# If this is accelerator compiler and its target is intelmic we enable -# target liboffloadmic by default. If this is compiler with offloading -# for intelmic we enable host liboffloadmic by default. Otherwise -# liboffloadmic is disabled by default. -AC_ARG_ENABLE([liboffloadmic], -AC_HELP_STRING([[--enable-liboffloadmic[=ARG]]], - [build liboffloadmic @<:@ARG={no,host,target}@:>@]), -[case "$enableval" in - no | host | target) - enable_liboffloadmic=$enableval ;; - *) - AC_MSG_ERROR([--enable-liboffloadmic=no/host/target]) ;; -esac], -[if test x"$enable_as_accelerator_for" != x; then - case "${target}" in - *-intelmic-* | *-intelmicemul-*) - enable_liboffloadmic=target - extra_liboffloadmic_configure_flags="--enable-liboffloadmic=target" - ;; - *) - enable_liboffloadmic=no - ;; - esac -else - case "${enable_offload_targets}" in - *-intelmic-* | *-intelmicemul-*) - enable_liboffloadmic=host - extra_liboffloadmic_configure_flags="--enable-liboffloadmic=host" - ;; - *) - enable_liboffloadmic=no - ;; - esac -fi]) -AC_SUBST(extra_liboffloadmic_configure_flags) - # Enable libgomp by default on hosted POSIX systems, and a few others. if test x$enable_libgomp = x ; then case "${target}" in @@ -550,22 +513,6 @@ if test -d ${srcdir}/libatomic; then fi fi -# Disable liboffloadmic on unsupported systems. -if test -d ${srcdir}/liboffloadmic; then - if test x$enable_liboffloadmic != xno; then - AC_MSG_CHECKING([for liboffloadmic support]) - if (srcdir=${srcdir}/liboffloadmic; \ - . ${srcdir}/configure.tgt; \ - test -n "$UNSUPPORTED") - then - AC_MSG_RESULT([no]) - noconfigdirs="$noconfigdirs target-liboffloadmic" - else - AC_MSG_RESULT([yes]) - fi - fi -fi - # Disable libitm on unsupported systems. if test -d ${srcdir}/libitm; then if test x$enable_libitm = x; then @@ -2334,7 +2281,7 @@ case ,${enable_languages},:${enable_objc_gc} in *,objc,*:yes|*,objc,*:auto) fi esac -# Disable libitm, libsanitizer, libvtv, liboffloadmic if we're not building C++ +# Disable libitm, libsanitizer, libvtv if we're not building C++ case ,${enable_languages}, in *,c++,*) # Disable libitm, libsanitizer if we're not building libstdc++ @@ -2346,7 +2293,7 @@ case ,${enable_languages}, in esac ;; *) - noconfigdirs="$noconfigdirs target-liboffloadmic target-libitm target-libsanitizer target-libvtv" + noconfigdirs="$noconfigdirs target-libitm target-libsanitizer target-libvtv" ;; esac diff --git a/contrib/gcc-changelog/git_commit.py b/contrib/gcc-changelog/git_commit.py index 7f6ff87..1f6e192 100755 --- a/contrib/gcc-changelog/git_commit.py +++ b/contrib/gcc-changelog/git_commit.py @@ -67,7 +67,6 @@ default_changelog_locations = { 'libiberty', 'libitm', 'libobjc', - 'liboffloadmic', 'libphobos', 'libquadmath', 'libsanitizer', diff --git a/contrib/gcc_update b/contrib/gcc_update index 18c7ec4..c5630df 100755 --- a/contrib/gcc_update +++ b/contrib/gcc_update @@ -162,12 +162,6 @@ libsanitizer/sanitizer_common/Makefile.in: libsanitizer/sanitizer_common/Makefil libvtv/aclocal.m4: libvtv/configure.ac libvtv/acinclude.m4 libvtv/Makefile.in: libvtv/Makefile.am libvtv/aclocal.m4 libvtv/configure: libvtv/configure.ac libvtv/aclocal.m4 -liboffloadmic/aclocal.m4: liboffloadmic/configure.ac -liboffloadmic/Makefile.in: liboffloadmic/Makefile.am -liboffloadmic/configure: liboffloadmic/configure.ac -liboffloadmic/plugin/aclocal.m4: liboffloadmic/plugin/configure.ac -liboffloadmic/plugin/Makefile.in: liboffloadmic/plugin/Makefile.am -liboffloadmic/plugin/configure: liboffloadmic/plugin/configure.ac libbacktrace/aclocal.m4: libbacktrace/configure.ac libbacktrace/Makefile.in: libbacktrace/Makefile.am libbacktrace/aclocal.m4 libbacktrace/configure: libbacktrace/configure.ac libbacktrace/aclocal.m4 diff --git a/contrib/update-copyright.py b/contrib/update-copyright.py index 2ec2a60..76614ff 100755 --- a/contrib/update-copyright.py +++ b/contrib/update-copyright.py @@ -760,7 +760,6 @@ class GCCCmdLine (CmdLine): self.add_dir ('libiberty') self.add_dir ('libitm') self.add_dir ('libobjc') - # liboffloadmic is imported from upstream. self.add_dir ('libphobos', LibPhobosFilter()) self.add_dir ('libquadmath') # libsanitizer is imported from upstream. diff --git a/gcc/config.gcc b/gcc/config.gcc index 1191a0d..f41c095 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -3552,14 +3552,6 @@ case ${target} in ;; esac -# Build mkoffload tool -case ${target} in -*-intelmic-* | *-intelmicemul-*) - tmake_file="${tmake_file} i386/t-intelmic" - tm_file="${tm_file} i386/intelmic-offload.h" - ;; -esac - if [ "$target_has_targetcm" = "no" ]; then c_target_objs="$c_target_objs default-c.o" cxx_target_objs="$cxx_target_objs default-c.o" diff --git a/gcc/config/i386/i386-options.cc b/gcc/config/i386/i386-options.cc index bbb8307..2c16dc0 100644 --- a/gcc/config/i386/i386-options.cc +++ b/gcc/config/i386/i386-options.cc @@ -314,10 +314,6 @@ ix86_omp_device_kind_arch_isa (enum omp_device_kind_arch_isa trait, case omp_device_kind: return strcmp (name, "cpu") == 0; case omp_device_arch: -#ifdef ACCEL_COMPILER - if (strcmp (name, "intel_mic") == 0) - return 1; -#endif if (strcmp (name, "x86") == 0) return 1; if (TARGET_64BIT) diff --git a/gcc/config/i386/intelmic-mkoffload.cc b/gcc/config/i386/intelmic-mkoffload.cc deleted file mode 100644 index 5deddff..0000000 --- a/gcc/config/i386/intelmic-mkoffload.cc +++ /dev/null @@ -1,728 +0,0 @@ -/* Offload image generation tool for Intel MIC devices. - - Copyright (C) 2014-2022 Free Software Foundation, Inc. - - Contributed by Ilya Verbin <ilya.verbin@intel.com>. - - This file is part of GCC. - - GCC 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, or (at your option) - any later version. - - GCC 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 GCC; see the file COPYING3. If not see - <http://www.gnu.org/licenses/>. */ - -#define IN_TARGET_CODE 1 - -#include "config.h" -#include <libgen.h> -#include "system.h" -#include "coretypes.h" -#include "obstack.h" -#include "intl.h" -#include "diagnostic.h" -#include "collect-utils.h" -#include "intelmic-offload.h" - -const char tool_name[] = "intelmic mkoffload"; - -const char image_section_name[] = ".gnu.offload_images"; -const char *symbols[3] = { "__offload_image_intelmic_start", - "__offload_image_intelmic_end", - "__offload_image_intelmic_size" }; -const char *out_obj_filename = NULL; - -int num_temps = 0; -const int MAX_NUM_TEMPS = 10; -const char *temp_files[MAX_NUM_TEMPS]; - -enum offload_abi offload_abi = OFFLOAD_ABI_UNSET; - -/* Delete tempfiles and exit function. */ - -void -tool_cleanup (bool from_signal ATTRIBUTE_UNUSED) -{ - for (int i = 0; i < num_temps; i++) - maybe_unlink (temp_files[i]); -} - -static void -mkoffload_cleanup (void) -{ - tool_cleanup (false); -} - -/* Unlink FILE unless requested otherwise. */ - -void -maybe_unlink (const char *file) -{ - if (!save_temps) - { - if (unlink_if_ordinary (file) - && errno != ENOENT) - fatal_error (input_location, "deleting file %s: %m", file); - } - else if (verbose) - fprintf (stderr, "[Leaving %s]\n", file); -} - -/* Add or change the value of an environment variable, outputting the - change to standard error if in verbose mode. */ -static void -xputenv (const char *string) -{ - if (verbose) - fprintf (stderr, "%s\n", string); - putenv (CONST_CAST (char *, string)); -} - -/* Parse STR, saving found tokens into PVALUES and return their number. - Tokens are assumed to be delimited by ':'. */ -static unsigned -parse_env_var (const char *str, char ***pvalues) -{ - const char *curval, *nextval; - char **values; - unsigned num = 1, i; - - curval = strchr (str, ':'); - while (curval) - { - num++; - curval = strchr (curval + 1, ':'); - } - - values = (char **) xmalloc (num * sizeof (char *)); - curval = str; - nextval = strchr (curval, ':'); - if (nextval == NULL) - nextval = strchr (curval, '\0'); - - for (i = 0; i < num; i++) - { - int l = nextval - curval; - values[i] = (char *) xmalloc (l + 1); - memcpy (values[i], curval, l); - values[i][l] = 0; - curval = nextval + 1; - nextval = strchr (curval, ':'); - if (nextval == NULL) - nextval = strchr (curval, '\0'); - } - *pvalues = values; - return num; -} - -/* Auxiliary function that frees elements of PTR and PTR itself. - N is number of elements to be freed. If PTR is NULL, nothing is freed. - If an element is NULL, subsequent elements are not freed. */ -static void -free_array_of_ptrs (void **ptr, unsigned n) -{ - unsigned i; - if (!ptr) - return; - for (i = 0; i < n; i++) - { - if (!ptr[i]) - break; - free (ptr[i]); - } - free (ptr); - return; -} - -/* Check whether NAME can be accessed in MODE. This is like access, - except that it never considers directories to be executable. */ -static int -access_check (const char *name, int mode) -{ - if (mode == X_OK) - { - struct stat st; - - if (stat (name, &st) < 0 || S_ISDIR (st.st_mode)) - return -1; - } - - return access (name, mode); -} - -/* Find target compiler using a path from COLLECT_GCC or COMPILER_PATH. */ -static char * -find_target_compiler (const char *name) -{ - bool found = false; - char **paths = NULL; - unsigned n_paths, i; - char *target_compiler; - const char *collect_gcc = getenv ("COLLECT_GCC"); - const char *gcc_path = dirname (ASTRDUP (collect_gcc)); - const char *gcc_exec = basename (ASTRDUP (collect_gcc)); - - if (strcmp (gcc_exec, collect_gcc) == 0) - { - /* collect_gcc has no path, so it was found in PATH. Make sure we also - find accel-gcc in PATH. */ - target_compiler = XDUPVEC (char, name, strlen (name) + 1); - found = true; - goto out; - } - - target_compiler = concat (gcc_path, "/", name, NULL); - if (access_check (target_compiler, X_OK) == 0) - { - found = true; - goto out; - } - - n_paths = parse_env_var (getenv ("COMPILER_PATH"), &paths); - for (i = 0; i < n_paths; i++) - { - size_t len = strlen (paths[i]) + 1 + strlen (name) + 1; - target_compiler = XRESIZEVEC (char, target_compiler, len); - sprintf (target_compiler, "%s/%s", paths[i], name); - if (access_check (target_compiler, X_OK) == 0) - { - found = true; - break; - } - } - -out: - free_array_of_ptrs ((void **) paths, n_paths); - return found ? target_compiler : NULL; -} - -static void -compile_for_target (struct obstack *argv_obstack) -{ - switch (offload_abi) - { - case OFFLOAD_ABI_LP64: - obstack_ptr_grow (argv_obstack, "-m64"); - break; - case OFFLOAD_ABI_ILP32: - obstack_ptr_grow (argv_obstack, "-m32"); - break; - default: - gcc_unreachable (); - } - obstack_ptr_grow (argv_obstack, NULL); - char **argv = XOBFINISH (argv_obstack, char **); - - /* Save environment variables. */ - const char *epath = getenv ("GCC_EXEC_PREFIX"); - const char *cpath = getenv ("COMPILER_PATH"); - const char *lpath = getenv ("LIBRARY_PATH"); - const char *rpath = getenv ("LD_RUN_PATH"); - unsetenv ("GCC_EXEC_PREFIX"); - unsetenv ("COMPILER_PATH"); - unsetenv ("LIBRARY_PATH"); - unsetenv ("LD_RUN_PATH"); - - fork_execute (argv[0], argv, false, NULL); - obstack_free (argv_obstack, NULL); - - /* Restore environment variables. */ - xputenv (concat ("GCC_EXEC_PREFIX=", epath, NULL)); - xputenv (concat ("COMPILER_PATH=", cpath, NULL)); - xputenv (concat ("LIBRARY_PATH=", lpath, NULL)); - xputenv (concat ("LD_RUN_PATH=", rpath, NULL)); -} - -/* Generates object file with the descriptor for the target library. */ -static const char * -generate_target_descr_file (const char *target_compiler) -{ - char *dump_filename = concat (dumppfx, "_target_descr.c", NULL); - const char *src_filename = save_temps - ? dump_filename - : make_temp_file ("_target_descr.c"); - const char *obj_filename = save_temps - ? concat (dumppfx, "_target_descr.o", NULL) - : make_temp_file ("_target_descr.o"); - temp_files[num_temps++] = src_filename; - temp_files[num_temps++] = obj_filename; - FILE *src_file = fopen (src_filename, "w"); - - if (!src_file) - fatal_error (input_location, "cannot open '%s'", src_filename); - - fprintf (src_file, - "extern const void *const __offload_funcs_end[];\n" - "extern const void *const __offload_vars_end[];\n\n" - - "const void *const __offload_func_table[0]\n" - "__attribute__ ((__used__, visibility (\"hidden\"),\n" - "section (\".gnu.offload_funcs\"))) = { };\n\n" - - "const void *const __offload_var_table[0]\n" - "__attribute__ ((__used__, visibility (\"hidden\"),\n" - "section (\".gnu.offload_vars\"))) = { };\n\n" - - "const void *const __OFFLOAD_TARGET_TABLE__[]\n" - "__attribute__ ((__used__, visibility (\"hidden\"))) = {\n" - " &__offload_func_table, &__offload_funcs_end,\n" - " &__offload_var_table, &__offload_vars_end\n" - "};\n\n"); - - fprintf (src_file, - "#ifdef __cplusplus\n" - "extern \"C\"\n" - "#endif\n" - "void target_register_lib (const void *);\n\n" - - "__attribute__((constructor))\n" - "static void\n" - "init (void)\n" - "{\n" - " target_register_lib (__OFFLOAD_TARGET_TABLE__);\n" - "}\n"); - fclose (src_file); - - struct obstack argv_obstack; - obstack_init (&argv_obstack); - obstack_ptr_grow (&argv_obstack, target_compiler); - if (save_temps) - obstack_ptr_grow (&argv_obstack, "-save-temps"); - if (verbose) - obstack_ptr_grow (&argv_obstack, "-v"); - obstack_ptr_grow (&argv_obstack, "-dumpdir"); - obstack_ptr_grow (&argv_obstack, ""); - obstack_ptr_grow (&argv_obstack, "-dumpbase"); - obstack_ptr_grow (&argv_obstack, dump_filename); - obstack_ptr_grow (&argv_obstack, "-dumpbase-ext"); - obstack_ptr_grow (&argv_obstack, ".c"); - obstack_ptr_grow (&argv_obstack, "-c"); - obstack_ptr_grow (&argv_obstack, "-shared"); - obstack_ptr_grow (&argv_obstack, "-fPIC"); - obstack_ptr_grow (&argv_obstack, src_filename); - obstack_ptr_grow (&argv_obstack, "-o"); - obstack_ptr_grow (&argv_obstack, obj_filename); - compile_for_target (&argv_obstack); - - return obj_filename; -} - -/* Generates object file with __offload_*_end symbols for the target - library. */ -static const char * -generate_target_offloadend_file (const char *target_compiler) -{ - char *dump_filename = concat (dumppfx, "_target_offloadend.c", NULL); - const char *src_filename = save_temps - ? dump_filename - : make_temp_file ("_target_offloadend.c"); - const char *obj_filename = save_temps - ? concat (dumppfx, "_target_offloadend.o", NULL) - : make_temp_file ("_target_offloadend.o"); - temp_files[num_temps++] = src_filename; - temp_files[num_temps++] = obj_filename; - FILE *src_file = fopen (src_filename, "w"); - - if (!src_file) - fatal_error (input_location, "cannot open '%s'", src_filename); - - fprintf (src_file, - "const void *const __offload_funcs_end[0]\n" - "__attribute__ ((__used__, visibility (\"hidden\"),\n" - "section (\".gnu.offload_funcs\"))) = { };\n\n" - - "const void *const __offload_vars_end[0]\n" - "__attribute__ ((__used__, visibility (\"hidden\"),\n" - "section (\".gnu.offload_vars\"))) = { };\n"); - fclose (src_file); - - struct obstack argv_obstack; - obstack_init (&argv_obstack); - obstack_ptr_grow (&argv_obstack, target_compiler); - if (save_temps) - obstack_ptr_grow (&argv_obstack, "-save-temps"); - if (verbose) - obstack_ptr_grow (&argv_obstack, "-v"); - obstack_ptr_grow (&argv_obstack, "-dumpdir"); - obstack_ptr_grow (&argv_obstack, ""); - obstack_ptr_grow (&argv_obstack, "-dumpbase"); - obstack_ptr_grow (&argv_obstack, dump_filename); - obstack_ptr_grow (&argv_obstack, "-dumpbase-ext"); - obstack_ptr_grow (&argv_obstack, ".c"); - obstack_ptr_grow (&argv_obstack, "-c"); - obstack_ptr_grow (&argv_obstack, "-shared"); - obstack_ptr_grow (&argv_obstack, "-fPIC"); - obstack_ptr_grow (&argv_obstack, src_filename); - obstack_ptr_grow (&argv_obstack, "-o"); - obstack_ptr_grow (&argv_obstack, obj_filename); - compile_for_target (&argv_obstack); - - return obj_filename; -} - -/* Generates object file with the host side descriptor. */ -static const char * -generate_host_descr_file (const char *host_compiler, uint32_t omp_requires) -{ - char *dump_filename = concat (dumppfx, "_host_descr.c", NULL); - const char *src_filename = save_temps - ? dump_filename - : make_temp_file ("_host_descr.c"); - const char *obj_filename = save_temps - ? concat (dumppfx, "_host_descr.o", NULL) - : make_temp_file ("_host_descr.o"); - temp_files[num_temps++] = src_filename; - temp_files[num_temps++] = obj_filename; - FILE *src_file = fopen (src_filename, "w"); - - if (!src_file) - fatal_error (input_location, "cannot open '%s'", src_filename); - - fprintf (src_file, "#include <stdint.h>\n\n"); - - fprintf (src_file, - "extern const void *const __OFFLOAD_TABLE__;\n" - "extern const void *const __offload_image_intelmic_start;\n" - "extern const void *const __offload_image_intelmic_end;\n\n" - - "static const struct intelmic_data {\n" - " uintptr_t omp_requires_mask;\n" - " const void *const image_start;\n" - " const void *const image_end;\n" - "} intelmic_data = {\n" - " %d,\n" - " &__offload_image_intelmic_start, &__offload_image_intelmic_end\n" - "};\n\n", omp_requires); - - fprintf (src_file, - "#ifdef __cplusplus\n" - "extern \"C\"\n" - "#endif\n" - "void GOMP_offload_register_ver (unsigned, const void *, int, const void *);\n" - "#ifdef __cplusplus\n" - "extern \"C\"\n" - "#endif\n" - "void GOMP_offload_unregister_ver (unsigned, const void *, int, const void *);\n\n" - - "__attribute__((constructor))\n" - "static void\n" - "init (void)\n" - "{\n" - " GOMP_offload_register_ver (%#x, &__OFFLOAD_TABLE__, %d, &intelmic_data);\n" - "}\n\n", - GOMP_VERSION_PACK (GOMP_VERSION, GOMP_VERSION_INTEL_MIC), - GOMP_DEVICE_INTEL_MIC); - - fprintf (src_file, - "__attribute__((destructor))\n" - "static void\n" - "fini (void)\n" - "{\n" - " GOMP_offload_unregister_ver (%#x, &__OFFLOAD_TABLE__, %d, &intelmic_data);\n" - "}\n", - GOMP_VERSION_PACK (GOMP_VERSION, GOMP_VERSION_INTEL_MIC), - GOMP_DEVICE_INTEL_MIC); - - fclose (src_file); - - struct obstack argv_obstack; - obstack_init (&argv_obstack); - obstack_ptr_grow (&argv_obstack, host_compiler); - if (save_temps) - obstack_ptr_grow (&argv_obstack, "-save-temps"); - if (verbose) - obstack_ptr_grow (&argv_obstack, "-v"); - obstack_ptr_grow (&argv_obstack, "-dumpdir"); - obstack_ptr_grow (&argv_obstack, ""); - obstack_ptr_grow (&argv_obstack, "-dumpbase"); - obstack_ptr_grow (&argv_obstack, dump_filename); - obstack_ptr_grow (&argv_obstack, "-dumpbase-ext"); - obstack_ptr_grow (&argv_obstack, ".c"); - obstack_ptr_grow (&argv_obstack, "-c"); - obstack_ptr_grow (&argv_obstack, "-fPIC"); - obstack_ptr_grow (&argv_obstack, "-shared"); - switch (offload_abi) - { - case OFFLOAD_ABI_LP64: - obstack_ptr_grow (&argv_obstack, "-m64"); - break; - case OFFLOAD_ABI_ILP32: - obstack_ptr_grow (&argv_obstack, "-m32"); - break; - default: - gcc_unreachable (); - } - obstack_ptr_grow (&argv_obstack, src_filename); - obstack_ptr_grow (&argv_obstack, "-o"); - obstack_ptr_grow (&argv_obstack, obj_filename); - obstack_ptr_grow (&argv_obstack, NULL); - - char **argv = XOBFINISH (&argv_obstack, char **); - fork_execute (argv[0], argv, false, NULL); - obstack_free (&argv_obstack, NULL); - - return obj_filename; -} - -static const char * -prepare_target_image (const char *target_compiler, int argc, char **argv, uint32_t *omp_requires) -{ - const char *target_descr_filename - = generate_target_descr_file (target_compiler); - const char *target_offloadend_filename - = generate_target_offloadend_file (target_compiler); - - char *opt1 - = XALLOCAVEC (char, sizeof ("-Wl,") + strlen (target_descr_filename)); - char *opt2 - = XALLOCAVEC (char, sizeof ("-Wl,") + strlen (target_offloadend_filename)); - sprintf (opt1, "-Wl,%s", target_descr_filename); - sprintf (opt2, "-Wl,%s", target_offloadend_filename); - - char *dump_filename = concat (dumppfx, ".mkoffload", NULL); - const char *target_so_filename = save_temps - ? concat (dumppfx, "_offload_intelmic.so", NULL) - : make_temp_file ("_offload_intelmic.so"); - temp_files[num_temps++] = target_so_filename; - struct obstack argv_obstack; - obstack_init (&argv_obstack); - obstack_ptr_grow (&argv_obstack, target_compiler); - if (save_temps) - obstack_ptr_grow (&argv_obstack, "-save-temps"); - if (verbose) - obstack_ptr_grow (&argv_obstack, "-v"); - obstack_ptr_grow (&argv_obstack, "-xlto"); - obstack_ptr_grow (&argv_obstack, opt1); - for (int i = 1; i < argc; i++) - { - if (!strcmp (argv[i], "-o") && i + 1 != argc) - ++i; - else - obstack_ptr_grow (&argv_obstack, argv[i]); - } - obstack_ptr_grow (&argv_obstack, opt2); - /* NB: Put -fPIC and -shared the last to create shared library. */ - obstack_ptr_grow (&argv_obstack, "-fPIC"); - obstack_ptr_grow (&argv_obstack, "-shared"); - obstack_ptr_grow (&argv_obstack, "-dumpdir"); - obstack_ptr_grow (&argv_obstack, ""); - obstack_ptr_grow (&argv_obstack, "-dumpbase"); - obstack_ptr_grow (&argv_obstack, dump_filename); - obstack_ptr_grow (&argv_obstack, "-dumpbase-ext"); - obstack_ptr_grow (&argv_obstack, ""); - obstack_ptr_grow (&argv_obstack, "-o"); - obstack_ptr_grow (&argv_obstack, target_so_filename); - - char *omp_requires_file; - if (save_temps) - omp_requires_file = concat (dumppfx, ".mkoffload.omp_requires", NULL); - else - omp_requires_file = make_temp_file (".mkoffload.omp_requires"); - temp_files[num_temps++] = omp_requires_file; - xputenv (concat ("GCC_OFFLOAD_OMP_REQUIRES_FILE=", omp_requires_file, NULL)); - - compile_for_target (&argv_obstack); - - unsetenv("GCC_OFFLOAD_OMP_REQUIRES_FILE"); - FILE *in = fopen (omp_requires_file, "rb"); - if (!in) - fatal_error (input_location, "cannot open omp_requires file %qs", - omp_requires_file); - if (fread (omp_requires, sizeof (*omp_requires), 1, in) != 1) - fatal_error (input_location, "cannot read omp_requires file %qs", - omp_requires_file); - fclose (in); - - /* Run objcopy. */ - char *rename_section_opt - = XALLOCAVEC (char, sizeof (".data=") + strlen (image_section_name)); - sprintf (rename_section_opt, ".data=%s", image_section_name); - obstack_init (&argv_obstack); - obstack_ptr_grow (&argv_obstack, "objcopy"); - obstack_ptr_grow (&argv_obstack, "-B"); - obstack_ptr_grow (&argv_obstack, "i386"); - obstack_ptr_grow (&argv_obstack, "-I"); - obstack_ptr_grow (&argv_obstack, "binary"); - obstack_ptr_grow (&argv_obstack, "-O"); - switch (offload_abi) - { - case OFFLOAD_ABI_LP64: - obstack_ptr_grow (&argv_obstack, "elf64-x86-64"); - break; - case OFFLOAD_ABI_ILP32: - obstack_ptr_grow (&argv_obstack, "elf32-i386"); - break; - default: - gcc_unreachable (); - } - obstack_ptr_grow (&argv_obstack, target_so_filename); - obstack_ptr_grow (&argv_obstack, "--rename-section"); - obstack_ptr_grow (&argv_obstack, rename_section_opt); - obstack_ptr_grow (&argv_obstack, NULL); - char **new_argv = XOBFINISH (&argv_obstack, char **); - fork_execute (new_argv[0], new_argv, false, NULL); - obstack_free (&argv_obstack, NULL); - - /* Objcopy has created symbols, containing the input file name with - non-alphanumeric characters replaced by underscores. - We are going to rename these new symbols. */ - size_t symbol_name_len = strlen (target_so_filename); - char *symbol_name = XALLOCAVEC (char, symbol_name_len + 1); - for (size_t i = 0; i < symbol_name_len; i++) - { - char c = target_so_filename[i]; - if (!ISALNUM (c)) - c = '_'; - symbol_name[i] = c; - } - symbol_name[symbol_name_len] = '\0'; - - char *opt_for_objcopy[3]; - opt_for_objcopy[0] = XALLOCAVEC (char, sizeof ("_binary__start=") - + symbol_name_len - + strlen (symbols[0])); - opt_for_objcopy[1] = XALLOCAVEC (char, sizeof ("_binary__end=") - + symbol_name_len - + strlen (symbols[1])); - opt_for_objcopy[2] = XALLOCAVEC (char, sizeof ("_binary__size=") - + symbol_name_len - + strlen (symbols[2])); - sprintf (opt_for_objcopy[0], "_binary_%s_start=%s", symbol_name, symbols[0]); - sprintf (opt_for_objcopy[1], "_binary_%s_end=%s", symbol_name, symbols[1]); - sprintf (opt_for_objcopy[2], "_binary_%s_size=%s", symbol_name, symbols[2]); - - obstack_init (&argv_obstack); - obstack_ptr_grow (&argv_obstack, "objcopy"); - obstack_ptr_grow (&argv_obstack, target_so_filename); - obstack_ptr_grow (&argv_obstack, "--redefine-sym"); - obstack_ptr_grow (&argv_obstack, opt_for_objcopy[0]); - obstack_ptr_grow (&argv_obstack, "--redefine-sym"); - obstack_ptr_grow (&argv_obstack, opt_for_objcopy[1]); - obstack_ptr_grow (&argv_obstack, "--redefine-sym"); - obstack_ptr_grow (&argv_obstack, opt_for_objcopy[2]); - obstack_ptr_grow (&argv_obstack, NULL); - new_argv = XOBFINISH (&argv_obstack, char **); - fork_execute (new_argv[0], new_argv, false, NULL); - obstack_free (&argv_obstack, NULL); - - return target_so_filename; -} - -int -main (int argc, char **argv) -{ - progname = "mkoffload-intelmic"; - gcc_init_libintl (); - diagnostic_initialize (global_dc, 0); - - if (atexit (mkoffload_cleanup) != 0) - fatal_error (input_location, "atexit failed"); - - const char *host_compiler = getenv ("COLLECT_GCC"); - if (!host_compiler) - fatal_error (input_location, "COLLECT_GCC must be set"); - - const char *target_driver_name = GCC_INSTALL_NAME; - char *target_compiler = find_target_compiler (target_driver_name); - if (target_compiler == NULL) - fatal_error (input_location, "offload compiler %s not found", - target_driver_name); - - /* We may be called with all the arguments stored in some file and - passed with @file. Expand them into argv before processing. */ - expandargv (&argc, &argv); - - /* Scan the argument vector. */ - for (int i = 1; i < argc; i++) - { -#define STR "-foffload-abi=" - if (startswith (argv[i], STR)) - { - if (strcmp (argv[i] + strlen (STR), "lp64") == 0) - offload_abi = OFFLOAD_ABI_LP64; - else if (strcmp (argv[i] + strlen (STR), "ilp32") == 0) - offload_abi = OFFLOAD_ABI_ILP32; - else - fatal_error (input_location, - "unrecognizable argument of option " STR); - } -#undef STR - else if (strcmp (argv[i], "-save-temps") == 0) - save_temps = true; - else if (strcmp (argv[i], "-v") == 0) - verbose = true; - else if (strcmp (argv[i], "-dumpbase") == 0 - && i + 1 < argc) - dumppfx = argv[++i]; - else if (strcmp (argv[i], "-o") == 0 - && i + 1 < argc) - out_obj_filename = argv[++i]; - } - - if (!out_obj_filename) - fatal_error (input_location, "output file not specified"); - - if (!dumppfx) - dumppfx = out_obj_filename; - - uint32_t omp_requires; - - const char *target_so_filename - = prepare_target_image (target_compiler, argc, argv, &omp_requires); - - const char *host_descr_filename - = generate_host_descr_file (host_compiler, omp_requires); - - /* Perform partial linking for the target image and host side descriptor. - As a result we'll get a finalized object file with all offload data. */ - struct obstack argv_obstack; - obstack_init (&argv_obstack); - obstack_ptr_grow (&argv_obstack, "ld"); - obstack_ptr_grow (&argv_obstack, "-m"); - switch (offload_abi) - { - case OFFLOAD_ABI_LP64: - obstack_ptr_grow (&argv_obstack, "elf_x86_64"); - break; - case OFFLOAD_ABI_ILP32: - obstack_ptr_grow (&argv_obstack, "elf_i386"); - break; - default: - gcc_unreachable (); - } - obstack_ptr_grow (&argv_obstack, "--relocatable"); - obstack_ptr_grow (&argv_obstack, host_descr_filename); - obstack_ptr_grow (&argv_obstack, target_so_filename); - obstack_ptr_grow (&argv_obstack, "-o"); - obstack_ptr_grow (&argv_obstack, out_obj_filename); - obstack_ptr_grow (&argv_obstack, NULL); - char **new_argv = XOBFINISH (&argv_obstack, char **); - fork_execute (new_argv[0], new_argv, false, NULL); - obstack_free (&argv_obstack, NULL); - - /* Run objcopy on the resultant object file to localize generated symbols - to avoid conflicting between different DSO and an executable. */ - obstack_init (&argv_obstack); - obstack_ptr_grow (&argv_obstack, "objcopy"); - obstack_ptr_grow (&argv_obstack, "-L"); - obstack_ptr_grow (&argv_obstack, symbols[0]); - obstack_ptr_grow (&argv_obstack, "-L"); - obstack_ptr_grow (&argv_obstack, symbols[1]); - obstack_ptr_grow (&argv_obstack, "-L"); - obstack_ptr_grow (&argv_obstack, symbols[2]); - obstack_ptr_grow (&argv_obstack, out_obj_filename); - obstack_ptr_grow (&argv_obstack, NULL); - new_argv = XOBFINISH (&argv_obstack, char **); - fork_execute (new_argv[0], new_argv, false, NULL); - obstack_free (&argv_obstack, NULL); - - return 0; -} diff --git a/gcc/config/i386/intelmic-offload.h b/gcc/config/i386/intelmic-offload.h deleted file mode 100644 index 42ce0d8..0000000 --- a/gcc/config/i386/intelmic-offload.h +++ /dev/null @@ -1,35 +0,0 @@ -/* Support for Intel MIC offloading. - - Copyright (C) 2014-2022 Free Software Foundation, Inc. - - This file is part of GCC. - - GCC 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, or (at your option) - any later version. - - GCC 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. - - Under Section 7 of GPL version 3, you are granted additional - permissions described in the GCC Runtime Library Exception, version - 3.1, as published by the Free Software Foundation. - - You should have received a copy of the GNU General Public License and - a copy of the GCC Runtime Library Exception along with this program; - see the files COPYING3 and COPYING.RUNTIME respectively. If not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef INTELMIC_OFFLOAD_H -#define INTELMIC_OFFLOAD_H - -/* Support for OpenACC acc_on_device. */ - -#include "gomp-constants.h" - -#define ACCEL_COMPILER_acc_device GOMP_DEVICE_INTEL_MIC - -#endif diff --git a/gcc/config/i386/t-intelmic b/gcc/config/i386/t-intelmic deleted file mode 100644 index 95d7e53..0000000 --- a/gcc/config/i386/t-intelmic +++ /dev/null @@ -1,10 +0,0 @@ -CFLAGS-mkoffload.o += $(DRIVER_DEFINES) -DGCC_INSTALL_NAME=\"$(GCC_INSTALL_NAME)\" - -mkoffload.o: $(srcdir)/config/i386/intelmic-mkoffload.cc - $(COMPILE) $< - $(POSTCOMPILE) -ALL_HOST_OBJS += mkoffload.o - -mkoffload$(exeext): mkoffload.o collect-utils.o libcommon-target.a $(LIBIBERTY) $(LIBDEPS) - $(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \ - mkoffload.o collect-utils.o libcommon-target.a $(LIBIBERTY) $(LIBS) diff --git a/gcc/config/i386/t-omp-device b/gcc/config/i386/t-omp-device deleted file mode 100644 index cfb41ed..0000000 --- a/gcc/config/i386/t-omp-device +++ /dev/null @@ -1,6 +0,0 @@ -omp-device-properties-i386: $(srcdir)/config/i386/i386-options.cc - echo kind: cpu > $@ - echo arch: intel_mic x86 x86_64 i386 i486 i586 i686 ia32 >> $@ - echo isa: sse4 `sed -n '/^static struct ix86_target_opts isa2\?_opts\[\] =/,/^};/p' \ - $(srcdir)/config/i386/i386-options.cc | \ - sed -n 's/",.*$$//;s/^ { "-m//p'` >> $@ diff --git a/gcc/configure b/gcc/configure index e55c656..aa09609 100755 --- a/gcc/configure +++ b/gcc/configure @@ -8253,12 +8253,6 @@ if test x"$enable_as_accelerator_for" != x; then $as_echo "#define ACCEL_COMPILER 1" >>confdefs.h enable_as_accelerator=yes - case "${target}" in - *-intelmicemul-*) - # In this case we expect offload compiler to be built as native, so we - # need to rename the driver to avoid clashes with host's drivers. - program_transform_name="s&^&${target}-&" ;; - esac sedscript="s#${target_noncanonical}#${enable_as_accelerator_for}-accel-${target_noncanonical}#" program_transform_name=`echo $program_transform_name | sed $sedscript` accel_dir_suffix=/accel/${target_noncanonical} @@ -8273,10 +8267,6 @@ for tgt in `echo $enable_offload_targets | sed 's/,/ /g'`; do enable_offloading=1 case "$tgt" in - *-intelmic-* | *-intelmicemul-*) - omp_device_property=omp-device-properties-i386 - omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/i386/t-omp-device" - ;; amdgcn*) omp_device_property=omp-device-properties-gcn omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/gcn/t-omp-device" @@ -19720,7 +19710,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 19723 "configure" +#line 19713 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -19826,7 +19816,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 19829 "configure" +#line 19819 "configure" #include "confdefs.h" #if HAVE_DLFCN_H diff --git a/gcc/configure.ac b/gcc/configure.ac index 9ca7779..7c55bff 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -1136,12 +1136,6 @@ if test x"$enable_as_accelerator_for" != x; then AC_DEFINE(ACCEL_COMPILER, 1, [Define if this compiler should be built as the offload target compiler.]) enable_as_accelerator=yes - case "${target}" in - *-intelmicemul-*) - # In this case we expect offload compiler to be built as native, so we - # need to rename the driver to avoid clashes with host's drivers. - program_transform_name="s&^&${target}-&" ;; - esac sedscript="s#${target_noncanonical}#${enable_as_accelerator_for}-accel-${target_noncanonical}#" program_transform_name=`echo $program_transform_name | sed $sedscript` accel_dir_suffix=/accel/${target_noncanonical} @@ -1156,10 +1150,6 @@ for tgt in `echo $enable_offload_targets | sed 's/,/ /g'`; do enable_offloading=1 case "$tgt" in - *-intelmic-* | *-intelmicemul-*) - omp_device_property=omp-device-properties-i386 - omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/i386/t-omp-device" - ;; amdgcn*) omp_device_property=omp-device-properties-gcn omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/gcn/t-omp-device" diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi index c1876f2..a01b805 100644 --- a/gcc/doc/install.texi +++ b/gcc/doc/install.texi @@ -2337,7 +2337,7 @@ specifying paths @var{path1}, @dots{}, @var{pathN}. @smallexample % @var{srcdir}/configure \ - --enable-offload-targets=x86_64-intelmicemul-linux-gnu=/path/to/x86_64/compiler,nvptx-none + --enable-offload-targets=amdgcn-amdhsa,nvptx-none @end smallexample @item --enable-offload-defaulted diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi index 5de5e95..17a6f21 100644 --- a/gcc/doc/sourcebuild.texi +++ b/gcc/doc/sourcebuild.texi @@ -116,9 +116,6 @@ The runtime support library for transactional memory. @item libobjc The Objective-C and Objective-C++ runtime library. -@item liboffloadmic -A library to allow OpenMP to Intel MIC targets. - @item libphobos The D standard and runtime library. The bulk of this library is mirrored from the @uref{https://github.com/@/dlang, master D repositories}. diff --git a/include/gomp-constants.h b/include/gomp-constants.h index fac7316..dfee037 100644 --- a/include/gomp-constants.h +++ b/include/gomp-constants.h @@ -229,7 +229,7 @@ enum gomp_map_kind /* #define GOMP_DEVICE_HOST_NONSHM 3 removed. */ #define GOMP_DEVICE_NOT_HOST 4 #define GOMP_DEVICE_NVIDIA_PTX 5 -#define GOMP_DEVICE_INTEL_MIC 6 +/* #define GOMP_DEVICE_INTEL_MIC 6 removed. */ /* #define GOMP_DEVICE_HSA 7 removed. */ #define GOMP_DEVICE_GCN 8 @@ -284,7 +284,6 @@ enum gomp_map_kind to the plugin interface defined in libgomp/libgomp.h. */ #define GOMP_VERSION 2 #define GOMP_VERSION_NVIDIA_PTX 1 -#define GOMP_VERSION_INTEL_MIC 0 #define GOMP_VERSION_GCN 2 #define GOMP_VERSION_PACK(LIB, DEV) (((LIB) << 16) | (DEV)) diff --git a/libgomp/configure b/libgomp/configure index 35424d2..45a769e 100755 --- a/libgomp/configure +++ b/libgomp/configure @@ -15200,9 +15200,6 @@ if test x"$enable_offload_targets" != x; then tgt=`echo $tgt | sed 's/=.*//'` tgt_plugin= case $tgt in - *-intelmic-* | *-intelmicemul-*) - tgt_plugin=intelmic - ;; nvptx*) case "${target}" in aarch64*-*-* | powerpc64le-*-* | x86_64-*-*) diff --git a/libgomp/libgomp-plugin.h b/libgomp/libgomp-plugin.h index 875f967..ac38782 100644 --- a/libgomp/libgomp-plugin.h +++ b/libgomp/libgomp-plugin.h @@ -49,7 +49,6 @@ enum offload_target_type OFFLOAD_TARGET_TYPE_HOST = 2, /* OFFLOAD_TARGET_TYPE_HOST_NONSHM = 3 removed. */ OFFLOAD_TARGET_TYPE_NVIDIA_PTX = 5, - OFFLOAD_TARGET_TYPE_INTEL_MIC = 6, OFFLOAD_TARGET_TYPE_HSA = 7, OFFLOAD_TARGET_TYPE_GCN = 8 }; diff --git a/libgomp/libgomp.texi b/libgomp/libgomp.texi index 8d3b9cf..10fefa9 100644 --- a/libgomp/libgomp.texi +++ b/libgomp/libgomp.texi @@ -4303,7 +4303,7 @@ offloading devices (it's not clear if they should be): @multitable @columnfractions .60 .10 .25 @headitem @code{arch} @tab @code{kind} @tab @code{isa} -@item @code{intel_mic}, @code{x86}, @code{x86_64}, @code{i386}, @code{i486}, +@item @code{x86}, @code{x86_64}, @code{i386}, @code{i486}, @code{i586}, @code{i686}, @code{ia32} @tab @code{host} @tab See @code{-m...} flags in ``x86 Options'' (without @code{-m}) diff --git a/libgomp/plugin/configfrag.ac b/libgomp/plugin/configfrag.ac index ab03f94..d3b2589 100644 --- a/libgomp/plugin/configfrag.ac +++ b/libgomp/plugin/configfrag.ac @@ -59,9 +59,6 @@ if test x"$enable_offload_targets" != x; then tgt=`echo $tgt | sed 's/=.*//'` tgt_plugin= case $tgt in - *-intelmic-* | *-intelmicemul-*) - tgt_plugin=intelmic - ;; nvptx*) case "${target}" in aarch64*-*-* | powerpc64le-*-* | x86_64-*-*) diff --git a/libgomp/testsuite/lib/libgomp.exp b/libgomp/testsuite/lib/libgomp.exp index 4b8c64d..1801fdc 100644 --- a/libgomp/testsuite/lib/libgomp.exp +++ b/libgomp/testsuite/lib/libgomp.exp @@ -119,18 +119,6 @@ proc libgomp_init { args } { # Compute what needs to be put into LD_LIBRARY_PATH set always_ld_library_path ".:${blddir}/.libs" - # Add liboffloadmic build directory in LD_LIBRARY_PATH to support - # Intel MIC offloading testing. - global offload_plugins - if { [string match "*,intelmic,*" ",$offload_plugins,"] } { - append always_ld_library_path ":${blddir}/../liboffloadmic/.libs" - append always_ld_library_path ":${blddir}/../liboffloadmic/plugin/.libs" - # libstdc++ is required by liboffloadmic - append always_ld_library_path ":${blddir}/../libstdc++-v3/src/.libs" - # libgcc_s is required by libstdc++ - append always_ld_library_path ":${blddir}/../libgcc" - } - global offload_additional_lib_paths if { $offload_additional_lib_paths != "" } { append always_ld_library_path "${offload_additional_lib_paths}" @@ -313,9 +301,6 @@ proc offload_target_to_openacc_device_type { offload_target } { disable { return "host" } - *-intelmic* { - return "" - } nvptx* { return "nvidia" } @@ -449,28 +434,6 @@ proc check_effective_target_openacc_nvidia_accel_selected { } { return [string match "nvidia" $openacc_device_type] } -# Return 1 if using Intel MIC offload device. -proc check_effective_target_offload_device_intel_mic { } { - return [check_runtime_nocache offload_device_intel_mic { - #include "testsuite/libgomp.c-c++-common/on_device_arch.h" - int main () - { - return !on_device_arch_intel_mic (); - } - } ] -} - -# Return 1 if any Intel MIC offload device is available. -proc check_effective_target_offload_device_any_intel_mic { } { - return [check_runtime_nocache offload_device_any_intel_mic { - #include "testsuite/libgomp.c-c++-common/on_device_arch.h" - int main () - { - return !any_device_arch_intel_mic (); - } - } ] -} - # Return 1 if the OpenACC 'host' device type is selected. proc check_effective_target_openacc_host_selected { } { diff --git a/libgomp/testsuite/libgomp.c-c++-common/on_device_arch.h b/libgomp/testsuite/libgomp.c-c++-common/on_device_arch.h index 6f66dbd..3fb5021 100644 --- a/libgomp/testsuite/libgomp.c-c++-common/on_device_arch.h +++ b/libgomp/testsuite/libgomp.c-c++-common/on_device_arch.h @@ -13,15 +13,8 @@ device_arch_gcn (void) return GOMP_DEVICE_GCN; } -/* static */ int -device_arch_intel_mic (void) -{ - return GOMP_DEVICE_INTEL_MIC; -} - #pragma omp declare variant (device_arch_nvptx) match(construct={target},device={arch(nvptx)}) #pragma omp declare variant (device_arch_gcn) match(construct={target},device={arch(gcn)}) -#pragma omp declare variant (device_arch_intel_mic) match(construct={target},device={arch(intel_mic)}) /* static */ int device_arch (void) { @@ -49,31 +42,3 @@ on_device_arch_gcn () { return on_device_arch (GOMP_DEVICE_GCN); } - -int -on_device_arch_intel_mic () -{ - return on_device_arch (GOMP_DEVICE_INTEL_MIC); -} - -static int -any_device_arch (int d) -{ - int nd = omp_get_num_devices (); - for (int i = 0; i < nd; ++i) - { - int d_cur; - #pragma omp target device(i) map(from:d_cur) - d_cur = device_arch (); - if (d_cur == d) - return 1; - } - - return 0; -} - -int -any_device_arch_intel_mic () -{ - return any_device_arch (GOMP_DEVICE_INTEL_MIC); -} diff --git a/libgomp/testsuite/libgomp.c-c++-common/target-45.c b/libgomp/testsuite/libgomp.c-c++-common/target-45.c index 27bbedd..73c105d 100644 --- a/libgomp/testsuite/libgomp.c-c++-common/target-45.c +++ b/libgomp/testsuite/libgomp.c-c++-common/target-45.c @@ -1,5 +1,3 @@ -/* { dg-xfail-run-if TODO { offload_device_any_intel_mic } } */ - #include <omp.h> #include <stdlib.h> diff --git a/libgomp/testsuite/libgomp.fortran/target10.f90 b/libgomp/testsuite/libgomp.fortran/target10.f90 index 3145255..4876cce 100644 --- a/libgomp/testsuite/libgomp.fortran/target10.f90 +++ b/libgomp/testsuite/libgomp.fortran/target10.f90 @@ -1,5 +1,4 @@ ! { dg-do run } -! { dg-xfail-run-if TODO { offload_device_any_intel_mic } } program main use omp_lib diff --git a/liboffloadmic/ChangeLog b/liboffloadmic/ChangeLog deleted file mode 100644 index 90e7c4d..0000000 --- a/liboffloadmic/ChangeLog +++ /dev/null @@ -1,765 +0,0 @@ -2022-10-12 Martin Liska <mliska@suse.cz> - - * configure: Regenerate. - * plugin/configure: Regenerate. - -2022-10-11 Olivier Hainque <hainque@adacore.com> - Olivier Hainque <hainque@adacore.com> - - * plugin/configure: Regenerate. - -2022-10-11 Olivier Hainque <hainque@adacore.com> - Olivier Hainque <hainque@adacore.com> - - * configure: Regenerate. - -2022-09-09 Tobias Burnus <tobias@codesourcery.com> - - * plugin/libgomp-plugin-intelmic.cpp (GOMP_OFFLOAD_load_image): - Add (unused) uint64_t **rev_fn_table argument. - -2022-08-25 Martin Liska <mliska@suse.cz> - - * configure: Regenerate. - * plugin/configure: Regenerate. - -2022-07-04 Tobias Burnus <tobias@codesourcery.com> - Chung-Lin Tang <cltang@codesourcery.com> - Thomas Schwinge <thomas@codesourcery.com> - - * plugin/libgomp-plugin-intelmic.cpp (GOMP_OFFLOAD_get_num_devices): - Return -1 when device available but omp_requires_mask != 0. - -2021-10-19 Martin Liska <mliska@suse.cz> - - * include/coi/source/COIBuffer_source.h: Convert 2 chars to - unicode. - -2021-05-25 Richard Biener <rguenther@suse.de> - - PR libgomp/100747 - * configure: Make executable. - * plugin/configure: Likewise. - -2021-01-05 Samuel Thibault <samuel.thibault@ens-lyon.org> - - * configure: Re-generate. - * plugin/configure: Re-generate. - -2020-11-29 John David Anglin <danglin@gcc.gnu.org> - - * configure: Regenerate. - * plugin/configure: Regenerate. - -2020-05-05 Martin Liska <mliska@suse.cz> - - PR other/89860 - * runtime/offload_target.cpp: Put index check - before its use. - -2020-01-24 Maciej W. Rozycki <macro@wdc.com> - - * plugin/configure.ac: Handle `--with-toolexeclibdir='. - * plugin/Makefile.in: Regenerate. - * plugin/aclocal.m4: Regenerate. - * plugin/configure: Regenerate. - * configure.ac: Handle `--with-toolexeclibdir='. - * Makefile.in: Regenerate. - * aclocal.m4: Regenerate. - * configure: Regenerate. - -2020-01-10 Thomas Schwinge <thomas@codesourcery.com> - - * plugin/libgomp-plugin-intelmic.cpp (GOMP_OFFLOAD_get_property): - Remove. - -2019-12-22 Maciej W. Rozycki <macro@codesourcery.com> - Frederik Harwath <frederik@codesourcery.com> - Thomas Schwinge <tschwinge@codesourcery.com> - - liboffloadmic/ - * plugin/libgomp-plugin-intelmic.cpp (GOMP_OFFLOAD_get_property): - New function. - -2019-10-01 Maciej W. Rozycki <macro@wdc.com> - - * plugin/configure: Regenerate. - -2019-09-27 Maciej W. Rozycki <macro@wdc.com> - - * configure: Regenerate. - -2019-01-09 Sandra Loosemore <sandra@codesourcery.com> - - PR other/16615 - - * include/coi/common/COIResult_common.h: Mechanically replace - "can not" with "cannot". - * include/coi/source/COIBuffer_source.h: Likewise. - -2018-12-14 Thomas Schwinge <thomas@codesourcery.com> - - * runtime/offload.h (omp_target_is_present, omp_target_memcpy) - (omp_target_memcpy_rect, omp_target_associate_ptr) - (omp_target_disassociate_ptr): Adjust to libgomp changes. - -2018-10-31 Joseph Myers <joseph@codesourcery.com> - - PR bootstrap/82856 - * Makefile.am: Include multilib.am. - * configure.ac: Remove AC_PREREQ. - * plugin/Makefile.am: Include multilib.am. - * plugin/configure.ac: Remove AC_PREREQ. - * Makefile.in, aclocal.m4, configure, plugin/Makefile.in, - plugin/aclocal.m4, plugin/configure: Regenerate. - -2018-04-18 David Malcolm <dmalcolm@redhat.com> - - PR jit/85384 - * configure: Regenerate. - * plugin/configure: Regenerate. - -2017-01-31 Thomas Schwinge <thomas@codesourcery.com> - - * plugin/libgomp-plugin-intelmic.cpp (GOMP_OFFLOAD_get_type): Fix - return type. - (GOMP_OFFLOAD_load_image): Fix argument types. - -2017-01-21 Jakub Jelinek <jakub@redhat.com> - - PR other/79046 - * plugin/configure.ac: Add GCC_BASE_VER. - * plugin/Makefile.am (gcc_version): Use @get_gcc_base_ver@ instead - of cat to get version from BASE-VER file. - * plugin/configure: Regenerated. - * plugin/aclocal.m4: Regenerated. - * plugin/Makefile.in: Regenerated. - -2017-01-20 Jakub Jelinek <jakub@redhat.com> - - PR other/79046 - * aclocal.m4: Regenerated. - * Makefile.in: Regenerated. - -2017-01-17 Jakub Jelinek <jakub@redhat.com> - - PR other/79046 - * configure.ac: Add GCC_BASE_VER. - * Makefile.am (gcc_version): Use @get_gcc_base_ver@ instead of cat to - get version from BASE-VER file. - * aclocal.m4: Include ../config/acx.m4. - * configure: Regenerated. - * Makefile.in: Regenerated. - -2016-11-15 Matthias Klose <doko@ubuntu.com> - - * configure: Regenerate. - -2016-07-21 Ilya Verbin <ilya.verbin@intel.com> - - * Makefile.am (myo_inc_dir): Remove. - (toolexeclib_LTLIBRARIES): Remove libmyo-client.la and - libmyo-service.la. - (liboffloadmic_cppflags): Remove -DMYO_SUPPORT. - (liboffloadmic_host_la_SOURCES): Remove offload_myo_host.cpp. - (liboffloadmic_target_la_SOURCES): Remove offload_myo_target.cpp. - (liboffloadmic_target_la_LIBADD): Remove libmyo-service.la. - (libmyo_client_la_SOURCES, libmyo_service_la_SOURCES): Remove. - (libmyo_client_la_DEPENDENCIES, libmyo_service_la_DEPENDENCIES): Remove. - (libmyo_client_la_CPPFLAGS, libmyo_service_la_CPPFLAGS): Remove. - (libmyo_client_la_LDFLAGS, libmyo_service_la_LDFLAGS): Remove. - * Makefile.in: Regenerate. - * doc/doxygen/header.tex: Merge from upstream, version 20160715 - <https://openmprtl.org/sites/default/files/liboffload_oss_20160715.tgz>. - * runtime/cean_util.cpp: Likewise. - * runtime/cean_util.h: Likewise. - * runtime/coi/coi_client.cpp: Likewise. - * runtime/coi/coi_client.h: Likewise. - * runtime/coi/coi_server.cpp: Likewise. - * runtime/coi/coi_server.h: Likewise. - * runtime/compiler_if_host.cpp: Likewise. - * runtime/compiler_if_host.h: Likewise. - * runtime/compiler_if_target.cpp: Likewise. - * runtime/compiler_if_target.h: Likewise. - * runtime/dv_util.cpp: Likewise. - * runtime/dv_util.h: Likewise. - * runtime/liboffload_error.c: Likewise. - * runtime/liboffload_error_codes.h: Likewise. - * runtime/liboffload_msg.c: Likewise. - * runtime/liboffload_msg.h: Likewise. - * runtime/mic_lib.f90: Likewise. - * runtime/offload.h: Likewise. - * runtime/offload_common.cpp: Likewise. - * runtime/offload_common.h: Likewise. - * runtime/offload_engine.cpp: Likewise. - * runtime/offload_engine.h: Likewise. - * runtime/offload_env.cpp: Likewise. - * runtime/offload_env.h: Likewise. - * runtime/offload_host.cpp: Likewise. - * runtime/offload_host.h: Likewise. - * runtime/offload_iterator.h: Likewise. - * runtime/offload_myo_host.cpp: Likewise. - * runtime/offload_myo_host.h: Likewise. - * runtime/offload_myo_target.cpp: Likewise. - * runtime/offload_myo_target.h: Likewise. - * runtime/offload_omp_host.cpp: Likewise. - * runtime/offload_omp_target.cpp: Likewise. - * runtime/offload_orsl.cpp: Likewise. - * runtime/offload_orsl.h: Likewise. - * runtime/offload_table.cpp: Likewise. - * runtime/offload_table.h: Likewise. - * runtime/offload_target.cpp: Likewise. - * runtime/offload_target.h: Likewise. - * runtime/offload_target_main.cpp: Likewise. - * runtime/offload_timer.h: Likewise. - * runtime/offload_timer_host.cpp: Likewise. - * runtime/offload_timer_target.cpp: Likewise. - * runtime/offload_trace.cpp: Likewise. - * runtime/offload_trace.h: Likewise. - * runtime/offload_util.cpp: Likewise. - * runtime/offload_util.h: Likewise. - * runtime/ofldbegin.cpp: Likewise. - * runtime/ofldend.cpp: Likewise. - * runtime/orsl-lite/include/orsl-lite.h: Likewise. - * runtime/orsl-lite/lib/orsl-lite.c: Likewise. - * runtime/use_mpss2.txt: Remove. - * include/coi/common/COIEngine_common.h: Merge from upstream, MPSS - version 3.7.1 - <http://registrationcenter-download.intel.com/akdlm/irc_nas/9226/ - mpss-3.7.1-linux.tar>. - * include/coi/common/COIEvent_common.h: Likewise. - * include/coi/common/COIMacros_common.h: Likewise. - * include/coi/common/COIPerf_common.h: Likewise. - * include/coi/common/COIResult_common.h: Likewise. - * include/coi/common/COISysInfo_common.h: Likewise. - * include/coi/common/COITypes_common.h: Likewise. - * include/coi/sink/COIBuffer_sink.h: Likewise. - * include/coi/sink/COIPipeline_sink.h: Likewise. - * include/coi/sink/COIProcess_sink.h: Likewise. - * include/coi/source/COIBuffer_source.h: Likewise. - * include/coi/source/COIEngine_source.h: Likewise. - * include/coi/source/COIEvent_source.h: Likewise. - * include/coi/source/COIPipeline_source.h: Likewise. - * include/coi/source/COIProcess_source.h: Likewise. - * include/myo/myo.h: Remove. - * include/myo/myoimpl.h: Remove. - * include/myo/myotypes.h: Remove. - * plugin/Makefile.am (AM_LDFLAGS): Remove -lmyo-service. - * plugin/Makefile.in: Regenerate. - * plugin/libgomp-plugin-intelmic.cpp (LD_LIBRARY_PATH_ENV): Remove. - (MIC_LD_LIBRARY_PATH_ENV): Remove. - (init): Do not set MIC_LD_LIBRARY_PATH. Now liboffloadmic uses only - LD_LIBRARY_PATH. - * plugin/offload_target_main.cpp: Update copyright years. - * runtime/emulator/coi_common.h: Likewise. - * runtime/emulator/coi_device.cpp: Likewise. - * runtime/emulator/coi_device.h: Likewise. - * runtime/emulator/coi_host.cpp: Likewise. - (COIBufferCreate): Allow COI_BUFFER_OPENCL. - (COIEngineGetInfo): Return COI_DEVICE_KNL instead of COI_ISA_x86_64. - * runtime/emulator/coi_host.h: Update copyright years. - * runtime/emulator/coi_version_asm.h: Likewise. - * runtime/emulator/coi_version_linker_script.map: Likewise. - * runtime/emulator/myo_client.cpp: Remove. - * runtime/emulator/myo_service.cpp: Remove. - * runtime/emulator/myo_service.h: Remove. - * runtime/emulator/myo_version_asm.h: Remove. - * runtime/emulator/myo_version_linker_script.map: Remove. - -2016-05-26 Chung-Lin Tang <cltang@codesourcery.com> - - * plugin/libgomp-plugin-intelmic.cpp (offload): Change return type - to bool, adjust return code. - (GOMP_OFFLOAD_init_device): Likewise. - (GOMP_OFFLOAD_fini_device): Likewise. - (get_target_table): Likewise. - (offload_image): Likwise. - (GOMP_OFFLOAD_load_image): Adjust call to offload_image(), change - to return -1 on error. - (GOMP_OFFLOAD_unload_image): Change return type to bool, adjust return - code. - (GOMP_OFFLOAD_alloc): Likewise. - (GOMP_OFFLOAD_free): Likewise. - (GOMP_OFFLOAD_host2dev): Likewise. - (GOMP_OFFLOAD_dev2host): Likewise. - (GOMP_OFFLOAD_dev2dev): Likewise. - -2016-01-20 Ilya Verbin <ilya.verbin@intel.com> - - * plugin/libgomp-plugin-intelmic.cpp (GOMP_OFFLOAD_run): Pass extra NULL - to GOMP_OFFLOAD_async_run. - -2016-01-19 Martin Jambor <mjambor@suse.cz> - - * plugin/libgomp-plugin-intelmic.cpp (GOMP_OFFLOAD_async_run): New - unused parameter. - (GOMP_OFFLOAD_run): Likewise. - -2015-12-14 Ilya Verbin <ilya.verbin@intel.com> - - * plugin/libgomp-plugin-intelmic.cpp (unregister_main_image): Remove. - (register_main_image): Do not call unregister_main_image at exit. - (GOMP_OFFLOAD_fini_device): Allow for OpenMP. Unregister main image. - -2015-11-19 Ilya Verbin <ilya.verbin@intel.com> - - * plugin/libgomp-plugin-intelmic.cpp (struct TargetImageDesc): New. - (ImgDescMap): New typedef. - (image_descriptors): New static var. - (init): Allocate image_descriptors. - (offload): Remove vars2 argument. Pass NULL to __offload_offload1 - instead of vars2. - (unregister_main_image): New static function. - (register_main_image): Call unregister_main_image at exit. - (GOMP_OFFLOAD_init_device): Print device number, fix offload args. - (GOMP_OFFLOAD_fini_device): Likewise. - (get_target_table): Remove vd1g and vd2g, don't pass them to offload. - (offload_image): Remove declaration of the struct TargetImage. - Free table. Insert new descriptor into image_descriptors. - (GOMP_OFFLOAD_unload_image): Call __offload_unregister_image, free - the corresponding descriptor, and remove it from address_table and - image_descriptors. - (GOMP_OFFLOAD_alloc): Print device number, remove vd1g. - (GOMP_OFFLOAD_free): Likewise. - (GOMP_OFFLOAD_host2dev): Print device number, remove vd1g and vd2g. - (GOMP_OFFLOAD_dev2host): Likewise. - (GOMP_OFFLOAD_run): Print device number, remove vd1g. - * plugin/offload_target_main.cpp (__offload_target_table_p1): Remove - vd2, don't pass it to __offload_target_enter. - (__offload_target_table_p2): Likewise. - (__offload_target_alloc): Likewise. - (__offload_target_free): Likewise. - (__offload_target_host2tgt_p1): Likewise. - (__offload_target_host2tgt_p2): Likewise. - (__offload_target_tgt2host_p1): Likewise. - (__offload_target_tgt2host_p2): Likewise. - (__offload_target_run): Likewise. - (__offload_target_tgt2tgt): Remove vd1g, don't pass it to - __offload_target_enter. - -2015-11-14 Ilya Verbin <ilya.verbin@intel.com> - - * runtime/offload_host.cpp (task_completion_callback): New - variable. - (offload_proxy_task_completed_ooo): Call task_completion_callback. - (__offload_register_task_callback): New function. - * runtime/offload_host.h (__offload_register_task_callback): New - declaration. - * plugin/libgomp-plugin-intelmic.cpp (offload): Add async_data - argument, handle async offloading. - (register_main_image): Call register_main_image. - (GOMP_OFFLOAD_init_device, get_target_table, GOMP_OFFLOAD_alloc, - GOMP_OFFLOAD_free, GOMP_OFFLOAD_host2dev, GOMP_OFFLOAD_dev2host, - GOMP_OFFLOAD_dev2dev): Adjust offload callers. - (GOMP_OFFLOAD_async_run): New function. - (GOMP_OFFLOAD_run): Implement using GOMP_OFFLOAD_async_run. - -2015-10-26 Ilya Verbin <ilya.verbin@intel.com> - Aleksander Ivanushenko <aleksander.ivanushenko@intel.com> - - * runtime/offload_host.cpp (OffloadDescriptor::setup_misc_data): Use - calloc instead of malloc. - (__offload_fini_library): Set mic_engines_total to zero. - -2015-10-13 Ilya Verbin <ilya.verbin@intel.com> - - * plugin/libgomp-plugin-intelmic.cpp (GOMP_OFFLOAD_dev2dev): New - function. - * plugin/offload_target_main.cpp (__offload_target_tgt2tgt): New - static function, register it in liboffloadmic. - -2015-10-08 Ilya Verbin <ilya.verbin@intel.com> - - * runtime/offload_engine.cpp (Engine::init_process): Use strdup instead - of sizeof+malloc+sprintf, check for return value. - * runtime/offload_env.cpp (MicEnvVar::get_env_var_kind): Check for - strdup return value. - * runtime/offload_host.cpp (__offload_init_library_once): Check for - strdup return value. Fix size calculation of COI_HOST_THREAD_AFFINITY. - * runtime/emulator/coi_device.cpp (COIProcessWaitForShutdown): Check for - malloc return value. - -2015-09-29 Ilya Verbin <ilya.verbin@intel.com> - - * plugin/libgomp-plugin-intelmic.cpp (OFFLOAD_ACTIVE_WAIT_ENV): New - define. - (init): Set OFFLOAD_ACTIVE_WAIT env var to 0, if it is not set. - * runtime/emulator/coi_common.h (PIPE_HOST_PATH): Replace with ... - (PIPE_HOST2TGT_NAME): ... this. - (PIPE_TARGET_PATH): Replace with ... - (PIPE_TGT2HOST_NAME): ... this. - (MALLOCN): New define. - (READN): Likewise. - (WRITEN): Likewise. - (enum cmd_t): Replace CMD_RUN_FUNCTION with CMD_PIPELINE_RUN_FUNCTION. - Add CMD_PIPELINE_CREATE, CMD_PIPELINE_DESTROY. - * runtime/emulator/coi_device.cpp (engine_dir): New static variable. - (pipeline_thread_routine): New static function. - (COIProcessWaitForShutdown): Use global engine_dir instead of mic_dir. - Rename pipe_host and pipe_target to pipe_host2tgt and pipe_tgt2host. - If cmd is CMD_PIPELINE_CREATE, create a new thread for the pipeline. - Remove cmd == CMD_RUN_FUNCTION case. - * runtime/emulator/coi_device.h (COIERRORN): New define. - * runtime/emulator/coi_host.cpp: Include set, map, queue. - Replace typedefs with enums and structs. - (struct Function): Remove name, add num_buffers, bufs_size, - bufs_data_target, misc_data_len, misc_data, return_value_len, - return_value, completion_event. - (struct Callback): New. - (struct Process): Remove pipeline. Add pipe_host2tgt and pipe_tgt2host. - (struct Pipeline): Remove pipe_host and pipe_target. Add thread, - destroy, is_destroyed, pipe_host2tgt_path, pipe_tgt2host_path, - pipe_host2tgt, pipe_tgt2host, queue, process. - (max_pipeline_num): New static variable. - (pipelines): Likewise. - (max_event_num): Likewise. - (non_signalled_events): Likewise. - (errored_events): Likewise. - (callbacks): Likewise. - (cleanup): Do not check tmp_dirs before free. - (start_critical_section): New static function. - (finish_critical_section): Likewise. - (pipeline_is_destroyed): Likewise. - (maybe_invoke_callback): Likewise. - (signal_event): Likewise. - (get_event_result): Likewise. - (COIBufferCopy): Rename arguments according to headers. Add asserts. - Use process' main pipes, instead of pipeline's pipes. Signal completion - event. - (COIBufferCreate): Rename arguments according to headers. Add asserts. - Use process' main pipes, instead of pipeline's pipes. - (COIBufferCreateFromMemory): Rename arguments according to headers. - Add asserts. - (COIBufferDestroy): Rename arguments according to headers. Add asserts. - Use process' main pipes, instead of pipeline's pipes. - (COIBufferGetSinkAddress): Rename arguments according to headers. - Add asserts. - (COIBufferMap): Rename arguments according to headers. Add asserts. - Signal completion event. - (COIBufferRead): Likewise. - (COIBufferSetState): Likewise. - (COIBufferUnmap): Likewise. - (COIBufferWrite): Likewise. - (COIEngineGetCount): Add assert. - (COIEngineGetHandle): Rename arguments according to headers. - Add assert. - (COIEventWait): Rename arguments according to headers. Add asserts. - Implement waiting for events with zero or infinite timeout. - (COIEventRegisterCallback): New function. - (pipeline_thread_routine): New static function. - (COIPipelineCreate): Create a new thread for the pipeline. - (COIPipelineDestroy): Exit pipeline thread. - (COIPipelineRunFunction): Add the function into pipeline's queue, - instead running it here. Wait for it's completion in case of - synchronous execution. - (COIProcessCreateFromMemory): Rename arguments according to headers. - Add asserts. Create process' main pipes, instead of pipeline's pipes. - (COIProcessDestroy): Rename arguments according to headers. - Add asserts. Destroy all undestroyed pipelines. - (COIProcessGetFunctionHandles): Rename arguments according to headers. - Add asserts. Use process' main pipes, instead of pipeline's pipes. - Remove useless function names. - (COIProcessLoadLibraryFromMemory): Add asserts. Use process' main - pipes, instead of pipeline's pipes. - (COIProcessUnloadLibrary): Likewise. - (COIEngineGetInfo): Add assert. - * runtime/emulator/coi_host.h (COIERRORN): New define. - -2015-09-28 Ilya Verbin <ilya.verbin@intel.com> - - PR other/67652 - * runtime/offload_engine.cpp (Engine::init_process): Fix sizeof. - -2015-09-08 Ilya Verbin <ilya.verbin@intel.com> - - * Makefile.am (liboffloadmic_host_la_DEPENDENCIES): Remove libcoi_host - and libmyo-client. liboffloadmic_host loads them dynamically. - * Makefile.in: Regenerate. - * doc/doxygen/header.tex: Merge from upstream, version 20150803 - <https://openmprtl.org/sites/default/files/liboffload_oss_20150803.tgz>. - * runtime/cean_util.cpp: Likewise. - * runtime/cean_util.h: Likewise. - * runtime/coi/coi_client.cpp: Likewise. - * runtime/coi/coi_client.h: Likewise. - * runtime/coi/coi_server.cpp: Likewise. - * runtime/coi/coi_server.h: Likewise. - * runtime/compiler_if_host.cpp: Likewise. - * runtime/compiler_if_host.h: Likewise. - * runtime/compiler_if_target.cpp: Likewise. - * runtime/compiler_if_target.h: Likewise. - * runtime/dv_util.cpp: Likewise. - * runtime/dv_util.h: Likewise. - * runtime/liboffload_error.c: Likewise. - * runtime/liboffload_error_codes.h: Likewise. - * runtime/liboffload_msg.c: Likewise. - * runtime/liboffload_msg.h: Likewise. - * runtime/mic_lib.f90: Likewise. - * runtime/offload.h: Likewise. - * runtime/offload_common.cpp: Likewise. - * runtime/offload_common.h: Likewise. - * runtime/offload_engine.cpp: Likewise. - * runtime/offload_engine.h: Likewise. - * runtime/offload_env.cpp: Likewise. - * runtime/offload_env.h: Likewise. - * runtime/offload_host.cpp: Likewise. - * runtime/offload_host.h: Likewise. - * runtime/offload_iterator.h: Likewise. - * runtime/offload_myo_host.cpp: Likewise. - * runtime/offload_myo_host.h: Likewise. - * runtime/offload_myo_target.cpp: Likewise. - * runtime/offload_myo_target.h: Likewise. - * runtime/offload_omp_host.cpp: Likewise. - * runtime/offload_omp_target.cpp: Likewise. - * runtime/offload_orsl.cpp: Likewise. - * runtime/offload_orsl.h: Likewise. - * runtime/offload_table.cpp: Likewise. - * runtime/offload_table.h: Likewise. - * runtime/offload_target.cpp: Likewise. - * runtime/offload_target.h: Likewise. - * runtime/offload_target_main.cpp: Likewise. - * runtime/offload_timer.h: Likewise. - * runtime/offload_timer_host.cpp: Likewise. - * runtime/offload_timer_target.cpp: Likewise. - * runtime/offload_trace.cpp: Likewise. - * runtime/offload_trace.h: Likewise. - * runtime/offload_util.cpp: Likewise. - * runtime/offload_util.h: Likewise. - * runtime/ofldbegin.cpp: Likewise. - * runtime/ofldend.cpp: Likewise. - * runtime/orsl-lite/include/orsl-lite.h: Likewise. - * runtime/orsl-lite/lib/orsl-lite.c: Likewise. - * runtime/use_mpss2.txt: Likewise. - * include/coi/common/COIEngine_common.h: Merge from upstream, MPSS - version 3.5 - <http://registrationcenter.intel.com/irc_nas/7445/mpss-src-3.5.tar>. - * include/coi/common/COIEvent_common.h: Likewise. - * include/coi/common/COIMacros_common.h: Likewise. - * include/coi/common/COIPerf_common.h: Likewise. - * include/coi/common/COIResult_common.h: Likewise. - * include/coi/common/COISysInfo_common.h: Likewise. - * include/coi/common/COITypes_common.h: Likewise. - * include/coi/sink/COIBuffer_sink.h: Likewise. - * include/coi/sink/COIPipeline_sink.h: Likewise. - * include/coi/sink/COIProcess_sink.h: Likewise. - * include/coi/source/COIBuffer_source.h: Likewise. - * include/coi/source/COIEngine_source.h: Likewise. - * include/coi/source/COIEvent_source.h: Likewise. - * include/coi/source/COIPipeline_source.h: Likewise. - * include/coi/source/COIProcess_source.h: Likewise. - * include/myo/myo.h: Likewise. - * include/myo/myoimpl.h: Likewise. - * include/myo/myotypes.h: Likewise. - * plugin/Makefile.am (myo_inc_dir): Remove. - (libgomp_plugin_intelmic_la_CPPFLAGS): Do not define MYO_SUPPORT. - (AM_CPPFLAGS): Likewise for offload_target_main. - * plugin/Makefile.in: Regenerate. - * runtime/emulator/coi_common.h: Update copyright years. - (OFFLOAD_EMUL_KNC_NUM_ENV): Replace with ... - (OFFLOAD_EMUL_NUM_ENV): ... this. - (enum cmd_t): Add CMD_CLOSE_LIBRARY. - * runtime/emulator/coi_device.cpp: Update copyright years. - (COIProcessWaitForShutdown): Add space between string constants. - Return handle to host in CMD_OPEN_LIBRARY. - Support CMD_CLOSE_LIBRARY. - * runtime/emulator/coi_device.h: Update copyright years. - * runtime/emulator/coi_host.cpp: Update copyright years. - (knc_engines_num): Replace with ... - (num_engines): ... this. - (init): Replace OFFLOAD_EMUL_KNC_NUM_ENV with OFFLOAD_EMUL_NUM_ENV. - (COIEngineGetCount): Replace COI_ISA_KNC with COI_ISA_MIC, and - knc_engines_num with num_engines. - (COIEngineGetHandle): Likewise. - (COIProcessCreateFromMemory): Add space between string constants. - (COIProcessCreateFromFile): New function. - (COIProcessLoadLibraryFromMemory): Rename arguments according to - COIProcess_source.h. Return handle, received from target. - (COIProcessUnloadLibrary): New function. - (COIPipelineClearCPUMask): New function. - (COIPipelineSetCPUMask): New function. - (COIEngineGetInfo): New function. - * runtime/emulator/coi_host.h: Update copyright years. - * runtime/emulator/coi_version_asm.h: Regenerate. - * runtime/emulator/coi_version_linker_script.map: Regenerate. - * runtime/emulator/myo_client.cpp: Update copyright years. - * runtime/emulator/myo_service.cpp: Update copyright years. - (myoArenaRelease): New function. - (myoArenaAcquire): New function. - (myoArenaAlignedFree): New function. - (myoArenaAlignedMalloc): New function. - * runtime/emulator/myo_service.h: Update copyright years. - * runtime/emulator/myo_version_asm.h: Regenerate. - * runtime/emulator/myo_version_linker_script.map: Regenerate. - -2015-08-24 Nathan Sidwell <nathan@codesourcery.com> - - * plugin/libgomp-plugin-intelmic.cpp (GOMP_OFFLOAD_version): New. - (GOMP_OFFLOAD_load_image): Add version arg and check it. - (GOMP_OFFLOAD_unload_image): Likewise. - -2015-08-24 Thomas Schwinge <thomas@codesourcery.com> - - * plugin/Makefile.am (include_src_dir): Set. - [PLUGIN_HOST] (libgomp_plugin_intelmic_la_CPPFLAGS): Use it. - * plugin/Makefile.in: Regenerate. - * plugin/libgomp-plugin-intelmic.cpp: Include "gomp-constants.h". - -2015-07-24 Micahel Darling <darlingm@gmail.com> - - PR other/66259 - * configure: Reflects renaming of configure.in to configure.ac - -2015-07-17 Nathan Sidwell <nathan@acm.org> - Ilya Verbin <ilya.verbin@intel.com> - - * plugin/libgomp-plugin-intelmic.cpp (ImgDevAddrMap): Constify. - (offload_image, GOMP_OFFLOAD_load_image, - GOMP_OFFLOAD_unload_image): Constify target data. - -2015-07-08 Thomas Schwinge <thomas@codesourcery.com> - - * plugin/Makefile.am (main_target_image.h): Change type of data - member of struct MainTargetImage to uint8_t. - * plugin/Makefile.in: Regenerate. - -2015-05-13 Michael Haubenwallner <michael.haubenwallner@ssi-schaefer.com> - - * Makefile.in: Regenerated with automake-1.11.6. - * aclocal.m4: Likewise. - * configure: Likewise. - * plugin/Makefile.in: Likewise. - * plugin/aclocal.m4: Likewise. - * plugin/configure: Likewise. - -2015-04-06 Ilya Verbin <ilya.verbin@intel.com> - - * plugin/libgomp-plugin-intelmic.cpp: Include map. - (AddrVect, DevAddrVect, ImgDevAddrMap): New typedefs. - (num_devices, num_images, address_table): New static vars. - (num_libraries, lib_descrs): Remove static vars. - (set_mic_lib_path): Rename to ... - (init): ... this. Allocate address_table and get num_devices. - (GOMP_OFFLOAD_get_num_devices): return num_devices. - (load_lib_and_get_table): Remove static function. - (offload_image): New static function. - (GOMP_OFFLOAD_get_table): Remove function. - (GOMP_OFFLOAD_load_image, GOMP_OFFLOAD_unload_image): New functions. - -2015-01-15 Thomas Schwinge <thomas@codesourcery.com> - - * plugin/libgomp-plugin-intelmic.cpp (GOMP_OFFLOAD_get_name) - (GOMP_OFFLOAD_get_caps, GOMP_OFFLOAD_fini_device): New functions. - -2014-11-13 Ilya Verbin <ilya.verbin@intel.com> - Andrey Turetskiy <andrey.turetskiy@intel.com> - - * Makefile.in: Regenerate. - * configure: Regenerate. - * configure.ac: Add subdirectory 'plugin'. - * plugin/Makefile.am: New file. - * plugin/Makefile.in: New file, generated by automake. - * plugin/aclocal.m4: New file, generated by aclocal. - * plugin/configure: New file, generated by autoconf. - * plugin/configure.ac: New file. - * plugin/libgomp-plugin-intelmic.cpp: New file. - * plugin/offload_target_main.cpp: New file. - -2014-11-13 Kirill Yukhin <kirill.yukhin@intel.com> - - Initial commit. Imported from upstream: - https://www.openmprtl.org/sites/default/files/liboffload_oss.tgz - * Makefile.am: New file. - * Makefile.in: New file, generated by automake. - * aclocal.m4: New file, generated by aclocal. - * configure: New file, generated by autoconf. - * configure.ac: New file. - * configure.tgt: Ditto. - * doc/doxygen/config: Ditto. - * doc/doxygen/header.tex: Ditto. - * include/coi/common/COIEngine_common.h: Ditto. - * include/coi/common/COIMacros_common.h: Ditto. - * include/coi/common/COIPerf_common.h : Ditto. - * include/coi/common/COIResult_common.h : Ditto. - * include/coi/common/COITypes_common.h: Ditto. - * include/coi/sink/COIBuffer_sink.h: Ditto. - * include/coi/sink/COIPipeline_sink.h: Ditto. - * include/coi/sink/COIProcess_sink.h: Ditto. - * include/coi/source/COIBuffer_source.h: Ditto. - * include/coi/source/COIEngine_source.h: Ditto. - * include/coi/source/COIEvent_source.h: Ditto. - * include/coi/source/COIPipeline_source.h: Ditto. - * include/coi/source/COIProcess_source.h: Ditto. - * include/myo/myo.h: Ditto. - * include/myo/myoimpl.h: Ditto. - * include/myo/myotypes.h: Ditto. - * liboffloadmic_host.spec.in: Ditto. - * liboffloadmic_target.spec.in: Ditto. - * runtime/cean_util.cpp: Ditto. - * runtime/cean_util.h: Ditto. - * runtime/coi/coi_client.cpp: Ditto. - * runtime/coi/coi_client.h: Ditto. - * runtime/coi/coi_server.cpp: Ditto. - * runtime/coi/coi_server.h: Ditto. - * runtime/compiler_if_host.cpp: Ditto. - * runtime/compiler_if_host.h: Ditto. - * runtime/compiler_if_target.cpp: Ditto. - * runtime/compiler_if_target.h: Ditto. - * runtime/dv_util.cpp: Ditto. - * runtime/dv_util.h: Ditto. - * runtime/emulator/coi_common.h: Ditto. - * runtime/emulator/coi_device.cpp: Ditto. - * runtime/emulator/coi_device.h: Ditto. - * runtime/emulator/coi_host.cpp: Ditto. - * runtime/emulator/coi_host.h: Ditto. - * runtime/emulator/coi_version_asm.h: Ditto. - * runtime/emulator/coi_version_linker_script.map: Ditto. - * runtime/emulator/myo_client.cpp: Ditto. - * runtime/emulator/myo_service.cpp: Ditto. - * runtime/emulator/myo_service.h: Ditto. - * runtime/emulator/myo_version_asm.h: Ditto. - * runtime/emulator/myo_version_linker_script.map: Ditto. - * runtime/liboffload_error.c: Ditto. - * runtime/liboffload_error_codes.h: Ditto. - * runtime/liboffload_msg.c: Ditto. - * runtime/liboffload_msg.h: Ditto. - * runtime/mic_lib.f90: Ditto. - * runtime/offload.h: Ditto. - * runtime/offload_common.cpp: Ditto. - * runtime/offload_common.h: Ditto. - * runtime/offload_engine.cpp: Ditto. - * runtime/offload_engine.h: Ditto. - * runtime/offload_env.cpp: Ditto. - * runtime/offload_env.h: Ditto. - * runtime/offload_host.cpp: Ditto. - * runtime/offload_host.h: Ditto. - * runtime/offload_myo_host.cpp: Ditto. - * runtime/offload_myo_host.h: Ditto. - * runtime/offload_myo_target.cpp: Ditto. - * runtime/offload_myo_target.h: Ditto. - * runtime/offload_omp_host.cpp: Ditto. - * runtime/offload_omp_target.cpp: Ditto. - * runtime/offload_orsl.cpp: Ditto. - * runtime/offload_orsl.h: Ditto. - * runtime/offload_table.cpp: Ditto. - * runtime/offload_table.h: Ditto. - * runtime/offload_target.cpp: Ditto. - * runtime/offload_target.h: Ditto. - * runtime/offload_target_main.cpp: Ditto. - * runtime/offload_timer.h: Ditto. - * runtime/offload_timer_host.cpp: Ditto. - * runtime/offload_timer_target.cpp: Ditto. - * runtime/offload_trace.cpp: Ditto. - * runtime/offload_trace.h: Ditto. - * runtime/offload_util.cpp: Ditto. - * runtime/offload_util.h: Ditto. - * runtime/ofldbegin.cpp: Ditto. - * runtime/ofldend.cpp: Ditto. - * runtime/orsl-lite/include/orsl-lite.h: Ditto. - * runtime/orsl-lite/lib/orsl-lite.c: Ditto. - * runtime/orsl-lite/version.txt: Ditto. - * runtime/use_mpss2.txt: Ditto. - -Copyright (C) 2014-2018 Free Software Foundation, Inc. - -Copying and distribution of this file, with or without modification, -are permitted in any medium without royalty provided the copyright -notice and this notice are preserved. diff --git a/liboffloadmic/Makefile.am b/liboffloadmic/Makefile.am deleted file mode 100644 index 4a15322..0000000 --- a/liboffloadmic/Makefile.am +++ /dev/null @@ -1,160 +0,0 @@ -# -# Copyright (c) 2014 Intel Corporation. All Rights Reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of Intel Corporation nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - - -AUTOMAKE_OPTIONS = foreign -ACLOCAL_AMFLAGS = -I .. -I ../config - -# Build plugin for Intel MIC -SUBDIRS = . plugin - -# Directories. -build_dir = $(top_builddir) -coi_inc_dir = $(top_srcdir)/include/coi -libgomp_dir = $(build_dir)/../libgomp -source_dir = $(top_srcdir)/runtime - -# May be used by toolexeclibdir. -gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) -libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include - -# Target list. -if LIBOFFLOADMIC_HOST - nodist_toolexeclib_HEADERS = liboffloadmic_host.spec - toolexeclib_LTLIBRARIES = libcoi_host.la liboffloadmic_host.la - nodist_libsubinclude_HEADERS = runtime/compiler_if_host.h - ofld_obj = -else # LIBOFFLOADMIC_TARGET - nodist_toolexeclib_HEADERS = liboffloadmic_target.spec - toolexeclib_LTLIBRARIES = libcoi_device.la liboffloadmic_target.la - nodist_libsubinclude_HEADERS = runtime/compiler_if_target.h - ofld_obj = ofldbegin.o ofldend.o -endif - -# Liboffloadmic. -liboffloadmic_sources = runtime/dv_util.cpp \ - runtime/liboffload_error.c \ - runtime/liboffload_msg.c \ - runtime/offload_common.cpp \ - runtime/offload_table.cpp \ - runtime/offload_trace.cpp \ - runtime/offload_util.cpp - -liboffloadmic_cppflags = -DLINUX -DCOI_LIBRARY_VERSION=2 -DOFFLOAD_DEBUG=1 -DSEP_SUPPORT -DTIMING_SUPPORT -I$(coi_inc_dir) -I$(source_dir) -I$(libgomp_dir) - -liboffloadmic_host_la_SOURCES = $(liboffloadmic_sources) \ - runtime/cean_util.cpp \ - runtime/coi/coi_client.cpp \ - runtime/compiler_if_host.cpp \ - runtime/offload_engine.cpp \ - runtime/offload_env.cpp \ - runtime/offload_host.cpp \ - runtime/offload_omp_host.cpp \ - runtime/offload_orsl.cpp \ - runtime/offload_timer_host.cpp \ - runtime/orsl-lite/lib/orsl-lite.c - -liboffloadmic_host_la_CPPFLAGS = $(liboffloadmic_cppflags) -DHOST_LIBRARY=1 -liboffloadmic_host_la_LDFLAGS = @lt_cv_dlopen_libs@ -version-info 5:0:0 - -liboffloadmic_target_la_SOURCES = $(liboffloadmic_sources) \ - runtime/coi/coi_server.cpp \ - runtime/compiler_if_target.cpp \ - runtime/offload_omp_target.cpp \ - runtime/offload_target.cpp \ - runtime/offload_timer_target.cpp - -liboffloadmic_target_la_CPPFLAGS = $(liboffloadmic_cppflags) -DHOST_LIBRARY=0 -liboffloadmic_target_la_LDFLAGS = @lt_cv_dlopen_libs@ -version-info 5:0:0 -liboffloadmic_target_la_LIBADD = libcoi_device.la -liboffloadmic_target_la_DEPENDENCIES = $(liboffloadmic_target_la_LIBADD) - -# Emulator. -libcoi_host_la_SOURCES = runtime/emulator/coi_host.cpp -libcoi_device_la_SOURCES = runtime/emulator/coi_device.cpp - -libcoi_host_la_DEPENDENCIES = runtime/emulator/coi_version_linker_script.map -libcoi_device_la_DEPENDENCIES = runtime/emulator/coi_version_linker_script.map - -libcoi_host_la_CPPFLAGS = -I$(coi_inc_dir) -libcoi_device_la_CPPFLAGS = -I$(coi_inc_dir) - -libcoi_host_la_LDFLAGS = -lrt -Wl,--version-script=$(source_dir)/emulator/coi_version_linker_script.map -libcoi_device_la_LDFLAGS = -lrt -Wl,--version-script=$(source_dir)/emulator/coi_version_linker_script.map - -# ofldbegin, ofldend -all-local: $(ofld_obj) - -ofldbegin.o: runtime/ofldbegin.cpp - $(CXXCOMPILE) $(liboffloadmic_target_la_CPPFLAGS) -c $< -o $@ - -ofldend.o: runtime/ofldend.cpp - $(CXXCOMPILE) $(liboffloadmic_target_la_CPPFLAGS) -c $< -o $@ - -# Work around what appears to be a GNU make bug handling MAKEFLAGS -# values defined in terms of make variables, as is the case for CC and -# friends when we are called from the top level Makefile. -AM_MAKEFLAGS = \ - "AR_FLAGS=$(AR_FLAGS)" \ - "CC_FOR_BUILD=$(CC_FOR_BUILD)" \ - "CFLAGS=$(CFLAGS)" \ - "CXXFLAGS=$(CXXFLAGS)" \ - "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \ - "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \ - "INSTALL=$(INSTALL)" \ - "INSTALL_DATA=$(INSTALL_DATA)" \ - "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ - "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \ - "JC1FLAGS=$(JC1FLAGS)" \ - "LDFLAGS=$(LDFLAGS)" \ - "LIBCFLAGS=$(LIBCFLAGS)" \ - "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \ - "MAKE=$(MAKE)" \ - "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \ - "PICFLAG=$(PICFLAG)" \ - "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \ - "SHELL=$(SHELL)" \ - "RUNTESTFLAGS=$(RUNTESTFLAGS)" \ - "exec_prefix=$(exec_prefix)" \ - "infodir=$(infodir)" \ - "libdir=$(libdir)" \ - "prefix=$(prefix)" \ - "includedir=$(includedir)" \ - "AR=$(AR)" \ - "AS=$(AS)" \ - "LD=$(LD)" \ - "LIBCFLAGS=$(LIBCFLAGS)" \ - "NM=$(NM)" \ - "PICFLAG=$(PICFLAG)" \ - "RANLIB=$(RANLIB)" \ - "DESTDIR=$(DESTDIR)" - -MAKEOVERRIDES = - -include $(top_srcdir)/../multilib.am diff --git a/liboffloadmic/Makefile.in b/liboffloadmic/Makefile.in deleted file mode 100644 index 43abc5a..0000000 --- a/liboffloadmic/Makefile.in +++ /dev/null @@ -1,1310 +0,0 @@ -# Makefile.in generated by automake 1.15.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2017 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@ - -# -# Copyright (c) 2014 Intel Corporation. All Rights Reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of Intel Corporation nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - - -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 = . -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ - $(top_srcdir)/../config/depstand.m4 \ - $(top_srcdir)/../config/lead-dot.m4 \ - $(top_srcdir)/../config/multi.m4 \ - $(top_srcdir)/../config/override.m4 \ - $(top_srcdir)/../config/toolexeclibdir.m4 \ - $(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \ - $(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \ - $(top_srcdir)/../lt~obsolete.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) -am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ - configure.lineno config.status.lineno -mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs -CONFIG_CLEAN_FILES = liboffloadmic_host.spec liboffloadmic_target.spec -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)$(libsubincludedir)" "$(DESTDIR)$(toolexeclibdir)" -LTLIBRARIES = $(toolexeclib_LTLIBRARIES) -libcoi_device_la_LIBADD = -am_libcoi_device_la_OBJECTS = libcoi_device_la-coi_device.lo -libcoi_device_la_OBJECTS = $(am_libcoi_device_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 = -libcoi_device_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ - $(AM_CXXFLAGS) $(CXXFLAGS) $(libcoi_device_la_LDFLAGS) \ - $(LDFLAGS) -o $@ -@LIBOFFLOADMIC_HOST_FALSE@am_libcoi_device_la_rpath = -rpath \ -@LIBOFFLOADMIC_HOST_FALSE@ $(toolexeclibdir) -libcoi_host_la_LIBADD = -am_libcoi_host_la_OBJECTS = libcoi_host_la-coi_host.lo -libcoi_host_la_OBJECTS = $(am_libcoi_host_la_OBJECTS) -libcoi_host_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ - $(AM_CXXFLAGS) $(CXXFLAGS) $(libcoi_host_la_LDFLAGS) \ - $(LDFLAGS) -o $@ -@LIBOFFLOADMIC_HOST_TRUE@am_libcoi_host_la_rpath = -rpath \ -@LIBOFFLOADMIC_HOST_TRUE@ $(toolexeclibdir) -liboffloadmic_host_la_LIBADD = -am__objects_1 = liboffloadmic_host_la-dv_util.lo \ - liboffloadmic_host_la-liboffload_error.lo \ - liboffloadmic_host_la-liboffload_msg.lo \ - liboffloadmic_host_la-offload_common.lo \ - liboffloadmic_host_la-offload_table.lo \ - liboffloadmic_host_la-offload_trace.lo \ - liboffloadmic_host_la-offload_util.lo -am_liboffloadmic_host_la_OBJECTS = $(am__objects_1) \ - liboffloadmic_host_la-cean_util.lo \ - liboffloadmic_host_la-coi_client.lo \ - liboffloadmic_host_la-compiler_if_host.lo \ - liboffloadmic_host_la-offload_engine.lo \ - liboffloadmic_host_la-offload_env.lo \ - liboffloadmic_host_la-offload_host.lo \ - liboffloadmic_host_la-offload_omp_host.lo \ - liboffloadmic_host_la-offload_orsl.lo \ - liboffloadmic_host_la-offload_timer_host.lo \ - liboffloadmic_host_la-orsl-lite.lo -liboffloadmic_host_la_OBJECTS = $(am_liboffloadmic_host_la_OBJECTS) -liboffloadmic_host_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ - $(AM_CXXFLAGS) $(CXXFLAGS) $(liboffloadmic_host_la_LDFLAGS) \ - $(LDFLAGS) -o $@ -@LIBOFFLOADMIC_HOST_TRUE@am_liboffloadmic_host_la_rpath = -rpath \ -@LIBOFFLOADMIC_HOST_TRUE@ $(toolexeclibdir) -am__objects_2 = liboffloadmic_target_la-dv_util.lo \ - liboffloadmic_target_la-liboffload_error.lo \ - liboffloadmic_target_la-liboffload_msg.lo \ - liboffloadmic_target_la-offload_common.lo \ - liboffloadmic_target_la-offload_table.lo \ - liboffloadmic_target_la-offload_trace.lo \ - liboffloadmic_target_la-offload_util.lo -am_liboffloadmic_target_la_OBJECTS = $(am__objects_2) \ - liboffloadmic_target_la-coi_server.lo \ - liboffloadmic_target_la-compiler_if_target.lo \ - liboffloadmic_target_la-offload_omp_target.lo \ - liboffloadmic_target_la-offload_target.lo \ - liboffloadmic_target_la-offload_timer_target.lo -liboffloadmic_target_la_OBJECTS = \ - $(am_liboffloadmic_target_la_OBJECTS) -liboffloadmic_target_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ - $(AM_CXXFLAGS) $(CXXFLAGS) $(liboffloadmic_target_la_LDFLAGS) \ - $(LDFLAGS) -o $@ -@LIBOFFLOADMIC_HOST_FALSE@am_liboffloadmic_target_la_rpath = -rpath \ -@LIBOFFLOADMIC_HOST_FALSE@ $(toolexeclibdir) -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__depfiles_maybe = depfiles -am__mv = mv -f -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 = -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) -AM_V_CXX = $(am__v_CXX_@AM_V@) -am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) -am__v_CXX_0 = @echo " CXX " $@; -am__v_CXX_1 = -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) -am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) -am__v_CXXLD_0 = @echo " CXXLD " $@; -am__v_CXXLD_1 = -SOURCES = $(libcoi_device_la_SOURCES) $(libcoi_host_la_SOURCES) \ - $(liboffloadmic_host_la_SOURCES) \ - $(liboffloadmic_target_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 -HEADERS = $(nodist_libsubinclude_HEADERS) \ - $(nodist_toolexeclib_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 -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 -CSCOPE = cscope -DIST_SUBDIRS = $(SUBDIRS) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -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@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -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@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -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@ -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@ -get_gcc_base_ver = @get_gcc_base_ver@ -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@ -link_offloadmic_host = @link_offloadmic_host@ -link_offloadmic_target = @link_offloadmic_target@ -localedir = @localedir@ -localstatedir = @localstatedir@ -lt_cv_dlopen_libs = @lt_cv_dlopen_libs@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -multi_basedir = @multi_basedir@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -subdirs = @subdirs@ -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 -ACLOCAL_AMFLAGS = -I .. -I ../config - -# Build plugin for Intel MIC -SUBDIRS = . plugin - -# Directories. -build_dir = $(top_builddir) -coi_inc_dir = $(top_srcdir)/include/coi -libgomp_dir = $(build_dir)/../libgomp -source_dir = $(top_srcdir)/runtime - -# May be used by toolexeclibdir. -gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) -libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include -@LIBOFFLOADMIC_HOST_FALSE@nodist_toolexeclib_HEADERS = liboffloadmic_target.spec - -# Target list. -@LIBOFFLOADMIC_HOST_TRUE@nodist_toolexeclib_HEADERS = liboffloadmic_host.spec -@LIBOFFLOADMIC_HOST_FALSE@toolexeclib_LTLIBRARIES = libcoi_device.la liboffloadmic_target.la -@LIBOFFLOADMIC_HOST_TRUE@toolexeclib_LTLIBRARIES = libcoi_host.la liboffloadmic_host.la -@LIBOFFLOADMIC_HOST_FALSE@nodist_libsubinclude_HEADERS = runtime/compiler_if_target.h -@LIBOFFLOADMIC_HOST_TRUE@nodist_libsubinclude_HEADERS = runtime/compiler_if_host.h -@LIBOFFLOADMIC_HOST_FALSE@ofld_obj = ofldbegin.o ofldend.o -@LIBOFFLOADMIC_HOST_TRUE@ofld_obj = - -# Liboffloadmic. -liboffloadmic_sources = runtime/dv_util.cpp \ - runtime/liboffload_error.c \ - runtime/liboffload_msg.c \ - runtime/offload_common.cpp \ - runtime/offload_table.cpp \ - runtime/offload_trace.cpp \ - runtime/offload_util.cpp - -liboffloadmic_cppflags = -DLINUX -DCOI_LIBRARY_VERSION=2 -DOFFLOAD_DEBUG=1 -DSEP_SUPPORT -DTIMING_SUPPORT -I$(coi_inc_dir) -I$(source_dir) -I$(libgomp_dir) -liboffloadmic_host_la_SOURCES = $(liboffloadmic_sources) \ - runtime/cean_util.cpp \ - runtime/coi/coi_client.cpp \ - runtime/compiler_if_host.cpp \ - runtime/offload_engine.cpp \ - runtime/offload_env.cpp \ - runtime/offload_host.cpp \ - runtime/offload_omp_host.cpp \ - runtime/offload_orsl.cpp \ - runtime/offload_timer_host.cpp \ - runtime/orsl-lite/lib/orsl-lite.c - -liboffloadmic_host_la_CPPFLAGS = $(liboffloadmic_cppflags) -DHOST_LIBRARY=1 -liboffloadmic_host_la_LDFLAGS = @lt_cv_dlopen_libs@ -version-info 5:0:0 -liboffloadmic_target_la_SOURCES = $(liboffloadmic_sources) \ - runtime/coi/coi_server.cpp \ - runtime/compiler_if_target.cpp \ - runtime/offload_omp_target.cpp \ - runtime/offload_target.cpp \ - runtime/offload_timer_target.cpp - -liboffloadmic_target_la_CPPFLAGS = $(liboffloadmic_cppflags) -DHOST_LIBRARY=0 -liboffloadmic_target_la_LDFLAGS = @lt_cv_dlopen_libs@ -version-info 5:0:0 -liboffloadmic_target_la_LIBADD = libcoi_device.la -liboffloadmic_target_la_DEPENDENCIES = $(liboffloadmic_target_la_LIBADD) - -# Emulator. -libcoi_host_la_SOURCES = runtime/emulator/coi_host.cpp -libcoi_device_la_SOURCES = runtime/emulator/coi_device.cpp -libcoi_host_la_DEPENDENCIES = runtime/emulator/coi_version_linker_script.map -libcoi_device_la_DEPENDENCIES = runtime/emulator/coi_version_linker_script.map -libcoi_host_la_CPPFLAGS = -I$(coi_inc_dir) -libcoi_device_la_CPPFLAGS = -I$(coi_inc_dir) -libcoi_host_la_LDFLAGS = -lrt -Wl,--version-script=$(source_dir)/emulator/coi_version_linker_script.map -libcoi_device_la_LDFLAGS = -lrt -Wl,--version-script=$(source_dir)/emulator/coi_version_linker_script.map - -# Work around what appears to be a GNU make bug handling MAKEFLAGS -# values defined in terms of make variables, as is the case for CC and -# friends when we are called from the top level Makefile. -AM_MAKEFLAGS = \ - "AR_FLAGS=$(AR_FLAGS)" \ - "CC_FOR_BUILD=$(CC_FOR_BUILD)" \ - "CFLAGS=$(CFLAGS)" \ - "CXXFLAGS=$(CXXFLAGS)" \ - "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \ - "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \ - "INSTALL=$(INSTALL)" \ - "INSTALL_DATA=$(INSTALL_DATA)" \ - "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ - "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \ - "JC1FLAGS=$(JC1FLAGS)" \ - "LDFLAGS=$(LDFLAGS)" \ - "LIBCFLAGS=$(LIBCFLAGS)" \ - "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \ - "MAKE=$(MAKE)" \ - "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \ - "PICFLAG=$(PICFLAG)" \ - "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \ - "SHELL=$(SHELL)" \ - "RUNTESTFLAGS=$(RUNTESTFLAGS)" \ - "exec_prefix=$(exec_prefix)" \ - "infodir=$(infodir)" \ - "libdir=$(libdir)" \ - "prefix=$(prefix)" \ - "includedir=$(includedir)" \ - "AR=$(AR)" \ - "AS=$(AS)" \ - "LD=$(LD)" \ - "LIBCFLAGS=$(LIBCFLAGS)" \ - "NM=$(NM)" \ - "PICFLAG=$(PICFLAG)" \ - "RANLIB=$(RANLIB)" \ - "DESTDIR=$(DESTDIR)" - -MAKEOVERRIDES = -MULTISRCTOP = -MULTIBUILDTOP = -MULTIDIRS = -MULTISUBDIR = -MULTIDO = true -MULTICLEAN = true -all: all-recursive - -.SUFFIXES: -.SUFFIXES: .c .cpp .lo .o .obj -am--refresh: Makefile - @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.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__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ - esac; -$(top_srcdir)/../multilib.am $(am__empty): - -$(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): -liboffloadmic_host.spec: $(top_builddir)/config.status $(srcdir)/liboffloadmic_host.spec.in - cd $(top_builddir) && $(SHELL) ./config.status $@ -liboffloadmic_target.spec: $(top_builddir)/config.status $(srcdir)/liboffloadmic_target.spec.in - cd $(top_builddir) && $(SHELL) ./config.status $@ - -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}; \ - } - -libcoi_device.la: $(libcoi_device_la_OBJECTS) $(libcoi_device_la_DEPENDENCIES) $(EXTRA_libcoi_device_la_DEPENDENCIES) - $(AM_V_CXXLD)$(libcoi_device_la_LINK) $(am_libcoi_device_la_rpath) $(libcoi_device_la_OBJECTS) $(libcoi_device_la_LIBADD) $(LIBS) - -libcoi_host.la: $(libcoi_host_la_OBJECTS) $(libcoi_host_la_DEPENDENCIES) $(EXTRA_libcoi_host_la_DEPENDENCIES) - $(AM_V_CXXLD)$(libcoi_host_la_LINK) $(am_libcoi_host_la_rpath) $(libcoi_host_la_OBJECTS) $(libcoi_host_la_LIBADD) $(LIBS) - -liboffloadmic_host.la: $(liboffloadmic_host_la_OBJECTS) $(liboffloadmic_host_la_DEPENDENCIES) $(EXTRA_liboffloadmic_host_la_DEPENDENCIES) - $(AM_V_CXXLD)$(liboffloadmic_host_la_LINK) $(am_liboffloadmic_host_la_rpath) $(liboffloadmic_host_la_OBJECTS) $(liboffloadmic_host_la_LIBADD) $(LIBS) - -liboffloadmic_target.la: $(liboffloadmic_target_la_OBJECTS) $(liboffloadmic_target_la_DEPENDENCIES) $(EXTRA_liboffloadmic_target_la_DEPENDENCIES) - $(AM_V_CXXLD)$(liboffloadmic_target_la_LINK) $(am_liboffloadmic_target_la_rpath) $(liboffloadmic_target_la_OBJECTS) $(liboffloadmic_target_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoi_device_la-coi_device.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoi_host_la-coi_host.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboffloadmic_host_la-cean_util.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboffloadmic_host_la-coi_client.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboffloadmic_host_la-compiler_if_host.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboffloadmic_host_la-dv_util.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboffloadmic_host_la-liboffload_error.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboffloadmic_host_la-liboffload_msg.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboffloadmic_host_la-offload_common.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboffloadmic_host_la-offload_engine.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboffloadmic_host_la-offload_env.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboffloadmic_host_la-offload_host.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboffloadmic_host_la-offload_omp_host.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboffloadmic_host_la-offload_orsl.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboffloadmic_host_la-offload_table.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboffloadmic_host_la-offload_timer_host.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboffloadmic_host_la-offload_trace.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboffloadmic_host_la-offload_util.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboffloadmic_host_la-orsl-lite.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboffloadmic_target_la-coi_server.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboffloadmic_target_la-compiler_if_target.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboffloadmic_target_la-dv_util.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboffloadmic_target_la-liboffload_error.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboffloadmic_target_la-liboffload_msg.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboffloadmic_target_la-offload_common.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboffloadmic_target_la-offload_omp_target.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboffloadmic_target_la-offload_table.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboffloadmic_target_la-offload_target.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboffloadmic_target_la-offload_timer_target.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboffloadmic_target_la-offload_trace.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboffloadmic_target_la-offload_util.Plo@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.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)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.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)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.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 $@ $< - -liboffloadmic_host_la-liboffload_error.lo: runtime/liboffload_error.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_host_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboffloadmic_host_la-liboffload_error.lo -MD -MP -MF $(DEPDIR)/liboffloadmic_host_la-liboffload_error.Tpo -c -o liboffloadmic_host_la-liboffload_error.lo `test -f 'runtime/liboffload_error.c' || echo '$(srcdir)/'`runtime/liboffload_error.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboffloadmic_host_la-liboffload_error.Tpo $(DEPDIR)/liboffloadmic_host_la-liboffload_error.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='runtime/liboffload_error.c' object='liboffloadmic_host_la-liboffload_error.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_host_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboffloadmic_host_la-liboffload_error.lo `test -f 'runtime/liboffload_error.c' || echo '$(srcdir)/'`runtime/liboffload_error.c - -liboffloadmic_host_la-liboffload_msg.lo: runtime/liboffload_msg.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_host_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboffloadmic_host_la-liboffload_msg.lo -MD -MP -MF $(DEPDIR)/liboffloadmic_host_la-liboffload_msg.Tpo -c -o liboffloadmic_host_la-liboffload_msg.lo `test -f 'runtime/liboffload_msg.c' || echo '$(srcdir)/'`runtime/liboffload_msg.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboffloadmic_host_la-liboffload_msg.Tpo $(DEPDIR)/liboffloadmic_host_la-liboffload_msg.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='runtime/liboffload_msg.c' object='liboffloadmic_host_la-liboffload_msg.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_host_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboffloadmic_host_la-liboffload_msg.lo `test -f 'runtime/liboffload_msg.c' || echo '$(srcdir)/'`runtime/liboffload_msg.c - -liboffloadmic_host_la-orsl-lite.lo: runtime/orsl-lite/lib/orsl-lite.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_host_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboffloadmic_host_la-orsl-lite.lo -MD -MP -MF $(DEPDIR)/liboffloadmic_host_la-orsl-lite.Tpo -c -o liboffloadmic_host_la-orsl-lite.lo `test -f 'runtime/orsl-lite/lib/orsl-lite.c' || echo '$(srcdir)/'`runtime/orsl-lite/lib/orsl-lite.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboffloadmic_host_la-orsl-lite.Tpo $(DEPDIR)/liboffloadmic_host_la-orsl-lite.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='runtime/orsl-lite/lib/orsl-lite.c' object='liboffloadmic_host_la-orsl-lite.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_host_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboffloadmic_host_la-orsl-lite.lo `test -f 'runtime/orsl-lite/lib/orsl-lite.c' || echo '$(srcdir)/'`runtime/orsl-lite/lib/orsl-lite.c - -liboffloadmic_target_la-liboffload_error.lo: runtime/liboffload_error.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_target_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboffloadmic_target_la-liboffload_error.lo -MD -MP -MF $(DEPDIR)/liboffloadmic_target_la-liboffload_error.Tpo -c -o liboffloadmic_target_la-liboffload_error.lo `test -f 'runtime/liboffload_error.c' || echo '$(srcdir)/'`runtime/liboffload_error.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboffloadmic_target_la-liboffload_error.Tpo $(DEPDIR)/liboffloadmic_target_la-liboffload_error.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='runtime/liboffload_error.c' object='liboffloadmic_target_la-liboffload_error.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_target_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboffloadmic_target_la-liboffload_error.lo `test -f 'runtime/liboffload_error.c' || echo '$(srcdir)/'`runtime/liboffload_error.c - -liboffloadmic_target_la-liboffload_msg.lo: runtime/liboffload_msg.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_target_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboffloadmic_target_la-liboffload_msg.lo -MD -MP -MF $(DEPDIR)/liboffloadmic_target_la-liboffload_msg.Tpo -c -o liboffloadmic_target_la-liboffload_msg.lo `test -f 'runtime/liboffload_msg.c' || echo '$(srcdir)/'`runtime/liboffload_msg.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboffloadmic_target_la-liboffload_msg.Tpo $(DEPDIR)/liboffloadmic_target_la-liboffload_msg.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='runtime/liboffload_msg.c' object='liboffloadmic_target_la-liboffload_msg.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_target_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboffloadmic_target_la-liboffload_msg.lo `test -f 'runtime/liboffload_msg.c' || echo '$(srcdir)/'`runtime/liboffload_msg.c - -.cpp.o: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< - -.cpp.obj: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cpp.lo: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< - -libcoi_device_la-coi_device.lo: runtime/emulator/coi_device.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoi_device_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcoi_device_la-coi_device.lo -MD -MP -MF $(DEPDIR)/libcoi_device_la-coi_device.Tpo -c -o libcoi_device_la-coi_device.lo `test -f 'runtime/emulator/coi_device.cpp' || echo '$(srcdir)/'`runtime/emulator/coi_device.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcoi_device_la-coi_device.Tpo $(DEPDIR)/libcoi_device_la-coi_device.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='runtime/emulator/coi_device.cpp' object='libcoi_device_la-coi_device.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoi_device_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcoi_device_la-coi_device.lo `test -f 'runtime/emulator/coi_device.cpp' || echo '$(srcdir)/'`runtime/emulator/coi_device.cpp - -libcoi_host_la-coi_host.lo: runtime/emulator/coi_host.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoi_host_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcoi_host_la-coi_host.lo -MD -MP -MF $(DEPDIR)/libcoi_host_la-coi_host.Tpo -c -o libcoi_host_la-coi_host.lo `test -f 'runtime/emulator/coi_host.cpp' || echo '$(srcdir)/'`runtime/emulator/coi_host.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcoi_host_la-coi_host.Tpo $(DEPDIR)/libcoi_host_la-coi_host.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='runtime/emulator/coi_host.cpp' object='libcoi_host_la-coi_host.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoi_host_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcoi_host_la-coi_host.lo `test -f 'runtime/emulator/coi_host.cpp' || echo '$(srcdir)/'`runtime/emulator/coi_host.cpp - -liboffloadmic_host_la-dv_util.lo: runtime/dv_util.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_host_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liboffloadmic_host_la-dv_util.lo -MD -MP -MF $(DEPDIR)/liboffloadmic_host_la-dv_util.Tpo -c -o liboffloadmic_host_la-dv_util.lo `test -f 'runtime/dv_util.cpp' || echo '$(srcdir)/'`runtime/dv_util.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboffloadmic_host_la-dv_util.Tpo $(DEPDIR)/liboffloadmic_host_la-dv_util.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='runtime/dv_util.cpp' object='liboffloadmic_host_la-dv_util.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_host_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liboffloadmic_host_la-dv_util.lo `test -f 'runtime/dv_util.cpp' || echo '$(srcdir)/'`runtime/dv_util.cpp - -liboffloadmic_host_la-offload_common.lo: runtime/offload_common.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_host_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liboffloadmic_host_la-offload_common.lo -MD -MP -MF $(DEPDIR)/liboffloadmic_host_la-offload_common.Tpo -c -o liboffloadmic_host_la-offload_common.lo `test -f 'runtime/offload_common.cpp' || echo '$(srcdir)/'`runtime/offload_common.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboffloadmic_host_la-offload_common.Tpo $(DEPDIR)/liboffloadmic_host_la-offload_common.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='runtime/offload_common.cpp' object='liboffloadmic_host_la-offload_common.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_host_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liboffloadmic_host_la-offload_common.lo `test -f 'runtime/offload_common.cpp' || echo '$(srcdir)/'`runtime/offload_common.cpp - -liboffloadmic_host_la-offload_table.lo: runtime/offload_table.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_host_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liboffloadmic_host_la-offload_table.lo -MD -MP -MF $(DEPDIR)/liboffloadmic_host_la-offload_table.Tpo -c -o liboffloadmic_host_la-offload_table.lo `test -f 'runtime/offload_table.cpp' || echo '$(srcdir)/'`runtime/offload_table.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboffloadmic_host_la-offload_table.Tpo $(DEPDIR)/liboffloadmic_host_la-offload_table.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='runtime/offload_table.cpp' object='liboffloadmic_host_la-offload_table.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_host_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liboffloadmic_host_la-offload_table.lo `test -f 'runtime/offload_table.cpp' || echo '$(srcdir)/'`runtime/offload_table.cpp - -liboffloadmic_host_la-offload_trace.lo: runtime/offload_trace.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_host_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liboffloadmic_host_la-offload_trace.lo -MD -MP -MF $(DEPDIR)/liboffloadmic_host_la-offload_trace.Tpo -c -o liboffloadmic_host_la-offload_trace.lo `test -f 'runtime/offload_trace.cpp' || echo '$(srcdir)/'`runtime/offload_trace.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboffloadmic_host_la-offload_trace.Tpo $(DEPDIR)/liboffloadmic_host_la-offload_trace.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='runtime/offload_trace.cpp' object='liboffloadmic_host_la-offload_trace.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_host_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liboffloadmic_host_la-offload_trace.lo `test -f 'runtime/offload_trace.cpp' || echo '$(srcdir)/'`runtime/offload_trace.cpp - -liboffloadmic_host_la-offload_util.lo: runtime/offload_util.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_host_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liboffloadmic_host_la-offload_util.lo -MD -MP -MF $(DEPDIR)/liboffloadmic_host_la-offload_util.Tpo -c -o liboffloadmic_host_la-offload_util.lo `test -f 'runtime/offload_util.cpp' || echo '$(srcdir)/'`runtime/offload_util.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboffloadmic_host_la-offload_util.Tpo $(DEPDIR)/liboffloadmic_host_la-offload_util.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='runtime/offload_util.cpp' object='liboffloadmic_host_la-offload_util.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_host_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liboffloadmic_host_la-offload_util.lo `test -f 'runtime/offload_util.cpp' || echo '$(srcdir)/'`runtime/offload_util.cpp - -liboffloadmic_host_la-cean_util.lo: runtime/cean_util.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_host_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liboffloadmic_host_la-cean_util.lo -MD -MP -MF $(DEPDIR)/liboffloadmic_host_la-cean_util.Tpo -c -o liboffloadmic_host_la-cean_util.lo `test -f 'runtime/cean_util.cpp' || echo '$(srcdir)/'`runtime/cean_util.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboffloadmic_host_la-cean_util.Tpo $(DEPDIR)/liboffloadmic_host_la-cean_util.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='runtime/cean_util.cpp' object='liboffloadmic_host_la-cean_util.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_host_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liboffloadmic_host_la-cean_util.lo `test -f 'runtime/cean_util.cpp' || echo '$(srcdir)/'`runtime/cean_util.cpp - -liboffloadmic_host_la-coi_client.lo: runtime/coi/coi_client.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_host_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liboffloadmic_host_la-coi_client.lo -MD -MP -MF $(DEPDIR)/liboffloadmic_host_la-coi_client.Tpo -c -o liboffloadmic_host_la-coi_client.lo `test -f 'runtime/coi/coi_client.cpp' || echo '$(srcdir)/'`runtime/coi/coi_client.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboffloadmic_host_la-coi_client.Tpo $(DEPDIR)/liboffloadmic_host_la-coi_client.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='runtime/coi/coi_client.cpp' object='liboffloadmic_host_la-coi_client.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_host_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liboffloadmic_host_la-coi_client.lo `test -f 'runtime/coi/coi_client.cpp' || echo '$(srcdir)/'`runtime/coi/coi_client.cpp - -liboffloadmic_host_la-compiler_if_host.lo: runtime/compiler_if_host.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_host_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liboffloadmic_host_la-compiler_if_host.lo -MD -MP -MF $(DEPDIR)/liboffloadmic_host_la-compiler_if_host.Tpo -c -o liboffloadmic_host_la-compiler_if_host.lo `test -f 'runtime/compiler_if_host.cpp' || echo '$(srcdir)/'`runtime/compiler_if_host.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboffloadmic_host_la-compiler_if_host.Tpo $(DEPDIR)/liboffloadmic_host_la-compiler_if_host.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='runtime/compiler_if_host.cpp' object='liboffloadmic_host_la-compiler_if_host.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_host_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liboffloadmic_host_la-compiler_if_host.lo `test -f 'runtime/compiler_if_host.cpp' || echo '$(srcdir)/'`runtime/compiler_if_host.cpp - -liboffloadmic_host_la-offload_engine.lo: runtime/offload_engine.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_host_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liboffloadmic_host_la-offload_engine.lo -MD -MP -MF $(DEPDIR)/liboffloadmic_host_la-offload_engine.Tpo -c -o liboffloadmic_host_la-offload_engine.lo `test -f 'runtime/offload_engine.cpp' || echo '$(srcdir)/'`runtime/offload_engine.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboffloadmic_host_la-offload_engine.Tpo $(DEPDIR)/liboffloadmic_host_la-offload_engine.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='runtime/offload_engine.cpp' object='liboffloadmic_host_la-offload_engine.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_host_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liboffloadmic_host_la-offload_engine.lo `test -f 'runtime/offload_engine.cpp' || echo '$(srcdir)/'`runtime/offload_engine.cpp - -liboffloadmic_host_la-offload_env.lo: runtime/offload_env.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_host_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liboffloadmic_host_la-offload_env.lo -MD -MP -MF $(DEPDIR)/liboffloadmic_host_la-offload_env.Tpo -c -o liboffloadmic_host_la-offload_env.lo `test -f 'runtime/offload_env.cpp' || echo '$(srcdir)/'`runtime/offload_env.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboffloadmic_host_la-offload_env.Tpo $(DEPDIR)/liboffloadmic_host_la-offload_env.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='runtime/offload_env.cpp' object='liboffloadmic_host_la-offload_env.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_host_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liboffloadmic_host_la-offload_env.lo `test -f 'runtime/offload_env.cpp' || echo '$(srcdir)/'`runtime/offload_env.cpp - -liboffloadmic_host_la-offload_host.lo: runtime/offload_host.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_host_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liboffloadmic_host_la-offload_host.lo -MD -MP -MF $(DEPDIR)/liboffloadmic_host_la-offload_host.Tpo -c -o liboffloadmic_host_la-offload_host.lo `test -f 'runtime/offload_host.cpp' || echo '$(srcdir)/'`runtime/offload_host.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboffloadmic_host_la-offload_host.Tpo $(DEPDIR)/liboffloadmic_host_la-offload_host.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='runtime/offload_host.cpp' object='liboffloadmic_host_la-offload_host.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_host_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liboffloadmic_host_la-offload_host.lo `test -f 'runtime/offload_host.cpp' || echo '$(srcdir)/'`runtime/offload_host.cpp - -liboffloadmic_host_la-offload_omp_host.lo: runtime/offload_omp_host.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_host_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liboffloadmic_host_la-offload_omp_host.lo -MD -MP -MF $(DEPDIR)/liboffloadmic_host_la-offload_omp_host.Tpo -c -o liboffloadmic_host_la-offload_omp_host.lo `test -f 'runtime/offload_omp_host.cpp' || echo '$(srcdir)/'`runtime/offload_omp_host.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboffloadmic_host_la-offload_omp_host.Tpo $(DEPDIR)/liboffloadmic_host_la-offload_omp_host.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='runtime/offload_omp_host.cpp' object='liboffloadmic_host_la-offload_omp_host.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_host_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liboffloadmic_host_la-offload_omp_host.lo `test -f 'runtime/offload_omp_host.cpp' || echo '$(srcdir)/'`runtime/offload_omp_host.cpp - -liboffloadmic_host_la-offload_orsl.lo: runtime/offload_orsl.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_host_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liboffloadmic_host_la-offload_orsl.lo -MD -MP -MF $(DEPDIR)/liboffloadmic_host_la-offload_orsl.Tpo -c -o liboffloadmic_host_la-offload_orsl.lo `test -f 'runtime/offload_orsl.cpp' || echo '$(srcdir)/'`runtime/offload_orsl.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboffloadmic_host_la-offload_orsl.Tpo $(DEPDIR)/liboffloadmic_host_la-offload_orsl.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='runtime/offload_orsl.cpp' object='liboffloadmic_host_la-offload_orsl.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_host_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liboffloadmic_host_la-offload_orsl.lo `test -f 'runtime/offload_orsl.cpp' || echo '$(srcdir)/'`runtime/offload_orsl.cpp - -liboffloadmic_host_la-offload_timer_host.lo: runtime/offload_timer_host.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_host_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liboffloadmic_host_la-offload_timer_host.lo -MD -MP -MF $(DEPDIR)/liboffloadmic_host_la-offload_timer_host.Tpo -c -o liboffloadmic_host_la-offload_timer_host.lo `test -f 'runtime/offload_timer_host.cpp' || echo '$(srcdir)/'`runtime/offload_timer_host.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboffloadmic_host_la-offload_timer_host.Tpo $(DEPDIR)/liboffloadmic_host_la-offload_timer_host.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='runtime/offload_timer_host.cpp' object='liboffloadmic_host_la-offload_timer_host.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_host_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liboffloadmic_host_la-offload_timer_host.lo `test -f 'runtime/offload_timer_host.cpp' || echo '$(srcdir)/'`runtime/offload_timer_host.cpp - -liboffloadmic_target_la-dv_util.lo: runtime/dv_util.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_target_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liboffloadmic_target_la-dv_util.lo -MD -MP -MF $(DEPDIR)/liboffloadmic_target_la-dv_util.Tpo -c -o liboffloadmic_target_la-dv_util.lo `test -f 'runtime/dv_util.cpp' || echo '$(srcdir)/'`runtime/dv_util.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboffloadmic_target_la-dv_util.Tpo $(DEPDIR)/liboffloadmic_target_la-dv_util.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='runtime/dv_util.cpp' object='liboffloadmic_target_la-dv_util.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_target_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liboffloadmic_target_la-dv_util.lo `test -f 'runtime/dv_util.cpp' || echo '$(srcdir)/'`runtime/dv_util.cpp - -liboffloadmic_target_la-offload_common.lo: runtime/offload_common.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_target_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liboffloadmic_target_la-offload_common.lo -MD -MP -MF $(DEPDIR)/liboffloadmic_target_la-offload_common.Tpo -c -o liboffloadmic_target_la-offload_common.lo `test -f 'runtime/offload_common.cpp' || echo '$(srcdir)/'`runtime/offload_common.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboffloadmic_target_la-offload_common.Tpo $(DEPDIR)/liboffloadmic_target_la-offload_common.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='runtime/offload_common.cpp' object='liboffloadmic_target_la-offload_common.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_target_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liboffloadmic_target_la-offload_common.lo `test -f 'runtime/offload_common.cpp' || echo '$(srcdir)/'`runtime/offload_common.cpp - -liboffloadmic_target_la-offload_table.lo: runtime/offload_table.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_target_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liboffloadmic_target_la-offload_table.lo -MD -MP -MF $(DEPDIR)/liboffloadmic_target_la-offload_table.Tpo -c -o liboffloadmic_target_la-offload_table.lo `test -f 'runtime/offload_table.cpp' || echo '$(srcdir)/'`runtime/offload_table.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboffloadmic_target_la-offload_table.Tpo $(DEPDIR)/liboffloadmic_target_la-offload_table.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='runtime/offload_table.cpp' object='liboffloadmic_target_la-offload_table.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_target_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liboffloadmic_target_la-offload_table.lo `test -f 'runtime/offload_table.cpp' || echo '$(srcdir)/'`runtime/offload_table.cpp - -liboffloadmic_target_la-offload_trace.lo: runtime/offload_trace.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_target_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liboffloadmic_target_la-offload_trace.lo -MD -MP -MF $(DEPDIR)/liboffloadmic_target_la-offload_trace.Tpo -c -o liboffloadmic_target_la-offload_trace.lo `test -f 'runtime/offload_trace.cpp' || echo '$(srcdir)/'`runtime/offload_trace.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboffloadmic_target_la-offload_trace.Tpo $(DEPDIR)/liboffloadmic_target_la-offload_trace.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='runtime/offload_trace.cpp' object='liboffloadmic_target_la-offload_trace.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_target_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liboffloadmic_target_la-offload_trace.lo `test -f 'runtime/offload_trace.cpp' || echo '$(srcdir)/'`runtime/offload_trace.cpp - -liboffloadmic_target_la-offload_util.lo: runtime/offload_util.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_target_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liboffloadmic_target_la-offload_util.lo -MD -MP -MF $(DEPDIR)/liboffloadmic_target_la-offload_util.Tpo -c -o liboffloadmic_target_la-offload_util.lo `test -f 'runtime/offload_util.cpp' || echo '$(srcdir)/'`runtime/offload_util.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboffloadmic_target_la-offload_util.Tpo $(DEPDIR)/liboffloadmic_target_la-offload_util.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='runtime/offload_util.cpp' object='liboffloadmic_target_la-offload_util.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_target_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liboffloadmic_target_la-offload_util.lo `test -f 'runtime/offload_util.cpp' || echo '$(srcdir)/'`runtime/offload_util.cpp - -liboffloadmic_target_la-coi_server.lo: runtime/coi/coi_server.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_target_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liboffloadmic_target_la-coi_server.lo -MD -MP -MF $(DEPDIR)/liboffloadmic_target_la-coi_server.Tpo -c -o liboffloadmic_target_la-coi_server.lo `test -f 'runtime/coi/coi_server.cpp' || echo '$(srcdir)/'`runtime/coi/coi_server.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboffloadmic_target_la-coi_server.Tpo $(DEPDIR)/liboffloadmic_target_la-coi_server.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='runtime/coi/coi_server.cpp' object='liboffloadmic_target_la-coi_server.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_target_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liboffloadmic_target_la-coi_server.lo `test -f 'runtime/coi/coi_server.cpp' || echo '$(srcdir)/'`runtime/coi/coi_server.cpp - -liboffloadmic_target_la-compiler_if_target.lo: runtime/compiler_if_target.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_target_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liboffloadmic_target_la-compiler_if_target.lo -MD -MP -MF $(DEPDIR)/liboffloadmic_target_la-compiler_if_target.Tpo -c -o liboffloadmic_target_la-compiler_if_target.lo `test -f 'runtime/compiler_if_target.cpp' || echo '$(srcdir)/'`runtime/compiler_if_target.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboffloadmic_target_la-compiler_if_target.Tpo $(DEPDIR)/liboffloadmic_target_la-compiler_if_target.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='runtime/compiler_if_target.cpp' object='liboffloadmic_target_la-compiler_if_target.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_target_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liboffloadmic_target_la-compiler_if_target.lo `test -f 'runtime/compiler_if_target.cpp' || echo '$(srcdir)/'`runtime/compiler_if_target.cpp - -liboffloadmic_target_la-offload_omp_target.lo: runtime/offload_omp_target.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_target_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liboffloadmic_target_la-offload_omp_target.lo -MD -MP -MF $(DEPDIR)/liboffloadmic_target_la-offload_omp_target.Tpo -c -o liboffloadmic_target_la-offload_omp_target.lo `test -f 'runtime/offload_omp_target.cpp' || echo '$(srcdir)/'`runtime/offload_omp_target.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboffloadmic_target_la-offload_omp_target.Tpo $(DEPDIR)/liboffloadmic_target_la-offload_omp_target.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='runtime/offload_omp_target.cpp' object='liboffloadmic_target_la-offload_omp_target.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_target_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liboffloadmic_target_la-offload_omp_target.lo `test -f 'runtime/offload_omp_target.cpp' || echo '$(srcdir)/'`runtime/offload_omp_target.cpp - -liboffloadmic_target_la-offload_target.lo: runtime/offload_target.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_target_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liboffloadmic_target_la-offload_target.lo -MD -MP -MF $(DEPDIR)/liboffloadmic_target_la-offload_target.Tpo -c -o liboffloadmic_target_la-offload_target.lo `test -f 'runtime/offload_target.cpp' || echo '$(srcdir)/'`runtime/offload_target.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboffloadmic_target_la-offload_target.Tpo $(DEPDIR)/liboffloadmic_target_la-offload_target.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='runtime/offload_target.cpp' object='liboffloadmic_target_la-offload_target.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_target_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liboffloadmic_target_la-offload_target.lo `test -f 'runtime/offload_target.cpp' || echo '$(srcdir)/'`runtime/offload_target.cpp - -liboffloadmic_target_la-offload_timer_target.lo: runtime/offload_timer_target.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_target_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liboffloadmic_target_la-offload_timer_target.lo -MD -MP -MF $(DEPDIR)/liboffloadmic_target_la-offload_timer_target.Tpo -c -o liboffloadmic_target_la-offload_timer_target.lo `test -f 'runtime/offload_timer_target.cpp' || echo '$(srcdir)/'`runtime/offload_timer_target.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboffloadmic_target_la-offload_timer_target.Tpo $(DEPDIR)/liboffloadmic_target_la-offload_timer_target.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='runtime/offload_timer_target.cpp' object='liboffloadmic_target_la-offload_timer_target.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboffloadmic_target_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liboffloadmic_target_la-offload_timer_target.lo `test -f 'runtime/offload_timer_target.cpp' || echo '$(srcdir)/'`runtime/offload_timer_target.cpp - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool config.lt -install-nodist_libsubincludeHEADERS: $(nodist_libsubinclude_HEADERS) - @$(NORMAL_INSTALL) - @list='$(nodist_libsubinclude_HEADERS)'; test -n "$(libsubincludedir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(libsubincludedir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(libsubincludedir)" || 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)$(libsubincludedir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(libsubincludedir)" || exit $$?; \ - done - -uninstall-nodist_libsubincludeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(nodist_libsubinclude_HEADERS)'; test -n "$(libsubincludedir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(libsubincludedir)'; $(am__uninstall_files_from_dir) -install-nodist_toolexeclibHEADERS: $(nodist_toolexeclib_HEADERS) - @$(NORMAL_INSTALL) - @list='$(nodist_toolexeclib_HEADERS)'; test -n "$(toolexeclibdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(toolexeclibdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(toolexeclibdir)" || 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)$(toolexeclibdir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(toolexeclibdir)" || exit $$?; \ - done - -uninstall-nodist_toolexeclibHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(nodist_toolexeclib_HEADERS)'; test -n "$(toolexeclibdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(toolexeclibdir)'; $(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 -check-am: all-am -check: check-recursive -all-am: Makefile $(LTLIBRARIES) $(HEADERS) all-local -installdirs: installdirs-recursive -installdirs-am: - for dir in "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(libsubincludedir)" "$(DESTDIR)$(toolexeclibdir)"; 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) - -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-local \ - clean-toolexeclibLTLIBRARIES mostlyclean-am - -distclean: distclean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-local distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: install-nodist_libsubincludeHEADERS - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: install-exec-local install-nodist_toolexeclibHEADERS \ - 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 -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic \ - maintainer-clean-local - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool mostlyclean-local - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: uninstall-nodist_libsubincludeHEADERS \ - uninstall-nodist_toolexeclibHEADERS \ - uninstall-toolexeclibLTLIBRARIES - -.MAKE: $(am__recursive_targets) install-am install-strip - -.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \ - am--refresh check check-am clean clean-cscope clean-generic \ - clean-libtool clean-local clean-toolexeclibLTLIBRARIES cscope \ - cscopelist-am ctags ctags-am distclean distclean-compile \ - distclean-generic distclean-libtool distclean-local \ - distclean-tags 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-exec-local \ - install-html install-html-am install-info install-info-am \ - install-man install-nodist_libsubincludeHEADERS \ - install-nodist_toolexeclibHEADERS install-pdf install-pdf-am \ - install-ps install-ps-am install-strip \ - install-toolexeclibLTLIBRARIES installcheck installcheck-am \ - installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic maintainer-clean-local mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - mostlyclean-local pdf pdf-am ps ps-am tags tags-am uninstall \ - uninstall-am uninstall-nodist_libsubincludeHEADERS \ - uninstall-nodist_toolexeclibHEADERS \ - uninstall-toolexeclibLTLIBRARIES - -.PRECIOUS: Makefile - - -# ofldbegin, ofldend -all-local: $(ofld_obj) - -ofldbegin.o: runtime/ofldbegin.cpp - $(CXXCOMPILE) $(liboffloadmic_target_la_CPPFLAGS) -c $< -o $@ - -ofldend.o: runtime/ofldend.cpp - $(CXXCOMPILE) $(liboffloadmic_target_la_CPPFLAGS) -c $< -o $@ - -# GNU Make needs to see an explicit $(MAKE) variable in the command it -# runs to enable its job server during parallel builds. Hence the -# comments below. -all-multi: - $(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do # $(MAKE) -install-multi: - $(MULTIDO) $(AM_MAKEFLAGS) DO=install multi-do # $(MAKE) -mostlyclean-multi: - $(MULTICLEAN) $(AM_MAKEFLAGS) DO=mostlyclean multi-clean # $(MAKE) -clean-multi: - $(MULTICLEAN) $(AM_MAKEFLAGS) DO=clean multi-clean # $(MAKE) -distclean-multi: - $(MULTICLEAN) $(AM_MAKEFLAGS) DO=distclean multi-clean # $(MAKE) -maintainer-clean-multi: - $(MULTICLEAN) $(AM_MAKEFLAGS) DO=maintainer-clean multi-clean # $(MAKE) - -.MAKE .PHONY: all-multi clean-multi distclean-multi install-am \ - install-multi maintainer-clean-multi mostlyclean-multi - -install-exec-local: install-multi - -all-local: all-multi -mostlyclean-local: mostlyclean-multi -clean-local: clean-multi -distclean-local: distclean-multi -maintainer-clean-local: maintainer-clean-multi - -# 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/liboffloadmic/aclocal.m4 b/liboffloadmic/aclocal.m4 deleted file mode 100644 index 31a2695..0000000 --- a/liboffloadmic/aclocal.m4 +++ /dev/null @@ -1,1180 +0,0 @@ -# generated automatically by aclocal 1.15.1 -*- Autoconf -*- - -# Copyright (C) 1996-2017 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'.])]) - -# Copyright (C) 2002-2017 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.15' -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.15.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.15.1])dnl -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) - -# AM_AUX_DIR_EXPAND -*- Autoconf -*- - -# Copyright (C) 2001-2017 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-2017 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-2017 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-2017 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. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named 'Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running 'make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "$am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} -])# _AM_OUTPUT_DEPENDENCY_COMMANDS - - -# AM_OUTPUT_DEPENDENCY_COMMANDS -# ----------------------------- -# This macro should only be invoked once -- use via AC_REQUIRE. -# -# This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each '.P' file that we will -# need in order to bootstrap the dependency handling code. -AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], -[AC_CONFIG_COMMANDS([depfiles], - [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) -]) - -# Do all the work for Automake. -*- Autoconf -*- - -# Copyright (C) 1996-2017 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: -# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html> -# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html> -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: <http://austingroupbugs.net/view.php?id=542> - -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: <http://www.gnu.org/software/coreutils/>. - -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-2017 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])]) - -# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- -# From Jim Meyering - -# Copyright (C) 1996-2017 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-2017 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 to see how make treats includes. -AC_DEFUN([AM_MAKE_INCLUDE], -[am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -AC_MSG_CHECKING([for style of include used by $am_make]) -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from 'make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi -AC_SUBST([am__include]) -AC_SUBST([am__quote]) -AC_MSG_RESULT([$_am_result]) -rm -f confinc confmf -]) - -# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- - -# Copyright (C) 1997-2017 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-2017 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-2017 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-2017 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-2017 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-2017 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-2017 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-2017 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-2017 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 <conftest.tar]) - AM_RUN_LOG([cat conftest.dir/file]) - grep GrepMe conftest.dir/file >/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([../config/acx.m4]) -m4_include([../config/depstand.m4]) -m4_include([../config/lead-dot.m4]) -m4_include([../config/multi.m4]) -m4_include([../config/override.m4]) -m4_include([../config/toolexeclibdir.m4]) -m4_include([../libtool.m4]) -m4_include([../ltoptions.m4]) -m4_include([../ltsugar.m4]) -m4_include([../ltversion.m4]) -m4_include([../lt~obsolete.m4]) diff --git a/liboffloadmic/configure b/liboffloadmic/configure deleted file mode 100755 index b3cfff7..0000000 --- a/liboffloadmic/configure +++ /dev/null @@ -1,17512 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for MIC Offload Runtime Library 1.0. -# -# -# 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 \$(( 1 + 1 )) = 2 || 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" - 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 about your system, -$0: 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 </dev/null -exec 6>&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='MIC Offload Runtime Library' -PACKAGE_TARNAME='liboffloadmic' -PACKAGE_VERSION='1.0' -PACKAGE_STRING='MIC Offload Runtime Library 1.0' -PACKAGE_BUGREPORT='' -PACKAGE_URL='' - -enable_option_checking=no -# Factoring default headers for most tests. -ac_includes_default="\ -#include <stdio.h> -#ifdef HAVE_SYS_TYPES_H -# include <sys/types.h> -#endif -#ifdef HAVE_SYS_STAT_H -# include <sys/stat.h> -#endif -#ifdef STDC_HEADERS -# include <stdlib.h> -# include <stddef.h> -#else -# ifdef HAVE_STDLIB_H -# include <stdlib.h> -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include <memory.h> -# endif -# include <string.h> -#endif -#ifdef HAVE_STRINGS_H -# include <strings.h> -#endif -#ifdef HAVE_INTTYPES_H -# include <inttypes.h> -#endif -#ifdef HAVE_STDINT_H -# include <stdint.h> -#endif -#ifdef HAVE_UNISTD_H -# include <unistd.h> -#endif" - -ac_subst_vars='am__EXEEXT_FALSE -am__EXEEXT_TRUE -LTLIBOBJS -LIBOBJS -get_gcc_base_ver -link_offloadmic_target -link_offloadmic_host -lt_cv_dlopen_libs -toolexeclibdir -toolexecdir -CXXCPP -OTOOL64 -OTOOL -LIPO -NMEDIT -DSYMUTIL -RANLIB -AR -OBJDUMP -LN_S -NM -ac_ct_DUMPBIN -DUMPBIN -LD -FGREP -SED -LIBTOOL -LIBOFFLOADMIC_HOST_FALSE -LIBOFFLOADMIC_HOST_TRUE -ALLOCA -EGREP -GREP -CPP -subdirs -multi_basedir -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__quote -am__include -DEPDIR -OBJEXT -EXEEXT -ac_ct_CC -CPPFLAGS -LDFLAGS -CFLAGS -CC -MAINT -MAINTAINER_MODE_FALSE -MAINTAINER_MODE_TRUE -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 -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' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -enable_silent_rules -enable_maintainer_mode -enable_dependency_tracking -enable_multilib -enable_version_specific_runtime_libs -with_toolexeclibdir -enable_shared -enable_static -with_pic -enable_fast_install -with_gnu_ld -enable_libtool_lock -with_gcc_major_version_only -' - ac_precious_vars='build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -CXX -CXXFLAGS -CCC -CPP -CXXCPP' -ac_subdirs_all='plugin' - -# 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 MIC Offload Runtime Library 1.0 to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking ...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -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/liboffloadmic] - --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 MIC Offload Runtime Library 1.0:";; - 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] - --enable-silent-rules less verbose build output (undo: "make V=1") - --disable-silent-rules verbose build output (undo: "make V=0") - --enable-maintainer-mode - enable make rules and dependencies not useful (and - sometimes confusing) to the casual installer - --enable-dependency-tracking - do not reject slow dependency extractors - --disable-dependency-tracking - speeds up one-time build - --enable-multilib build many library versions (default) - --enable-version-specific-runtime-libs - Specify that runtime libraries should be installed - in a compiler-specific directory - --enable-shared[=PKGS] build shared libraries [default=yes] - --enable-static[=PKGS] build static libraries [default=yes] - --enable-fast-install[=PKGS] - optimize for fast installation [default=yes] - --disable-libtool-lock avoid locking (might break parallel builds) - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-toolexeclibdir=DIR - install libraries built with a cross compiler within - DIR - --with-pic try to use only PIC/non-PIC objects [default=use - both] - --with-gnu-ld assume the C compiler uses GNU ld [default=no] - --with-gcc-major-version-only - use only GCC major number in filesystem paths - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a - nonstandard directory <lib dir> - LIBS libraries to pass to the linker, e.g. -l<library> - CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if - you have headers in a nonstandard directory <include dir> - CXX C++ compiler command - CXXFLAGS C++ compiler flags - 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 the package provider. -_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 -MIC Offload Runtime Library configure 1.0 -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_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 - -# 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_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_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_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 <limits.h> declares $2. - For example, HP-UX 11i <limits.h> declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#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_c_check_header_mongrel LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $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 -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;} - ;; -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_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 -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 MIC Offload Runtime Library $as_me 1.0, 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_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} - - -am__api_version='1.15' - -# 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"` - -# Expand $ac_aux_dir to an absolute path. -am_aux_dir=`cd "$ac_aux_dir" && pwd` - -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='liboffloadmic' - VERSION='1.0' - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE "$PACKAGE" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define VERSION "$VERSION" -_ACEOF - -# Some tools Automake needs. - -ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} - - -AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} - - -AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} - - -AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} - - -MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} - -# For better backward compatibility. To be removed once Automake 1.9.x -# dies out for good. For more background, see: -# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html> -# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html> -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: <http://austingroupbugs.net/view.php?id=542> - -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: <http://www.gnu.org/software/coreutils/>. - -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 - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&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 - - - -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 <stdio.h> -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 <stdarg.h> -#include <stdio.h> -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" - - -am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 -$as_echo_n "checking for style of include used by $am_make... " >&6; } -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from 'make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 -$as_echo "$_am_result" >&6; } -rm -f confinc confmf - -# 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 - - -ac_config_files="$ac_config_files Makefile liboffloadmic_host.spec liboffloadmic_target.spec" - -# Default to --enable-multilib -# Check whether --enable-multilib was given. -if test "${enable_multilib+set}" = set; then : - enableval=$enable_multilib; case "$enableval" in - yes) multilib=yes ;; - no) multilib=no ;; - *) as_fn_error $? "bad value $enableval for multilib option" "$LINENO" 5 ;; - esac -else - multilib=yes -fi - - -# We may get other options which we leave undocumented: -# --with-target-subdir, --with-multisrctop, --with-multisubdir -# See config-ml.in if you want the gory details. - -if test "$srcdir" = "."; then - if test "$with_target_subdir" != "."; then - multi_basedir="$srcdir/$with_multisrctop../.." - else - multi_basedir="$srcdir/$with_multisrctop.." - fi -else - multi_basedir="$srcdir/.." -fi - - -# Even if the default multilib is not a cross compilation, -# it may be that some of the other multilibs are. -if test $cross_compiling = no && test $multilib = yes \ - && test "x${with_multisubdir}" != x ; then - cross_compiling=maybe -fi - -ac_config_commands="$ac_config_commands default-1" - - - -subdirs="$subdirs plugin" - - -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 <limits.h> to <assert.h> if __STDC__ is defined, since - # <limits.h> 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 <limits.h> -#else -# include <assert.h> -#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 <ac_nonexistent.h> -_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 <limits.h> to <assert.h> if __STDC__ is defined, since - # <limits.h> 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 <limits.h> -#else -# include <assert.h> -#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 <ac_nonexistent.h> -_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 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 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 <stdlib.h> -#include <stdarg.h> -#include <string.h> -#include <float.h> - -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 <string.h> - -_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 <stdlib.h> - -_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 <ctype.h> -#include <stdlib.h> -#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 - - -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 <alloca.h> -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 <malloc.h> -# define alloca _alloca -# else -# ifdef HAVE_ALLOCA_H -# include <alloca.h> -# 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 - -for ac_header in mm_malloc.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "mm_malloc.h" "ac_cv_header_mm_malloc_h" "$ac_includes_default" -if test "x$ac_cv_header_mm_malloc_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_MM_MALLOC_H 1 -_ACEOF - -else - as_fn_error $? "\"Couldn't find mm_malloc.h\"" "$LINENO" 5 -fi - -done - -for ac_func in __secure_getenv secure_getenv -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 - - -# Get target configure. -. ${srcdir}/configure.tgt -if test -n "$UNSUPPORTED"; then - as_fn_error $? "Configuration ${target} is unsupported" "$LINENO" 5 -fi - -if test "${multilib}" = "yes"; then - multilib_arg="--enable-multilib" -else - multilib_arg= -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --enable-version-specific-runtime-libs" >&5 -$as_echo_n "checking for --enable-version-specific-runtime-libs... " >&6; } -# Check whether --enable-version-specific-runtime-libs was given. -if test "${enable_version_specific_runtime_libs+set}" = set; then : - enableval=$enable_version_specific_runtime_libs; case "$enableval" in - yes) enable_version_specific_runtime_libs=yes ;; - no) enable_version_specific_runtime_libs=no ;; - *) as_fn_error $? "Unknown argument to enable/disable version-specific libs" "$LINENO" 5;; - esac -else - enable_version_specific_runtime_libs=no -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_version_specific_runtime_libs" >&5 -$as_echo "$enable_version_specific_runtime_libs" >&6; } - -# Make sure liboffloadmic is enabled -case "$enable_liboffloadmic" in - host | target) - ;; - *) - as_fn_error $? "Liboffloadmic is disabled" "$LINENO" 5 ;; -esac - if test x"$enable_liboffloadmic" = xhost; then - LIBOFFLOADMIC_HOST_TRUE= - LIBOFFLOADMIC_HOST_FALSE='#' -else - LIBOFFLOADMIC_HOST_TRUE='#' - LIBOFFLOADMIC_HOST_FALSE= -fi - - - -# Check whether --with-toolexeclibdir was given. -if test "${with_toolexeclibdir+set}" = set; then : - withval=$with_toolexeclibdir; case ${with_toolexeclibdir} in - /) - ;; - */) - with_toolexeclibdir=`echo $with_toolexeclibdir | sed 's,/$,,'` - ;; -esac -else - with_toolexeclibdir=no -fi - - - -# Calculate toolexeclibdir. -# Also toolexecdir, though it's only used in toolexeclibdir. -case ${enable_version_specific_runtime_libs} in - yes) - # Need the gcc compiler version to know where to install libraries - # and header files if --enable-version-specific-runtime-libs option - # is selected. - toolexecdir='$(libdir)/gcc/$(target_alias)' - toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)' - ;; - no) - if test -n "$with_cross_host" && - test x"$with_cross_host" != x"no"; then - # Install a library built with a cross compiler in tooldir, not libdir. - toolexecdir='$(exec_prefix)/$(target_alias)' - case ${with_toolexeclibdir} in - no) - toolexeclibdir='$(toolexecdir)/lib' - ;; - *) - toolexeclibdir=${with_toolexeclibdir} - ;; - esac - else - toolexecdir='$(libdir)/gcc-lib/$(target_alias)' - toolexeclibdir='$(libdir)' - fi - multi_os_directory=`$CC -print-multi-os-directory` - case $multi_os_directory in - .) ;; # Avoid trailing /. - *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; - esac - ;; -esac - -enable_dlopen=yes - - - -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.2.7a' -macro_revision='1.3134' - - - - - - - - - - - - - -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 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 "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { $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 "$with_gnu_ld" = yes; 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 </dev/null` in - *GNU* | *'with BFD'*) - test "$with_gnu_ld" != no && break - ;; - *) - test "$with_gnu_ld" != yes && break - ;; - esac - fi - done - IFS="$lt_save_ifs" -else - lt_cv_path_LD="$LD" # Let the user override the test with a path. -fi -fi - -LD="$lt_cv_path_LD" -if test -n "$LD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&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 </dev/null` in -*GNU* | *'with BFD'*) - lt_cv_prog_gnu_ld=yes - ;; -*) - lt_cv_prog_gnu_ld=no - ;; -esac -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&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 - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS="$lt_save_ifs" - 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 "$lt_cv_path_NM" != "no"; 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 /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols" - ;; - *) - 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; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for 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 - ;; - - 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"; 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"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 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"} - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 -$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 -$as_echo "$xsi_shell" >&6; } - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 -$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } -lt_shell_append=no -( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 -$as_echo "$lt_shell_append" >&6; } - - -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 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 - darwin*) - if test "$GCC" = yes; 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 -# which responds to the $file_magic_cmd with a given extended regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. - -case $host_os in -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. - # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. - if ( test "$lt_cv_nm_interface" = "BSD nm" && 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 - lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' - 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 - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -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 Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi) - 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*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -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 - ;; -vxworks*) - # Assume VxWorks cross toolchains are built on Linux, possibly - # as canadian for Windows hosts. - 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_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}ar", so it can be a program name with args. -set dummy ${ac_tool_prefix}ar; 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}ar" - $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 - - -fi -if test -z "$ac_cv_prog_AR"; then - ac_ct_AR=$AR - # Extract the first word of "ar", so it can be a program name with args. -set dummy ar; ac_word=$2 -{ $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="ar" - $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 - - 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 -else - AR="$ac_cv_prog_AR" -fi - -test -z "$AR" && AR=ar -test -z "$AR_FLAGS" && AR_FLAGS=cru - - - - - - - - - - - -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 - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$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 "$host_cpu" = ia64; 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 - -# 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 -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$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 -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/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 - # and D for any global 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};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print 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 - - # 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 -#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. */ -const struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$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_save_LIBS="$LIBS" - lt_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_save_LIBS" - CFLAGS="$lt_save_CFLAGS" - else - echo "cannot find nm_test_func in $nlist" >&5 - fi - else - echo "cannot find nm_test_var in $nlist" >&5 - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 - fi - else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done - -fi - -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { $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 - - - - - - - - - - - - - - - - - - - - - - -# Check whether --enable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then : - enableval=$enable_libtool_lock; -fi - -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${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 which ABI we are using. - 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 "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - 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 x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -sparc*-*solaris*) - # Find out which ABI we are using. - 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*) LD="${LD-ld} -m elf64_sparc" ;; - *) - 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" - - - 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 test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; 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 - 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 -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; 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; } - # Allow for Darwin 4-7 (macOS 10.0-10.3) although these are not expect to - # build without first building modern cctools / linker. - case $host_cpu-$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 (macOS 10.1) onwards we only need to adjust when the - # deployment target is forced to an earlier version. - case ${MACOSX_DEPLOYMENT_TARGET-UNSET},$host in - UNSET,*-darwin[89]*|UNSET,*-darwin[12][0123456789]*) - ;; - 10.[012][,.]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' - ;; - *) - ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; 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 "$lt_cv_ld_force_load" = "no"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac - -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 - - - - - - -# Set options - - - - - 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; pic_mode="$withval" -else - pic_mode=default -fi - - -test -z "$pic_mode" && pic_mode=default - - - - - - - - # 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 - - - - - - - - - - - -# 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 "X${COLLECT_NAMES+set}" != Xset; 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 - -for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` - - -# 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 "$GCC" = yes; 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" - # 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 x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then - lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" -else - : -fi - -fi - - - - - - - lt_prog_compiler_wl= -lt_prog_compiler_pic= -lt_prog_compiler_static= - -{ $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 test "$GCC" = yes; then - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_static='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - fi - 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' - ;; - - 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 ' - lt_prog_compiler_pic='-Xcompiler -fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - lt_prog_compiler_wl='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - else - lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - 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' - ;; - - 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) - 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' - ;; - 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\ F* | *Sun*Fortran*) - # 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\ C*) - # Sun C 5.9 - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Wl,' - ;; - 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*) - 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 which 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}: result: $lt_prog_compiler_pic" >&5 -$as_echo "$lt_prog_compiler_pic" >&6; } - - - - - - -# -# 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" - # 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 x"$lt_cv_prog_compiler_pic_works" = xyes; then - case $lt_prog_compiler_pic in - "" | " "*) ;; - *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; - esac -else - lt_prog_compiler_pic= - lt_prog_compiler_can_build_shared=no -fi - -fi - - - - - - -# -# 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 x"$lt_cv_prog_compiler_static_works" = xyes; 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 "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; 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 "$hard_links" = no; 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_flag_spec_ld= - 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 "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd*) - 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 "$with_gnu_ld" = yes; 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 "$lt_use_gnu_ld_interface" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec= - fi - supports_anon_versioning=no - case `$LD -v 2>&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 "$host_cpu" != ia64; 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 <jrb3@best.com> 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/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--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 - ;; - - 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 | uclinuxfdpiceabi) - tmp_diet=no - if test "$host_os" = linux-dietlibc; 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 "$tmp_diet" = no - 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' ;; - 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 "x$supports_anon_versioning" = xyes; 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 - 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= - hardcode_libdir_flag_spec_ld='-rpath $libdir' - archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; 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 $compiler_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 $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - 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 $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 - ;; - - 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 can not -*** 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 $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - - if test "$ld_shlibs" = no; then - runpath_var= - hardcode_libdir_flag_spec= - export_dynamic_flag_spec= - whole_archive_flag_spec= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - allow_undefined_flag=unsupported - always_export_symbols=yes - archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test "$GCC" = yes && test -z "$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 "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global - # defined symbols, whereas GNU nm marks them as "W". - 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) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds='' - hardcode_direct=yes - hardcode_direct_absolute=yes - hardcode_libdir_separator=':' - link_all_deplibs=yes - file_list_spec='${wl}-f,' - - if test "$GCC" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= - fi - ;; - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - 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_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - cat 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 - } - }' -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 "$aix_libpath"; then - 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 "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' - allow_undefined_flag="-z nodefs" - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${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. - 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 - } - }' -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 "$aix_libpath"; then - 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 "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag=' ${wl}-bernotok' - allow_undefined_flag=' ${wl}-berok' - if test "$with_gnu_ld" = yes; 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 - # This is similar to how AIX traditionally builds its shared libraries. - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - 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. - 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' - fix_srcfile_path='`cygpath -w "$srcfile"`' - enable_shared_with_static_runtimes=yes - ;; - - darwin* | rhapsody*) - - - archive_cmds_need_lc=no - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - if test "$lt_cv_ld_force_load" = "yes"; 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*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; 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 -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - hpux9*) - if test "$GCC" = yes; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - export_dynamic_flag_spec='${wl}-E' - ;; - - hpux10*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - archive_cmds='$CC -shared -fPIC ${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 "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_flag_spec_ld='+b $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 "$GCC" = yes && test "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -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 x"$lt_cv_prog_compiler__b" = xyes; 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 "$with_gnu_ld" = no; 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 "$GCC" = yes; then - archive_cmds='$CC -shared $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. - 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) {} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - archive_expsym_cmds='$CC -shared $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 -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" - 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 - ;; - - 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*) - 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__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - else - case $host_os in - openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-R$libdir' - ;; - *) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - ;; - esac - fi - else - ld_shlibs=no - fi - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && 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 "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && 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 "$GCC" = yes; then - wlarc='${wl}' - archive_cmds='$CC -shared ${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 ${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 "$GCC" = yes; 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 "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - sysv4) - case $host_vendor in - sni) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' - reload_cmds='$CC -r -o $output$reload_objs' - hardcode_direct=no - ;; - motorola) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - - sysv4.3*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs=yes - fi - ;; - - sysv4*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 "$GCC" = yes; 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 can NOT 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 "$GCC" = yes; 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 x$host_vendor = xsni; 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 "$ld_shlibs" = no && 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 "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $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 "$GCC" = yes; 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` - 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" - else - 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 - 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 - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib<name>.so - # instead of lib<name>.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - 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%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) - 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 - ;; - - *) - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' - ;; - esac - dynamic_linker='Win32 ld.exe' - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${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 - 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} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - 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 - 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=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/beos/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 "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - 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 "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. - -# uclinux* changes (here and below) have been submitted to the libtool -# project, but have not yet been accepted: they are GCC-local changes -# for the time being. (See -# https://lists.gnu.org/archive/html/libtool-patches/2018-05/msg00000.html) -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu* | uclinuxfdpiceabi) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # 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 - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/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="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=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*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - 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 "$with_gnu_ld" = yes; 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 - 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 - 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 - ;; - -# Shared libraries for VwWorks, >= 7 only at this stage -# and (fpic) still incompatible with "large" code models -# in a few configurations. Only for RTP mode in any case, -# and upon explicit request at configure time. -vxworks7*) - dynamic_linker=no - case ${with_multisubdir}-${enable_shared} in - *large*) - ;; - *mrtp*-yes) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker="$host_os module_loader" - ;; - esac - ;; -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $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 "X$hardcode_automatic" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$hardcode_direct" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && - test "$hardcode_minus_L" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 -$as_echo "$hardcode_action" >&6; } - -if test "$hardcode_action" = relink || - test "$inherit_rpath" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | 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 - - ;; - - *) - 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 "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - 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 "$cross_compiling" = yes; then : - lt_cv_dlopen_self=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line 11449 "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include <dlfcn.h> -#endif - -#include <stdio.h> - -#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 -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -void fnord () __attribute__((visibility("default"))); -#endif - -void fnord () { int i=42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - 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 "x$lt_cv_dlopen_self" = xyes; 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 "$cross_compiling" = yes; then : - lt_cv_dlopen_self_static=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line 11555 "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include <dlfcn.h> -#endif - -#include <stdio.h> - -#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 -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -void fnord () __attribute__((visibility("default"))); -#endif - -void fnord () { int i=42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - 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 which 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 "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[4-9]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - 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 "$enable_shared" = yes || 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 "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; 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 <limits.h> to <assert.h> if __STDC__ is defined, since - # <limits.h> 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 <limits.h> -#else -# include <assert.h> -#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 <ac_nonexistent.h> -_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 <limits.h> to <assert.h> if __STDC__ is defined, since - # <limits.h> 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 <limits.h> -#else -# include <assert.h> -#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 <ac_nonexistent.h> -_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_flag_spec_ld_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 "$_lt_caught_CXX_error" != yes; 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_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++"} - compiler=$CC - compiler_CXX=$CC - for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` - - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test "$GXX" = yes; then - lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' - else - lt_prog_compiler_no_builtin_flag_CXX= - fi - - if test "$GXX" = yes; then - # Set up default GNU C++ configuration - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { $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 "$with_gnu_ld" = yes; 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 </dev/null` in - *GNU* | *'with BFD'*) - test "$with_gnu_ld" != no && break - ;; - *) - test "$with_gnu_ld" != yes && break - ;; - esac - fi - done - IFS="$lt_save_ifs" -else - lt_cv_path_LD="$LD" # Let the user override the test with a path. -fi -fi - -LD="$lt_cv_path_LD" -if test -n "$LD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&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 </dev/null` in -*GNU* | *'with BFD'*) - lt_cv_prog_gnu_ld=yes - ;; -*) - lt_cv_prog_gnu_ld=no - ;; -esac -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&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 "$with_gnu_ld" = yes; 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 "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds_CXX='' - hardcode_direct_CXX=yes - hardcode_direct_absolute_CXX=yes - hardcode_libdir_separator_CXX=':' - link_all_deplibs_CXX=yes - file_list_spec_CXX='${wl}-f,' - - if test "$GXX" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct_CXX=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L_CXX=yes - hardcode_libdir_flag_spec_CXX='-L$libdir' - hardcode_libdir_separator_CXX= - fi - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - 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_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag_CXX='-berok' - # Determine the default libpath from the value encoded in an empty - # executable. - cat 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 - } - }' -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 "$aix_libpath"; then - 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 "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - - hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" - - archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' - allow_undefined_flag_CXX="-z nodefs" - archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${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. - 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 - } - }' -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 "$aix_libpath"; then - 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 "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - - hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag_CXX=' ${wl}-bernotok' - allow_undefined_flag_CXX=' ${wl}-berok' - if test "$with_gnu_ld" = yes; 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 - # This is similar to how AIX traditionally builds its shared - # libraries. - archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag_CXX=unsupported - # Joseph Beckenbach <jrb3@best.com> 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*) - # _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 (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs_CXX=no - fi - ;; - darwin* | rhapsody*) - - - archive_cmds_need_lc_CXX=no - hardcode_direct_CXX=no - hardcode_automatic_CXX=yes - hardcode_shlibpath_var_CXX=unsupported - if test "$lt_cv_ld_force_load" = "yes"; 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*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; 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 "$lt_cv_apple_cc_single_mod" != "yes"; 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 - - ;; - - 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 - ;; - - gnu*) - ;; - - 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 $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $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 "$GXX" = yes; then - archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - 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 ${wl}+nodefaultrpath -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 "$GXX" = yes; then - if test $with_gnu_ld = no; then - case $host_cpu in - hppa*64*) - archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - 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 "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && 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) - 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 "x$supports_anon_versioning" = xyes; 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 - ;; - - openbsd2*) - # C++ shared libraries are fairly broken - ld_shlibs_CXX=no - ;; - - openbsd*) - 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__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - export_dynamic_flag_spec_CXX='${wl}-E' - whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - fi - output_verbose_link_cmd=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 "$GXX" = yes && test "$with_gnu_ld" = no; 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 -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*) - # 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 "$GXX" = yes && test "$with_gnu_ld" = no; then - no_undefined_flag_CXX=' ${wl}-z ${wl}defs' - if $CC --version | $GREP -v '^2\.7' > /dev/null; then - archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -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 can NOT 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*) - # For VxWorks ports, we assume the use of a GNU linker with - # standard elf conventions. - ld_shlibs_CXX=yes - ;; - - *) - # 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 "$ld_shlibs_CXX" = no && 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 - -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 $p in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test $p = "-L" || - test $p = "-R"; then - prev=$p - continue - else - prev= - fi - - if test "$pre_test_object_deps_done" = no; then - case $p in - -L* | -R*) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$compiler_lib_search_path_CXX"; then - compiler_lib_search_path_CXX="${prev}${p}" - else - compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$postdeps_CXX"; then - postdeps_CXX="${prev}${p}" - else - postdeps_CXX="${postdeps_CXX} ${prev}${p}" - fi - fi - ;; - - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test "$pre_test_object_deps_done" = no; then - if test -z "$predep_objects_CXX"; then - predep_objects_CXX="$p" - else - predep_objects_CXX="$predep_objects_CXX $p" - fi - else - if test -z "$postdep_objects_CXX"; then - postdep_objects_CXX="$p" - else - postdep_objects_CXX="$postdep_objects_CXX $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling CXX test program" -fi - -$RM -f confest.$objext - -# 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= - ;; - -linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - if test "$solaris_use_stlport4" != yes; then - postdeps_CXX='-library=Cstd -library=Crun' - fi - ;; - esac - ;; - -solaris*) - case $cc_basename in - CC*) - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - # Adding this requires a known-good setup of shared libraries for - # Sun compiler versions before 5.6, else PIC objects from an old - # archive will be linked into the output, leading to subtle bugs. - if test "$solaris_use_stlport4" != yes; then - postdeps_CXX='-library=Cstd -library=Crun' - fi - ;; - esac - ;; -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= - -{ $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; } - - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_CXX='-Bstatic' - fi - 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' - ;; - 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 "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_CXX='-Bstatic' - else - lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_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 - ;; - 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 "$host_cpu" != ia64; 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) - 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*) - # 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 which do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic_CXX= - ;; - *) - lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic_CXX" >&5 -$as_echo "$lt_prog_compiler_pic_CXX" >&6; } - - - -# -# 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" - # 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 x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then - case $lt_prog_compiler_pic_CXX in - "" | " "*) ;; - *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; - esac -else - lt_prog_compiler_pic_CXX= - lt_prog_compiler_can_build_shared_CXX=no -fi - -fi - - - -# -# 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 x"$lt_cv_prog_compiler_static_works_CXX" = xyes; 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 "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - { $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 "$hard_links" = no; 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' - 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 AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global defined - # symbols, whereas GNU nm marks them as "W". - 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) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - export_symbols_cmds_CXX="$ltdll_cmds" - ;; - cygwin* | mingw* | cegcc*) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - ;; - *) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac - exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 -$as_echo "$ld_shlibs_CXX" >&6; } -test "$ld_shlibs_CXX" = no && 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 "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds_CXX in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $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 - 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 - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib<name>.so - # instead of lib<name>.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - 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%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) - 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 - ;; - - *) - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' - ;; - esac - dynamic_linker='Win32 ld.exe' - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${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 - 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} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - 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 - 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=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/beos/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 "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - 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 "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. - -# uclinux* changes (here and below) have been submitted to the libtool -# project, but have not yet been accepted: they are GCC-local changes -# for the time being. (See -# https://lists.gnu.org/archive/html/libtool-patches/2018-05/msg00000.html) -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu* | uclinuxfdpiceabi) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # 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 - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/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="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=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*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - 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 "$with_gnu_ld" = yes; 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 - 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 - 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 - ;; - -# Shared libraries for VwWorks, >= 7 only at this stage -# and (fpic) still incompatible with "large" code models -# in a few configurations. Only for RTP mode in any case, -# and upon explicit request at configure time. -vxworks7*) - dynamic_linker=no - case ${with_multisubdir}-${enable_shared} in - *large*) - ;; - *mrtp*-yes) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker="$host_os module_loader" - ;; - esac - ;; -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $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 "X$hardcode_automatic_CXX" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$hardcode_direct_CXX" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no && - test "$hardcode_minus_L_CXX" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action_CXX=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action_CXX=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action_CXX=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 -$as_echo "$hardcode_action_CXX" >&6; } - -if test "$hardcode_action_CXX" = relink || - test "$inherit_rpath_CXX" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - - fi # test -n "$compiler" - - CC=$lt_save_CC - 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 "$_lt_caught_CXX_error" != yes - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - - - - - - - - - ac_config_commands="$ac_config_commands libtool" - - - - -# Only expand once: - - -# Forbid libtool to hardcode RPATH, because we want to be able to specify -# library search directory using LD_LIBRARY_PATH -hardcode_into_libs=no - - - - - -if test $enable_shared = yes; then - link_offloadmic_host="-loffloadmic_host %{static: $LIBS}" - link_offloadmic_target="-loffloadmic_target %{static: $LIBS}" -else - link_offloadmic_host="-loffloadmic_host $LIBS" - link_offloadmic_target="-loffloadmic_target $LIBS" -fi - - - -# Determine what GCC version number to use in filesystem paths. - - get_gcc_base_ver="cat" - -# Check whether --with-gcc-major-version-only was given. -if test "${with_gcc_major_version_only+set}" = set; then : - withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then - get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'" - fi - -fi - - - - -# Must be last -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}' - -# Transform confdefs.h into DEFS. -# Protect against shell expansion while executing Makefile rules. -# Protect against Makefile macro expansion. -# -# If the first sed substitution is executed (which looks for macros that -# take arguments), then branch to the quote section. Otherwise, -# look for a macro that doesn't take arguments. -ac_script=' -:mline -/\\$/{ - N - s,\\\n,, - b mline -} -t clear -:clear -s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g -t quote -s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g -t quote -b any -:quote -s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g -s/\[/\\&/g -s/\]/\\&/g -s/\$/$$/g -H -:any -${ - g - s/^\n// - s/\n/ /g - p -} -' -DEFS=`sed -n "$ac_script" confdefs.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 "${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 "${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 "${LIBOFFLOADMIC_HOST_TRUE}" && test -z "${LIBOFFLOADMIC_HOST_FALSE}"; then - as_fn_error $? "conditional \"LIBOFFLOADMIC_HOST\" 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 MIC Offload Runtime Library $as_me 1.0, 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 - - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -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 - -Configuration files: -$config_files - -Configuration commands: -$config_commands - -Report bugs to the package provider." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" -ac_cs_version="\\ -MIC Offload Runtime Library config.status 1.0 -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;; - --he | --h | --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 -# -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" - -srcdir="$srcdir" -host="$host" -target="$target" -with_multisubdir="$with_multisubdir" -with_multisrctop="$with_multisrctop" -with_target_subdir="$with_target_subdir" -ac_configure_args="${multilib_arg} ${ac_configure_args}" -multi_basedir="$multi_basedir" -CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} -CC="$CC" -CXX="$CXX" -GFORTRAN="$GFORTRAN" -GDC="$GDC" - - -# 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"`' -SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' -ECHO='`$ECHO "$ECHO" | $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"`' -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"`' -AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' -AR_FLAGS='`$ECHO "$AR_FLAGS" | $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_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"`' -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_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $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"`' -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_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $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"`' -fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $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"`' -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"`' -sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $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_wl_CXX='`$ECHO "$lt_prog_compiler_wl_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_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_flag_spec_ld_CXX='`$ECHO "$hardcode_libdir_flag_spec_ld_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"`' -fix_srcfile_path_CXX='`$ECHO "$fix_srcfile_path_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"`' -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 \ -SED \ -GREP \ -EGREP \ -FGREP \ -LD \ -NM \ -LN_S \ -lt_SP2NL \ -lt_NL2SP \ -reload_flag \ -OBJDUMP \ -deplibs_check_method \ -file_magic_cmd \ -AR \ -AR_FLAGS \ -STRIP \ -RANLIB \ -CC \ -CFLAGS \ -compiler \ -lt_cv_sys_global_symbol_pipe \ -lt_cv_sys_global_symbol_to_cdecl \ -lt_cv_sys_global_symbol_to_c_name_address \ -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ -lt_prog_compiler_no_builtin_flag \ -lt_prog_compiler_wl \ -lt_prog_compiler_pic \ -lt_prog_compiler_static \ -lt_cv_prog_compiler_c_o \ -need_locks \ -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_flag_spec_ld \ -hardcode_libdir_separator \ -fix_srcfile_path \ -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_wl_CXX \ -lt_prog_compiler_pic_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_flag_spec_ld_CXX \ -hardcode_libdir_separator_CXX \ -fix_srcfile_path_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\\"\\\`\\\\\\"" - ;; - *) - 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 \ -postinstall_cmds \ -postuninstall_cmds \ -finish_cmds \ -sys_lib_search_path_spec \ -sys_lib_dlsearch_path_spec \ -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; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -ac_aux_dir='$ac_aux_dir' -xsi_shell='$xsi_shell' -lt_shell_append='$lt_shell_append' - -# See if we are running on zsh, and set the options which 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' - TIMESTAMP='$TIMESTAMP' - RM='$RM' - ofile='$ofile' - - - - - - -_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 - "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "liboffloadmic_host.spec") CONFIG_FILES="$CONFIG_FILES liboffloadmic_host.spec" ;; - "liboffloadmic_target.spec") CONFIG_FILES="$CONFIG_FILES liboffloadmic_target.spec" ;; - "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; - "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; - - *) 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_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 2>/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 -' <conf$$subs.awk | sed ' -/^[^""]/{ - N - s/\n// -} -' >>$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" - - -eval set X " :F $CONFIG_FILES :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 - ;; - - - :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 - "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. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named 'Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`$as_dirname -- "$mf" || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running 'make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "$am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`$as_dirname -- "$file" || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir=$dirpart/$fdir; as_fn_mkdir_p - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} - ;; - "default-1":C) -# Only add multilib support code if we just rebuilt the top-level -# Makefile. -case " $CONFIG_FILES " in - *" Makefile "*) - ac_file=Makefile . ${multi_basedir}/config-ml.in - ;; -esac ;; - "libtool":C) - - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $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. -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009 Free Software Foundation, Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# 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 -# 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 GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - -# The names of the tagged configurations supported by this script. -available_tags="CXX " - -# ### 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 - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# An echo program that protects backslashes. -ECHO=$lt_ECHO - -# 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 - -# 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 - -# The archiver. -AR=$lt_AR -AR_FLAGS=$lt_AR_FLAGS - -# 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 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 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 - -# 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 - -# Run-time system search path for libraries. -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec - -# 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 - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic - -# 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 - -# If ld is used when linking, flag to hardcode \$libdir into a binary -# during linking. This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct - -# Set to "yes" if using 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 - -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path=$lt_fix_srcfile_path - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds - -# 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 - -# 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 - - 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 "X${COLLECT_NAMES+set}" != Xset; 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 '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - case $xsi_shell in - yes) - cat << \_LT_EOF >> "$cfgfile" - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac -} - -# func_basename file -func_basename () -{ - func_basename_result="${1##*/}" -} - -# func_dirname_and_basename file append nondir_replacement -# perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# Implementation must be kept synchronized with func_dirname -# and func_basename. For efficiency, we do not delegate to -# those functions but instead duplicate the functionality here. -func_dirname_and_basename () -{ - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac - func_basename_result="${1##*/}" -} - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -func_stripname () -{ - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary parameter first. - func_stripname_result=${3} - func_stripname_result=${func_stripname_result#"${1}"} - func_stripname_result=${func_stripname_result%"${2}"} -} - -# func_opt_split -func_opt_split () -{ - func_opt_split_opt=${1%%=*} - func_opt_split_arg=${1#*=} -} - -# func_lo2o object -func_lo2o () -{ - case ${1} in - *.lo) func_lo2o_result=${1%.lo}.${objext} ;; - *) func_lo2o_result=${1} ;; - esac -} - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=${1%.*}.lo -} - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=$(( $* )) -} - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=${#1} -} - -_LT_EOF - ;; - *) # Bourne compatible functions. - cat << \_LT_EOF >> "$cfgfile" - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - # Extract subdirectory from the argument. - func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi -} - -# func_basename file -func_basename () -{ - func_basename_result=`$ECHO "${1}" | $SED "$basename"` -} - - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# func_strip_suffix prefix name -func_stripname () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} - -# sed scripts: -my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' -my_sed_long_arg='1s/^-[^=]*=//' - -# func_opt_split -func_opt_split () -{ - func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"` - func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"` -} - -# func_lo2o object -func_lo2o () -{ - func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` -} - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` -} - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=`expr "$@"` -} - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` -} - -_LT_EOF -esac - -case $lt_shell_append in - yes) - cat << \_LT_EOF >> "$cfgfile" - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "$1+=\$2" -} -_LT_EOF - ;; - *) - cat << \_LT_EOF >> "$cfgfile" - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "$1=\$$1\$2" -} - -_LT_EOF - ;; - esac - - - sed -n '/^# Generated shell functions inserted here/,$p' "$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 - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl_CXX - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic_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 - -# If ld is used when linking, flag to hardcode \$libdir into a binary -# during linking. This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct_CXX - -# Set to "yes" if using 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 - -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path=$lt_fix_srcfile_path_CXX - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols_CXX - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds_CXX - -# 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 - -# 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 - - ;; - - 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 - -# -# CONFIG_SUBDIRS section. -# -if test "$no_recursion" != yes; then - - # Remove --cache-file, --srcdir, and --disable-option-checking arguments - # so they do not pile up. - ac_sub_configure_args= - ac_prev= - eval "set x $ac_configure_args" - shift - for ac_arg - do - if test -n "$ac_prev"; then - ac_prev= - continue - fi - case $ac_arg in - -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=*) - ;; - --config-cache | -C) - ;; - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - ;; - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - ;; - --disable-option-checking) - ;; - *) - case $ac_arg in - *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append ac_sub_configure_args " '$ac_arg'" ;; - esac - done - - # Always prepend --prefix to ensure using the same prefix - # in subdir configurations. - ac_arg="--prefix=$prefix" - case $ac_arg in - *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args" - - # Pass --silent - if test "$silent" = yes; then - ac_sub_configure_args="--silent $ac_sub_configure_args" - fi - - # Always prepend --disable-option-checking to silence warnings, since - # different subdirs can have different --enable and --with options. - ac_sub_configure_args="--disable-option-checking $ac_sub_configure_args" - - ac_popdir=`pwd` - for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue - - # Do not complain, so a configure script can configure whichever - # parts of a large source tree are present. - test -d "$srcdir/$ac_dir" || continue - - ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)" - $as_echo "$as_me:${as_lineno-$LINENO}: $ac_msg" >&5 - $as_echo "$ac_msg" >&6 - 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 - - - cd "$ac_dir" - - # Check for guested configure; otherwise get Cygnus style configure. - if test -f "$ac_srcdir/configure.gnu"; then - ac_sub_configure=$ac_srcdir/configure.gnu - elif test -f "$ac_srcdir/configure"; then - ac_sub_configure=$ac_srcdir/configure - elif test -f "$ac_srcdir/configure.in"; then - # This should be Cygnus configure. - ac_sub_configure=$ac_aux_dir/configure - else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no configuration information is in $ac_dir" >&5 -$as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;} - ac_sub_configure= - fi - - # The recursion is here. - if test -n "$ac_sub_configure"; then - # Make the cache file name correct relative to the subdirectory. - case $cache_file in - [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;; - *) # Relative name. - ac_sub_cache_file=$ac_top_build_prefix$cache_file ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5 -$as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;} - # The eval makes quoting arguments work. - eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \ - --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" || - as_fn_error $? "$ac_sub_configure failed for $ac_dir" "$LINENO" 5 - fi - - cd "$ac_popdir" - done -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 - diff --git a/liboffloadmic/configure.ac b/liboffloadmic/configure.ac deleted file mode 100644 index f64f182..0000000 --- a/liboffloadmic/configure.ac +++ /dev/null @@ -1,143 +0,0 @@ -# Copyright (c) 2014 Intel Corporation. All Rights Reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of Intel Corporation nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# Process this file with autoconf to produce a configure script, like so: -# aclocal -I .. -I ../config && autoconf && automake - -AC_INIT([MIC Offload Runtime Library], [1.0], ,[liboffloadmic]) - -AC_CANONICAL_SYSTEM -target_alias=${target_alias-$host_alias} -AC_SUBST(target_alias) - -AM_INIT_AUTOMAKE(foreign no-dist) -AM_MAINTAINER_MODE - -AC_PROG_CC -AC_PROG_CXX -AC_CONFIG_FILES([Makefile liboffloadmic_host.spec liboffloadmic_target.spec]) -AM_ENABLE_MULTILIB(, ..) -AC_CONFIG_SUBDIRS(plugin) -AC_FUNC_ALLOCA -AC_CHECK_HEADERS([mm_malloc.h], [], [AC_MSG_ERROR(["Couldn't find mm_malloc.h"])]) -AC_CHECK_FUNCS([__secure_getenv secure_getenv]) - -# Get target configure. -. ${srcdir}/configure.tgt -if test -n "$UNSUPPORTED"; then - AC_MSG_ERROR([Configuration ${target} is unsupported]) -fi - -if test "${multilib}" = "yes"; then - multilib_arg="--enable-multilib" -else - multilib_arg= -fi - -AC_MSG_CHECKING([for --enable-version-specific-runtime-libs]) -AC_ARG_ENABLE([version-specific-runtime-libs], - AC_HELP_STRING([--enable-version-specific-runtime-libs], - [Specify that runtime libraries should be installed in a compiler-specific directory]), - [case "$enableval" in - yes) enable_version_specific_runtime_libs=yes ;; - no) enable_version_specific_runtime_libs=no ;; - *) AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);; - esac], - [enable_version_specific_runtime_libs=no]) -AC_MSG_RESULT($enable_version_specific_runtime_libs) - -# Make sure liboffloadmic is enabled -case "$enable_liboffloadmic" in - host | target) - ;; - *) - AC_MSG_ERROR([Liboffloadmic is disabled]) ;; -esac -AM_CONDITIONAL(LIBOFFLOADMIC_HOST, [test x"$enable_liboffloadmic" = xhost]) - -GCC_WITH_TOOLEXECLIBDIR - -# Calculate toolexeclibdir. -# Also toolexecdir, though it's only used in toolexeclibdir. -case ${enable_version_specific_runtime_libs} in - yes) - # Need the gcc compiler version to know where to install libraries - # and header files if --enable-version-specific-runtime-libs option - # is selected. - toolexecdir='$(libdir)/gcc/$(target_alias)' - toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)' - ;; - no) - if test -n "$with_cross_host" && - test x"$with_cross_host" != x"no"; then - # Install a library built with a cross compiler in tooldir, not libdir. - toolexecdir='$(exec_prefix)/$(target_alias)' - case ${with_toolexeclibdir} in - no) - toolexeclibdir='$(toolexecdir)/lib' - ;; - *) - toolexeclibdir=${with_toolexeclibdir} - ;; - esac - else - toolexecdir='$(libdir)/gcc-lib/$(target_alias)' - toolexeclibdir='$(libdir)' - fi - multi_os_directory=`$CC -print-multi-os-directory` - case $multi_os_directory in - .) ;; # Avoid trailing /. - *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; - esac - ;; -esac - -AC_LIBTOOL_DLOPEN -AM_PROG_LIBTOOL -# Forbid libtool to hardcode RPATH, because we want to be able to specify -# library search directory using LD_LIBRARY_PATH -hardcode_into_libs=no -AC_SUBST(toolexecdir) -AC_SUBST(toolexeclibdir) - -AC_SUBST(lt_cv_dlopen_libs) - -if test $enable_shared = yes; then - link_offloadmic_host="-loffloadmic_host %{static: $LIBS}" - link_offloadmic_target="-loffloadmic_target %{static: $LIBS}" -else - link_offloadmic_host="-loffloadmic_host $LIBS" - link_offloadmic_target="-loffloadmic_target $LIBS" -fi -AC_SUBST(link_offloadmic_host) -AC_SUBST(link_offloadmic_target) - -# Determine what GCC version number to use in filesystem paths. -GCC_BASE_VER - -# Must be last -AC_OUTPUT diff --git a/liboffloadmic/configure.tgt b/liboffloadmic/configure.tgt deleted file mode 100644 index 3c0310c..0000000 --- a/liboffloadmic/configure.tgt +++ /dev/null @@ -1,39 +0,0 @@ -# Copyright (c) 2014 Intel Corporation. All Rights Reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of Intel Corporation nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# Disable Offload Runtime library for non x86 architecture. -case "${target}" in - x86_64-*-linux*) - ;; - i?86-*-linux*) - ;; - *-*-*) - UNSUPPORTED=1 ;; -esac - -# Disable liboffloadmic on non POSIX hosted systems. -. ${srcdir}/../config/target-posix diff --git a/liboffloadmic/doc/doxygen/config b/liboffloadmic/doc/doxygen/config deleted file mode 100644 index 3ef1019..0000000 --- a/liboffloadmic/doc/doxygen/config +++ /dev/null @@ -1,2328 +0,0 @@ -# Doxyfile 1.8.6 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project. -# -# All text after a double hash (##) is considered a comment and is placed in -# front of the TAG it is preceding. -# -# All text after a single hash (#) is considered a comment and will be ignored. -# The format is: -# TAG = value [value, ...] -# For lists, items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (\" \"). - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file -# that follow. The default is UTF-8 which is also the encoding used for all text -# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv -# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv -# for the list of possible encodings. -# The default value is: UTF-8. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by -# double-quotes, unless you are using Doxywizard) that should identify the -# project for which the documentation is generated. This name is used in the -# title of most generated pages and in a few other places. -# The default value is: My Project. - -PROJECT_NAME = "Intel® Offload Runtime Library" - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. This -# could be handy for archiving the generated documentation or if some version -# control system is used. - -PROJECT_NUMBER = - -# Using the PROJECT_BRIEF tag one can provide an optional one line description -# for a project that appears at the top of each page and should give viewer a -# quick idea about the purpose of the project. Keep the description short. - -PROJECT_BRIEF = - -# With the PROJECT_LOGO tag one can specify an logo or icon that is included in -# the documentation. The maximum height of the logo should not exceed 55 pixels -# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo -# to the output directory. - -PROJECT_LOGO = - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path -# into which the generated documentation will be written. If a relative path is -# entered, it will be relative to the location where doxygen was started. If -# left blank the current directory will be used. - -OUTPUT_DIRECTORY = doc/doxygen/generated - -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub- -# directories (in 2 levels) under the output directory of each output format and -# will distribute the generated files over these directories. Enabling this -# option can be useful when feeding doxygen a huge amount of source files, where -# putting all generated files in the same directory would otherwise causes -# performance problems for the file system. -# The default value is: NO. - -CREATE_SUBDIRS = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, -# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), -# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, -# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), -# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, -# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, -# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, -# Ukrainian and Vietnamese. -# The default value is: English. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member -# descriptions after the members that are listed in the file and class -# documentation (similar to Javadoc). Set to NO to disable this. -# The default value is: YES. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief -# description of a member or function before the detailed description -# -# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. -# The default value is: YES. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator that is -# used to form the text in various listings. Each string in this list, if found -# as the leading text of the brief description, will be stripped from the text -# and the result, after processing the whole list, is used as the annotated -# text. Otherwise, the brief description is used as-is. If left blank, the -# following values are used ($name is automatically replaced with the name of -# the entity):The $name class, The $name widget, The $name file, is, provides, -# specifies, contains, represents, a, an and the. - -ABBREVIATE_BRIEF = "The $name class" \ - "The $name widget" \ - "The $name file" \ - is \ - provides \ - specifies \ - contains \ - represents \ - a \ - an \ - the - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# doxygen will generate a detailed section even if there is only a brief -# description. -# The default value is: NO. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. -# The default value is: NO. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path -# before files name in the file list and in the header files. If set to NO the -# shortest path that makes the file name unique will be used -# The default value is: YES. - -FULL_PATH_NAMES = YES - -# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. -# Stripping is only done if one of the specified strings matches the left-hand -# part of the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the path to -# strip. -# -# Note that you can specify absolute paths here, but also relative paths, which -# will be relative from the directory where doxygen is started. -# This tag requires that the tag FULL_PATH_NAMES is set to YES. - -STRIP_FROM_PATH = src/ - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the -# path mentioned in the documentation of a class, which tells the reader which -# header file to include in order to use a class. If left blank only the name of -# the header file containing the class definition is used. Otherwise one should -# specify the list of include paths that are normally passed to the compiler -# using the -I flag. - -STRIP_FROM_INC_PATH = src/ - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but -# less readable) file names. This can be useful is your file systems doesn't -# support long names like on DOS, Mac, or CD-ROM. -# The default value is: NO. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the -# first line (until the first dot) of a Javadoc-style comment as the brief -# description. If set to NO, the Javadoc-style will behave just like regular Qt- -# style comments (thus requiring an explicit @brief command for a brief -# description.) -# The default value is: NO. - -JAVADOC_AUTOBRIEF = NO - -# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first -# line (until the first dot) of a Qt-style comment as the brief description. If -# set to NO, the Qt-style will behave just like regular Qt-style comments (thus -# requiring an explicit \brief command for a brief description.) -# The default value is: NO. - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a -# multi-line C++ special comment block (i.e. a block of //! or /// comments) as -# a brief description. This used to be the default behavior. The new default is -# to treat a multi-line C++ comment block as a detailed description. Set this -# tag to YES if you prefer the old behavior instead. -# -# Note that setting this tag to YES also means that rational rose comments are -# not recognized any more. -# The default value is: NO. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the -# documentation from any documented member that it re-implements. -# The default value is: YES. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a -# new page for each member. If set to NO, the documentation of a member will be -# part of the file/class/namespace that contains it. -# The default value is: NO. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen -# uses this value to replace tabs by spaces in code fragments. -# Minimum value: 1, maximum value: 16, default value: 4. - -TAB_SIZE = 8 - -# This tag can be used to specify a number of aliases that act as commands in -# the documentation. An alias has the form: -# name=value -# For example adding -# "sideeffect=@par Side Effects:\n" -# will allow you to put the command \sideeffect (or @sideeffect) in the -# documentation, which will result in a user-defined paragraph with heading -# "Side Effects:". You can put \n's in the value part of an alias to insert -# newlines. - -ALIASES = - -# This tag can be used to specify a number of word-keyword mappings (TCL only). -# A mapping has the form "name=value". For example adding "class=itcl::class" -# will allow you to use the command class in the itcl::class meaning. - -TCL_SUBST = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources -# only. Doxygen will then generate output that is more tailored for C. For -# instance, some of the names that are used will be different. The list of all -# members will be omitted, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or -# Python sources only. Doxygen will then generate output that is more tailored -# for that language. For instance, namespaces will be presented as packages, -# qualified scopes will look different, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources. Doxygen will then generate output that is tailored for Fortran. -# The default value is: NO. - -OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for VHDL. -# The default value is: NO. - -OPTIMIZE_OUTPUT_VHDL = NO - -# Doxygen selects the parser to use depending on the extension of the files it -# parses. With this tag you can assign which parser to use for a given -# extension. Doxygen has a built-in mapping, but you can override or extend it -# using this tag. The format is ext=language, where ext is a file extension, and -# language is one of the parsers supported by doxygen: IDL, Java, Javascript, -# C#, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL. For instance to make -# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C -# (default is Fortran), use: inc=Fortran f=C. -# -# Note For files without extension you can use no_extension as a placeholder. -# -# Note that for custom extensions you also need to set FILE_PATTERNS otherwise -# the files are not read by doxygen. - -EXTENSION_MAPPING = - -# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments -# according to the Markdown format, which allows for more readable -# documentation. See http://daringfireball.net/projects/markdown/ for details. -# The output of markdown processing is further processed by doxygen, so you can -# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in -# case of backward compatibilities issues. -# The default value is: YES. - -MARKDOWN_SUPPORT = YES - -# When enabled doxygen tries to link words that correspond to documented -# classes, or namespaces to their corresponding documentation. Such a link can -# be prevented in individual cases by by putting a % sign in front of the word -# or globally by setting AUTOLINK_SUPPORT to NO. -# The default value is: YES. - -AUTOLINK_SUPPORT = YES - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should set this -# tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); -# versus func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. -# The default value is: NO. - -BUILTIN_STL_SUPPORT = NO - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. -# The default value is: NO. - -CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: -# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen -# will parse them like normal C++ but will assume all classes use public instead -# of private inheritance when no explicit protection keyword is present. -# The default value is: NO. - -SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate -# getter and setter methods for a property. Setting this option to YES will make -# doxygen to replace the get and set methods by a property in the documentation. -# This will only work if the methods are indeed getting or setting a simple -# type. If this is not the case, or you want to show the methods anyway, you -# should set this option to NO. -# The default value is: YES. - -IDL_PROPERTY_SUPPORT = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. -# The default value is: NO. - -DISTRIBUTE_GROUP_DOC = NO - -# Set the SUBGROUPING tag to YES to allow class member groups of the same type -# (for instance a group of public functions) to be put as a subgroup of that -# type (e.g. under the Public Functions section). Set it to NO to prevent -# subgrouping. Alternatively, this can be done per class using the -# \nosubgrouping command. -# The default value is: YES. - -SUBGROUPING = YES - -# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions -# are shown inside the group in which they are included (e.g. using \ingroup) -# instead of on a separate page (for HTML and Man pages) or section (for LaTeX -# and RTF). -# -# Note that this feature does not work in combination with -# SEPARATE_MEMBER_PAGES. -# The default value is: NO. - -INLINE_GROUPED_CLASSES = NO - -# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions -# with only public data fields or simple typedef fields will be shown inline in -# the documentation of the scope in which they are defined (i.e. file, -# namespace, or group documentation), provided this scope is documented. If set -# to NO, structs, classes, and unions are shown on a separate page (for HTML and -# Man pages) or section (for LaTeX and RTF). -# The default value is: NO. - -INLINE_SIMPLE_STRUCTS = NO - -# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or -# enum is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically be -# useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. -# The default value is: NO. - -TYPEDEF_HIDES_STRUCT = NO - -# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This -# cache is used to resolve symbols given their name and scope. Since this can be -# an expensive process and often the same symbol appears multiple times in the -# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small -# doxygen will become slower. If the cache is too large, memory is wasted. The -# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range -# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 -# symbols. At the end of a run doxygen will report the cache usage and suggest -# the optimal cache size from a speed point of view. -# Minimum value: 0, maximum value: 9, default value: 0. - -LOOKUP_CACHE_SIZE = 0 - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. Private -# class members and static file members will be hidden unless the -# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. -# Note: This will also disable the warnings about undocumented members that are -# normally produced when WARNINGS is set to YES. -# The default value is: NO. - -EXTRACT_ALL = YES - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will -# be included in the documentation. -# The default value is: NO. - -EXTRACT_PRIVATE = YES - -# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal -# scope will be included in the documentation. -# The default value is: NO. - -EXTRACT_PACKAGE = YES - -# If the EXTRACT_STATIC tag is set to YES all static members of a file will be -# included in the documentation. -# The default value is: NO. - -EXTRACT_STATIC = YES - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined -# locally in source files will be included in the documentation. If set to NO -# only classes defined in header files are included. Does not have any effect -# for Java sources. -# The default value is: YES. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. When set to YES local methods, -# which are defined in the implementation section but not in the interface are -# included in the documentation. If set to NO only methods in the interface are -# included. -# The default value is: NO. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base name of -# the file that contains the anonymous namespace. By default anonymous namespace -# are hidden. -# The default value is: NO. - -EXTRACT_ANON_NSPACES = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all -# undocumented members inside documented classes or files. If set to NO these -# members will be included in the various overviews, but no documentation -# section is generated. This option has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. If set -# to NO these classes will be included in the various overviews. This option has -# no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend -# (class|struct|union) declarations. If set to NO these declarations will be -# included in the documentation. -# The default value is: NO. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any -# documentation blocks found inside the body of a function. If set to NO these -# blocks will be appended to the function's detailed documentation block. -# The default value is: NO. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation that is typed after a -# \internal command is included. If the tag is set to NO then the documentation -# will be excluded. Set it to YES to include the internal documentation. -# The default value is: NO. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file -# names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. -# The default value is: system dependent. - -CASE_SENSE_NAMES = NO - -# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with -# their full class and namespace scopes in the documentation. If set to YES the -# scope will be hidden. -# The default value is: NO. - -HIDE_SCOPE_NAMES = NO - -# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of -# the files that are included by a file in the documentation of that file. -# The default value is: YES. - -SHOW_INCLUDE_FILES = YES - - -SHOW_GROUPED_MEMB_INC = NO - -# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include -# files with double quotes in the documentation rather than with sharp brackets. -# The default value is: NO. - -FORCE_LOCAL_INCLUDES = NO - -# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the -# documentation for inline members. -# The default value is: YES. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the -# (detailed) documentation of file and class members alphabetically by member -# name. If set to NO the members will appear in declaration order. -# The default value is: YES. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief -# descriptions of file, namespace and class members alphabetically by member -# name. If set to NO the members will appear in declaration order. Note that -# this will also influence the order of the classes in the class list. -# The default value is: NO. - -SORT_BRIEF_DOCS = NO - -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the -# (brief and detailed) documentation of class members so that constructors and -# destructors are listed first. If set to NO the constructors will appear in the -# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. -# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief -# member documentation. -# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting -# detailed member documentation. -# The default value is: NO. - -SORT_MEMBERS_CTORS_1ST = NO - -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy -# of group names into alphabetical order. If set to NO the group names will -# appear in their defined order. -# The default value is: NO. - -SORT_GROUP_NAMES = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by -# fully-qualified names, including namespaces. If set to NO, the class list will -# be sorted only by class name, not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the alphabetical -# list. -# The default value is: NO. - -SORT_BY_SCOPE_NAME = NO - -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper -# type resolution of all parameters of a function it will reject a match between -# the prototype and the implementation of a member function even if there is -# only one candidate or it is obvious which candidate to choose by doing a -# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still -# accept a match between prototype and implementation in such cases. -# The default value is: NO. - -STRICT_PROTO_MATCHING = NO - -# The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the -# todo list. This list is created by putting \todo commands in the -# documentation. -# The default value is: YES. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the -# test list. This list is created by putting \test commands in the -# documentation. -# The default value is: YES. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug -# list. This list is created by putting \bug commands in the documentation. -# The default value is: YES. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO) -# the deprecated list. This list is created by putting \deprecated commands in -# the documentation. -# The default value is: YES. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional documentation -# sections, marked by \if <section_label> ... \endif and \cond <section_label> -# ... \endcond blocks. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the -# initial value of a variable or macro / define can have for it to appear in the -# documentation. If the initializer consists of more lines than specified here -# it will be hidden. Use a value of 0 to hide initializers completely. The -# appearance of the value of individual variables and macros / defines can be -# controlled using \showinitializer or \hideinitializer command in the -# documentation regardless of this setting. -# Minimum value: 0, maximum value: 10000, default value: 30. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at -# the bottom of the documentation of classes and structs. If set to YES the list -# will mention the files that were used to generate the documentation. -# The default value is: YES. - -SHOW_USED_FILES = YES - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This -# will remove the Files entry from the Quick Index and from the Folder Tree View -# (if specified). -# The default value is: YES. - -SHOW_FILES = YES - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces -# page. This will remove the Namespaces entry from the Quick Index and from the -# Folder Tree View (if specified). -# The default value is: YES. - -SHOW_NAMESPACES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command command input-file, where command is the value of the -# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided -# by doxygen. Whatever the program writes to standard output is used as the file -# version. For an example see the documentation. - -FILE_VERSION_FILTER = - -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated -# output files in an output format independent way. To create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. You can -# optionally specify a file name after the option, if omitted DoxygenLayout.xml -# will be used as the name of the layout file. -# -# Note that if you run doxygen from a directory containing a file called -# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE -# tag is left empty. - -LAYOUT_FILE = - -# The CITE_BIB_FILES tag can be used to specify one or more bib files containing -# the reference definitions. This must be a list of .bib files. The .bib -# extension is automatically appended if omitted. This requires the bibtex tool -# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. -# For LaTeX the style of the bibliography can be controlled using -# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the -# search path. Do not use file names with spaces, bibtex cannot handle them. See -# also \cite for info how to create references. - -CITE_BIB_FILES = - -#--------------------------------------------------------------------------- -# Configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated to -# standard output by doxygen. If QUIET is set to YES this implies that the -# messages are off. -# The default value is: NO. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES -# this implies that the warnings are on. -# -# Tip: Turn warnings on while writing the documentation. -# The default value is: YES. - -WARNINGS = YES - -# If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate -# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag -# will automatically be disabled. -# The default value is: YES. - -WARN_IF_UNDOCUMENTED = YES - -# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some parameters -# in a documented function, or documenting parameters that don't exist or using -# markup commands wrongly. -# The default value is: YES. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that -# are documented, but have no documentation for their parameters or return -# value. If set to NO doxygen will only warn about wrong or incomplete parameter -# documentation, but not about the absence of documentation. -# The default value is: NO. - -WARN_NO_PARAMDOC = NO - -# The WARN_FORMAT tag determines the format of the warning messages that doxygen -# can produce. The string should contain the $file, $line, and $text tags, which -# will be replaced by the file and line number from which the warning originated -# and the warning text. Optionally the format may contain $version, which will -# be replaced by the version of the file (if it could be obtained via -# FILE_VERSION_FILTER) -# The default value is: $file:$line: $text. - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning and error -# messages should be written. If left blank the output is written to standard -# error (stderr). - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# Configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag is used to specify the files and/or directories that contain -# documented source files. You may enter file names like myfile.cpp or -# directories like /usr/src/myproject. Separate the files or directories with -# spaces. -# Note: If this tag is empty the current directory is searched. - -INPUT = src - -# This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses -# libiconv (or the iconv built into libc) for the transcoding. See the libiconv -# documentation (see: http://www.gnu.org/software/libiconv) for the list of -# possible encodings. -# The default value is: UTF-8. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and -# *.h) to filter out the source-files in the directories. If left blank the -# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii, -# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, -# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, -# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, -# *.qsf, *.as and *.js. - -FILE_PATTERNS = *.c *.h *.cpp *.f90 - -# The RECURSIVE tag can be used to specify whether or not subdirectories should -# be searched for input files as well. -# The default value is: NO. - -RECURSIVE = YES - -# The EXCLUDE tag can be used to specify files and/or directories that should be -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. -# -# Note that relative paths are relative to the directory from which doxygen is -# run. - -EXCLUDE = src/imported src/rdtsc.h - -# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or -# directories that are symbolic links (a Unix file system feature) are excluded -# from the input. -# The default value is: NO. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories for example use the pattern */test/* - -EXCLUDE_PATTERNS = - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories use the pattern */test/* - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or directories -# that contain example code fragments that are included (see the \include -# command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and -# *.h) to filter out the source-files in the directories. If left blank all -# files are included. - -EXAMPLE_PATTERNS = * - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude commands -# irrespective of the value of the RECURSIVE tag. -# The default value is: NO. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or directories -# that contain images that are to be included in the documentation (see the -# \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command: -# -# <filter> <input-file> -# -# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the -# name of an input file. Doxygen will then use the output that the filter -# program writes to standard output. If FILTER_PATTERNS is specified, this tag -# will be ignored. -# -# Note that the filter must not add or remove lines; it is applied before the -# code is scanned, but not when the output code is generated. If lines are added -# or removed, the anchors will not be placed correctly. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: pattern=filter -# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how -# filters are used. If the FILTER_PATTERNS tag is empty or if none of the -# patterns match the file name, INPUT_FILTER is applied. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER ) will also be used to filter the input files that are used for -# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). -# The default value is: NO. - -FILTER_SOURCE_FILES = NO - -# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and -# it is also possible to disable source filtering for a specific pattern using -# *.ext= (so without naming a filter). -# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. - -FILTER_SOURCE_PATTERNS = - -# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that -# is part of the input, its contents will be placed on the main page -# (index.html). This can be useful if you have a project on for instance GitHub -# and want to reuse the introduction page also for the doxygen output. - -USE_MDFILE_AS_MAINPAGE = - -#--------------------------------------------------------------------------- -# Configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will be -# generated. Documented entities will be cross-referenced with these sources. -# -# Note: To get rid of all source code in the generated output, make sure that -# also VERBATIM_HEADERS is set to NO. -# The default value is: NO. - -SOURCE_BROWSER = YES - -# Setting the INLINE_SOURCES tag to YES will include the body of functions, -# classes and enums directly into the documentation. -# The default value is: NO. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any -# special comment blocks from generated source code fragments. Normal C, C++ and -# Fortran comments will always remain visible. -# The default value is: YES. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES then for each documented -# function all documented functions referencing it will be listed. -# The default value is: NO. - -REFERENCED_BY_RELATION = YES - -# If the REFERENCES_RELATION tag is set to YES then for each documented function -# all documented entities called/used by that function will be listed. -# The default value is: NO. - -REFERENCES_RELATION = NO - -# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set -# to YES, then the hyperlinks from functions in REFERENCES_RELATION and -# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will -# link to the documentation. -# The default value is: YES. - -REFERENCES_LINK_SOURCE = YES - -# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the -# source code will show a tooltip with additional information such as prototype, -# brief description and links to the definition and documentation. Since this -# will make the HTML file larger and loading of large files a bit slower, you -# can opt to disable this feature. -# The default value is: YES. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -SOURCE_TOOLTIPS = YES - -# If the USE_HTAGS tag is set to YES then the references to source code will -# point to the HTML generated by the htags(1) tool instead of doxygen built-in -# source browser. The htags tool is part of GNU's global source tagging system -# (see http://www.gnu.org/software/global/global.html). You will need version -# 4.8.6 or higher. -# -# To use it do the following: -# - Install the latest version of global -# - Enable SOURCE_BROWSER and USE_HTAGS in the config file -# - Make sure the INPUT points to the root of the source tree -# - Run doxygen as normal -# -# Doxygen will invoke htags (and that will in turn invoke gtags), so these -# tools must be available from the command line (i.e. in the search path). -# -# The result: instead of the source browser generated by doxygen, the links to -# source code will now point to the output of htags. -# The default value is: NO. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a -# verbatim copy of the header file for each class for which an include is -# specified. Set to NO to disable this. -# See also: Section \class. -# The default value is: YES. - -VERBATIM_HEADERS = YES - -# If the CLANG_ASSISTED_PARSING tag is set to YES, then doxygen will use the -# clang parser (see: http://clang.llvm.org/) for more acurate parsing at the -# cost of reduced performance. This can be particularly helpful with template -# rich C++ code for which doxygen's built-in parser lacks the necessary type -# information. -# Note: The availability of this option depends on whether or not doxygen was -# compiled with the --with-libclang option. -# The default value is: NO. - -CLANG_ASSISTED_PARSING = NO - -# If clang assisted parsing is enabled you can provide the compiler with command -# line options that you would normally use when invoking the compiler. Note that -# the include paths will already be set by doxygen for the files and directories -# specified with INPUT and INCLUDE_PATH. -# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. - -CLANG_OPTIONS = - -#--------------------------------------------------------------------------- -# Configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all -# compounds will be generated. Enable this if the project contains a lot of -# classes, structs, unions or interfaces. -# The default value is: YES. - -ALPHABETICAL_INDEX = YES - -# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in -# which the alphabetical index list will be split. -# Minimum value: 1, maximum value: 20, default value: 5. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all classes will -# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag -# can be used to specify a prefix (or a list of prefixes) that should be ignored -# while generating the index headers. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES doxygen will generate HTML output -# The default value is: YES. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of -# it. -# The default directory is: html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each -# generated HTML page (for example: .htm, .php, .asp). -# The default value is: .html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a user-defined HTML header file for -# each generated HTML page. If the tag is left blank doxygen will generate a -# standard header. -# -# To get valid HTML the header file that includes any scripts and style sheets -# that doxygen needs, which is dependent on the configuration options used (e.g. -# the setting GENERATE_TREEVIEW). It is highly recommended to start with a -# default header using -# doxygen -w html new_header.html new_footer.html new_stylesheet.css -# YourConfigFile -# and then modify the file new_header.html. See also section "Doxygen usage" -# for information on how to generate the default header that doxygen normally -# uses. -# Note: The header is subject to change so you typically have to regenerate the -# default header when upgrading to a newer version of doxygen. For a description -# of the possible markers and block names see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each -# generated HTML page. If the tag is left blank doxygen will generate a standard -# footer. See HTML_HEADER for more information on how to generate a default -# footer and what special commands can be used inside the footer. See also -# section "Doxygen usage" for information on how to generate the default footer -# that doxygen normally uses. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style -# sheet that is used by each HTML page. It can be used to fine-tune the look of -# the HTML output. If left blank doxygen will generate a default style sheet. -# See also section "Doxygen usage" for information on how to generate the style -# sheet that doxygen normally uses. -# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as -# it is more robust and this tag (HTML_STYLESHEET) will in the future become -# obsolete. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_STYLESHEET = - -# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user- -# defined cascading style sheet that is included after the standard style sheets -# created by doxygen. Using this option one can overrule certain style aspects. -# This is preferred over using HTML_STYLESHEET since it does not replace the -# standard style sheet and is therefor more robust against future updates. -# Doxygen will copy the style sheet file to the output directory. For an example -# see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_STYLESHEET = - -# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or -# other source files which should be copied to the HTML output directory. Note -# that these files will be copied to the base HTML output directory. Use the -# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these -# files. In the HTML_STYLESHEET file, use the file name only. Also note that the -# files will be copied as-is; there are no commands or markers available. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_FILES = - -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen -# will adjust the colors in the stylesheet and background images according to -# this color. Hue is specified as an angle on a colorwheel, see -# http://en.wikipedia.org/wiki/Hue for more information. For instance the value -# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 -# purple, and 360 is red again. -# Minimum value: 0, maximum value: 359, default value: 220. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_HUE = 220 - -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors -# in the HTML output. For a value of 0 the output will use grayscales only. A -# value of 255 will produce the most vivid colors. -# Minimum value: 0, maximum value: 255, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_SAT = 100 - -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the -# luminance component of the colors in the HTML output. Values below 100 -# gradually make the output lighter, whereas values above 100 make the output -# darker. The value divided by 100 is the actual gamma applied, so 80 represents -# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not -# change the gamma. -# Minimum value: 40, maximum value: 240, default value: 80. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_GAMMA = 80 - -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting this -# to NO can help when comparing the output of multiple runs. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_TIMESTAMP = YES - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_DYNAMIC_SECTIONS = NO - -# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries -# shown in the various tree structured indices initially; the user can expand -# and collapse entries dynamically later on. Doxygen will expand the tree to -# such a level that at most the specified number of entries are visible (unless -# a fully collapsed tree already exceeds this amount). So setting the number of -# entries 1 will produce a full collapsed tree by default. 0 is a special value -# representing an infinite number of entries and will result in a full expanded -# tree by default. -# Minimum value: 0, maximum value: 9999, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_INDEX_NUM_ENTRIES = 100 - -# If the GENERATE_DOCSET tag is set to YES, additional index files will be -# generated that can be used as input for Apple's Xcode 3 integrated development -# environment (see: http://developer.apple.com/tools/xcode/), introduced with -# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a -# Makefile in the HTML output directory. Running make will produce the docset in -# that directory and running make install will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at -# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html -# for more information. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_DOCSET = NO - -# This tag determines the name of the docset feed. A documentation feed provides -# an umbrella under which multiple documentation sets from a single provider -# (such as a company or product suite) can be grouped. -# The default value is: Doxygen generated docs. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_FEEDNAME = "Doxygen generated docs" - -# This tag specifies a string that should uniquely identify the documentation -# set bundle. This should be a reverse domain-name style string, e.g. -# com.mycompany.MyDocSet. Doxygen will append .docset to the name. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_BUNDLE_ID = org.doxygen.Project - -# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify -# the documentation publisher. This should be a reverse domain-name style -# string, e.g. com.mycompany.MyDocSet.documentation. -# The default value is: org.doxygen.Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_ID = org.doxygen.Publisher - -# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. -# The default value is: Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_NAME = Publisher - -# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three -# additional HTML index files: index.hhp, index.hhc, and index.hhk. The -# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop -# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on -# Windows. -# -# The HTML Help Workshop contains a compiler that can convert all HTML output -# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML -# files are now used as the Windows 98 help format, and will replace the old -# Windows help format (.hlp) on all Windows platforms in the future. Compressed -# HTML files also contain an index, a table of contents, and you can search for -# words in the documentation. The HTML workshop also contains a viewer for -# compressed HTML files. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_HTMLHELP = NO - -# The CHM_FILE tag can be used to specify the file name of the resulting .chm -# file. You can add a path in front of the file if the result should not be -# written to the html output directory. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_FILE = - -# The HHC_LOCATION tag can be used to specify the location (absolute path -# including file name) of the HTML help compiler ( hhc.exe). If non-empty -# doxygen will try to run the HTML help compiler on the generated index.hhp. -# The file has to be specified with full path. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -HHC_LOCATION = - -# The GENERATE_CHI flag controls if a separate .chi index file is generated ( -# YES) or that it should be included in the master .chm file ( NO). -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -GENERATE_CHI = NO - -# The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc) -# and project file content. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_INDEX_ENCODING = - -# The BINARY_TOC flag controls whether a binary table of contents is generated ( -# YES) or a normal table of contents ( NO) in the .chm file. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members to -# the table of contents of the HTML help documentation and to the tree view. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -TOC_EXPAND = NO - -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that -# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help -# (.qch) of the generated HTML documentation. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_QHP = NO - -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify -# the file name of the resulting .qch file. The path specified is relative to -# the HTML output folder. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QCH_FILE = - -# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help -# Project output. For more information please see Qt Help Project / Namespace -# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_NAMESPACE = org.doxygen.Project - -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt -# Help Project output. For more information please see Qt Help Project / Virtual -# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- -# folders). -# The default value is: doc. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_VIRTUAL_FOLDER = doc - -# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom -# filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_NAME = - -# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the -# custom filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -# project's filter section matches. Qt Help Project / Filter Attributes (see: -# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_SECT_FILTER_ATTRS = - -# The QHG_LOCATION tag can be used to specify the location of Qt's -# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the -# generated .qhp file. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHG_LOCATION = - -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be -# generated, together with the HTML files, they form an Eclipse help plugin. To -# install this plugin and make it available under the help contents menu in -# Eclipse, the contents of the directory containing the HTML and XML files needs -# to be copied into the plugins directory of eclipse. The name of the directory -# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. -# After copying Eclipse needs to be restarted before the help appears. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_ECLIPSEHELP = NO - -# A unique identifier for the Eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have this -# name. Each documentation set should have its own identifier. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. - -ECLIPSE_DOC_ID = org.doxygen.Project - -# If you want full control over the layout of the generated HTML pages it might -# be necessary to disable the index and replace it with your own. The -# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top -# of each HTML page. A value of NO enables the index and the value YES disables -# it. Since the tabs in the index contain the same information as the navigation -# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -DISABLE_INDEX = NO - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. If the tag -# value is set to YES, a side panel will be generated containing a tree-like -# index structure (just like the one that is generated for HTML Help). For this -# to work a browser that supports JavaScript, DHTML, CSS and frames is required -# (i.e. any modern browser). Windows users are probably better off using the -# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can -# further fine-tune the look of the index. As an example, the default style -# sheet generated by doxygen has an example that shows how to put an image at -# the root of the tree instead of the PROJECT_NAME. Since the tree basically has -# the same information as the tab index, you could consider setting -# DISABLE_INDEX to YES when enabling this option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_TREEVIEW = NO - -# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that -# doxygen will group on one line in the generated HTML documentation. -# -# Note that a value of 0 will completely suppress the enum values from appearing -# in the overview section. -# Minimum value: 0, maximum value: 20, default value: 4. -# This tag requires that the tag GENERATE_HTML is set to YES. - -ENUM_VALUES_PER_LINE = 4 - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used -# to set the initial width (in pixels) of the frame in which the tree is shown. -# Minimum value: 0, maximum value: 1500, default value: 250. -# This tag requires that the tag GENERATE_HTML is set to YES. - -TREEVIEW_WIDTH = 250 - -# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to -# external symbols imported via tag files in a separate window. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -EXT_LINKS_IN_WINDOW = NO - -# Use this tag to change the font size of LaTeX formulas included as images in -# the HTML documentation. When you change the font size after a successful -# doxygen run you need to manually remove any form_*.png images from the HTML -# output directory to force them to be regenerated. -# Minimum value: 8, maximum value: 50, default value: 10. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_FONTSIZE = 10 - -# Use the FORMULA_TRANPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are not -# supported properly for IE 6.0, but are supported on all modern browsers. -# -# Note that when changing this option you need to delete any form_*.png files in -# the HTML output directory before the changes have effect. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_TRANSPARENT = YES - -# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see -# http://www.mathjax.org) which uses client side Javascript for the rendering -# instead of using prerendered bitmaps. Use this if you do not have LaTeX -# installed or if you want to formulas look prettier in the HTML output. When -# enabled you may also need to install MathJax separately and configure the path -# to it using the MATHJAX_RELPATH option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -USE_MATHJAX = NO - -# When MathJax is enabled you can set the default output format to be used for -# the MathJax output. See the MathJax site (see: -# http://docs.mathjax.org/en/latest/output.html) for more details. -# Possible values are: HTML-CSS (which is slower, but has the best -# compatibility), NativeMML (i.e. MathML) and SVG. -# The default value is: HTML-CSS. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_FORMAT = HTML-CSS - -# When MathJax is enabled you need to specify the location relative to the HTML -# output directory using the MATHJAX_RELPATH option. The destination directory -# should contain the MathJax.js script. For instance, if the mathjax directory -# is located at the same level as the HTML output directory, then -# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax -# Content Delivery Network so you can quickly see the result without installing -# MathJax. However, it is strongly recommended to install a local copy of -# MathJax from http://www.mathjax.org before deployment. -# The default value is: http://cdn.mathjax.org/mathjax/latest. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest - -# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax -# extension names that should be enabled during MathJax rendering. For example -# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_EXTENSIONS = - -# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces -# of code that will be used on startup of the MathJax code. See the MathJax site -# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an -# example see the documentation. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_CODEFILE = - -# When the SEARCHENGINE tag is enabled doxygen will generate a search box for -# the HTML output. The underlying search engine uses javascript and DHTML and -# should work on any modern browser. Note that when using HTML help -# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) -# there is already a search function so this one should typically be disabled. -# For large projects the javascript based search engine can be slow, then -# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to -# search using the keyboard; to jump to the search box use <access key> + S -# (what the <access key> is depends on the OS and browser, but it is typically -# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down -# key> to jump into the search results window, the results can be navigated -# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel -# the search. The filter options can be selected when the cursor is inside the -# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys> -# to select a filter and <Enter> or <escape> to activate or cancel the filter -# option. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -SEARCHENGINE = YES - -# When the SERVER_BASED_SEARCH tag is enabled the search engine will be -# implemented using a web server instead of a web client using Javascript. There -# are two flavours of web server based searching depending on the -# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for -# searching and an index file used by the script. When EXTERNAL_SEARCH is -# enabled the indexing and searching needs to be provided by external tools. See -# the section "External Indexing and Searching" for details. -# The default value is: NO. -# This tag requires that the tag SEARCHENGINE is set to YES. - -SERVER_BASED_SEARCH = NO - -# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP -# script for searching. Instead the search results are written to an XML file -# which needs to be processed by an external indexer. Doxygen will invoke an -# external search engine pointed to by the SEARCHENGINE_URL option to obtain the -# search results. -# -# Doxygen ships with an example indexer ( doxyindexer) and search engine -# (doxysearch.cgi) which are based on the open source search engine library -# Xapian (see: http://xapian.org/). -# -# See the section "External Indexing and Searching" for details. -# The default value is: NO. -# This tag requires that the tag SEARCHENGINE is set to YES. - -EXTERNAL_SEARCH = NO - -# The SEARCHENGINE_URL should point to a search engine hosted by a web server -# which will return the search results when EXTERNAL_SEARCH is enabled. -# -# Doxygen ships with an example indexer ( doxyindexer) and search engine -# (doxysearch.cgi) which are based on the open source search engine library -# Xapian (see: http://xapian.org/). See the section "External Indexing and -# Searching" for details. -# This tag requires that the tag SEARCHENGINE is set to YES. - -SEARCHENGINE_URL = - -# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed -# search data is written to a file for indexing by an external tool. With the -# SEARCHDATA_FILE tag the name of this file can be specified. -# The default file is: searchdata.xml. -# This tag requires that the tag SEARCHENGINE is set to YES. - -SEARCHDATA_FILE = searchdata.xml - -# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the -# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is -# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple -# projects and redirect the results back to the right project. -# This tag requires that the tag SEARCHENGINE is set to YES. - -EXTERNAL_SEARCH_ID = - -# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen -# projects other than the one defined by this configuration file, but that are -# all added to the same external search index. Each project needs to have a -# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of -# to a relative location where the documentation can be found. The format is: -# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ... -# This tag requires that the tag SEARCHENGINE is set to YES. - -EXTRA_SEARCH_MAPPINGS = - -#--------------------------------------------------------------------------- -# Configuration options related to the LaTeX output -#--------------------------------------------------------------------------- - -# If the GENERATE_LATEX tag is set to YES doxygen will generate LaTeX output. -# The default value is: YES. - -GENERATE_LATEX = YES - -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of -# it. -# The default directory is: latex. -# This tag requires that the tag GENERATE_LATEX is set to YES. - -LATEX_OUTPUT = latex - -# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be -# invoked. -# -# Note that when enabling USE_PDFLATEX this option is only used for generating -# bitmaps for formulas in the HTML output, but not in the Makefile that is -# written to the output directory. -# The default file is: latex. -# This tag requires that the tag GENERATE_LATEX is set to YES. - -LATEX_CMD_NAME = latex - -# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate -# index for LaTeX. -# The default file is: makeindex. -# This tag requires that the tag GENERATE_LATEX is set to YES. - -MAKEINDEX_CMD_NAME = makeindex - -# If the COMPACT_LATEX tag is set to YES doxygen generates more compact LaTeX -# documents. This may be useful for small projects and may help to save some -# trees in general. -# The default value is: NO. -# This tag requires that the tag GENERATE_LATEX is set to YES. - -COMPACT_LATEX = NO - -# The PAPER_TYPE tag can be used to set the paper type that is used by the -# printer. -# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x -# 14 inches) and executive (7.25 x 10.5 inches). -# The default value is: a4. -# This tag requires that the tag GENERATE_LATEX is set to YES. - -PAPER_TYPE = a4 - -# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names -# that should be included in the LaTeX output. To get the times font for -# instance you can specify -# EXTRA_PACKAGES=times -# If left blank no extra packages will be included. -# This tag requires that the tag GENERATE_LATEX is set to YES. - -EXTRA_PACKAGES = - -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the -# generated LaTeX document. The header should contain everything until the first -# chapter. If it is left blank doxygen will generate a standard header. See -# section "Doxygen usage" for information on how to let doxygen write the -# default header to a separate file. -# -# Note: Only use a user-defined header if you know what you are doing! The -# following commands have a special meaning inside the header: $title, -# $datetime, $date, $doxygenversion, $projectname, $projectnumber. Doxygen will -# replace them by respectively the title of the page, the current date and time, -# only the current date, the version number of doxygen, the project name (see -# PROJECT_NAME), or the project number (see PROJECT_NUMBER). -# This tag requires that the tag GENERATE_LATEX is set to YES. - -LATEX_HEADER = doc/doxygen/header.tex - -# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the -# generated LaTeX document. The footer should contain everything after the last -# chapter. If it is left blank doxygen will generate a standard footer. -# -# Note: Only use a user-defined footer if you know what you are doing! -# This tag requires that the tag GENERATE_LATEX is set to YES. - -LATEX_FOOTER = - -# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or -# other source files which should be copied to the LATEX_OUTPUT output -# directory. Note that the files will be copied as-is; there are no commands or -# markers available. -# This tag requires that the tag GENERATE_LATEX is set to YES. - -LATEX_EXTRA_FILES = - -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is -# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will -# contain links (just like the HTML output) instead of page references. This -# makes the output suitable for online browsing using a PDF viewer. -# The default value is: YES. -# This tag requires that the tag GENERATE_LATEX is set to YES. - -PDF_HYPERLINKS = YES - -# If the LATEX_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate -# the PDF file directly from the LaTeX files. Set this option to YES to get a -# higher quality PDF documentation. -# The default value is: YES. -# This tag requires that the tag GENERATE_LATEX is set to YES. - -USE_PDFLATEX = YES - -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode -# command to the generated LaTeX files. This will instruct LaTeX to keep running -# if errors occur, instead of asking the user for help. This option is also used -# when generating formulas in HTML. -# The default value is: NO. -# This tag requires that the tag GENERATE_LATEX is set to YES. - -LATEX_BATCHMODE = NO - -# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the -# index chapters (such as File Index, Compound Index, etc.) in the output. -# The default value is: NO. -# This tag requires that the tag GENERATE_LATEX is set to YES. - -LATEX_HIDE_INDICES = NO - -# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source -# code with syntax highlighting in the LaTeX output. -# -# Note that which sources are shown also depends on other settings such as -# SOURCE_BROWSER. -# The default value is: NO. -# This tag requires that the tag GENERATE_LATEX is set to YES. - -LATEX_SOURCE_CODE = NO - -# The LATEX_BIB_STYLE tag can be used to specify the style to use for the -# bibliography, e.g. plainnat, or ieeetr. See -# http://en.wikipedia.org/wiki/BibTeX and \cite for more info. -# The default value is: plain. -# This tag requires that the tag GENERATE_LATEX is set to YES. - -LATEX_BIB_STYLE = plain - -#--------------------------------------------------------------------------- -# Configuration options related to the RTF output -#--------------------------------------------------------------------------- - -# If the GENERATE_RTF tag is set to YES doxygen will generate RTF output. The -# RTF output is optimized for Word 97 and may not look too pretty with other RTF -# readers/editors. -# The default value is: NO. - -GENERATE_RTF = NO - -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of -# it. -# The default directory is: rtf. -# This tag requires that the tag GENERATE_RTF is set to YES. - -RTF_OUTPUT = rtf - -# If the COMPACT_RTF tag is set to YES doxygen generates more compact RTF -# documents. This may be useful for small projects and may help to save some -# trees in general. -# The default value is: NO. -# This tag requires that the tag GENERATE_RTF is set to YES. - -COMPACT_RTF = NO - -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will -# contain hyperlink fields. The RTF file will contain links (just like the HTML -# output) instead of page references. This makes the output suitable for online -# browsing using Word or some other Word compatible readers that support those -# fields. -# -# Note: WordPad (write) and others do not support links. -# The default value is: NO. -# This tag requires that the tag GENERATE_RTF is set to YES. - -RTF_HYPERLINKS = NO - -# Load stylesheet definitions from file. Syntax is similar to doxygen's config -# file, i.e. a series of assignments. You only have to provide replacements, -# missing definitions are set to their default value. -# -# See also section "Doxygen usage" for information on how to generate the -# default style sheet that doxygen normally uses. -# This tag requires that the tag GENERATE_RTF is set to YES. - -RTF_STYLESHEET_FILE = - -# Set optional variables used in the generation of an RTF document. Syntax is -# similar to doxygen's config file. A template extensions file can be generated -# using doxygen -e rtf extensionFile. -# This tag requires that the tag GENERATE_RTF is set to YES. - -RTF_EXTENSIONS_FILE = - -#--------------------------------------------------------------------------- -# Configuration options related to the man page output -#--------------------------------------------------------------------------- - -# If the GENERATE_MAN tag is set to YES doxygen will generate man pages for -# classes and files. -# The default value is: NO. - -GENERATE_MAN = NO - -# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of -# it. A directory man3 will be created inside the directory specified by -# MAN_OUTPUT. -# The default directory is: man. -# This tag requires that the tag GENERATE_MAN is set to YES. - -MAN_OUTPUT = man - -# The MAN_EXTENSION tag determines the extension that is added to the generated -# man pages. In case the manual section does not start with a number, the number -# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is -# optional. -# The default value is: .3. -# This tag requires that the tag GENERATE_MAN is set to YES. - -MAN_EXTENSION = .3 - -# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it -# will generate one additional man file for each entity documented in the real -# man page(s). These additional files only source the real man page, but without -# them the man command would be unable to find the correct page. -# The default value is: NO. -# This tag requires that the tag GENERATE_MAN is set to YES. - -MAN_LINKS = NO - -#--------------------------------------------------------------------------- -# Configuration options related to the XML output -#--------------------------------------------------------------------------- - -# If the GENERATE_XML tag is set to YES doxygen will generate an XML file that -# captures the structure of the code including all documentation. -# The default value is: NO. - -GENERATE_XML = NO - -# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of -# it. -# The default directory is: xml. -# This tag requires that the tag GENERATE_XML is set to YES. - -XML_OUTPUT = xml - -# The XML_SCHEMA tag can be used to specify a XML schema, which can be used by a -# validating XML parser to check the syntax of the XML files. -# This tag requires that the tag GENERATE_XML is set to YES. - -XML_SCHEMA = - -# The XML_DTD tag can be used to specify a XML DTD, which can be used by a -# validating XML parser to check the syntax of the XML files. -# This tag requires that the tag GENERATE_XML is set to YES. - -XML_DTD = - -# If the XML_PROGRAMLISTING tag is set to YES doxygen will dump the program -# listings (including syntax highlighting and cross-referencing information) to -# the XML output. Note that enabling this will significantly increase the size -# of the XML output. -# The default value is: YES. -# This tag requires that the tag GENERATE_XML is set to YES. - -XML_PROGRAMLISTING = YES - -#--------------------------------------------------------------------------- -# Configuration options related to the DOCBOOK output -#--------------------------------------------------------------------------- - -# If the GENERATE_DOCBOOK tag is set to YES doxygen will generate Docbook files -# that can be used to generate PDF. -# The default value is: NO. - -GENERATE_DOCBOOK = NO - -# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in -# front of it. -# The default directory is: docbook. -# This tag requires that the tag GENERATE_DOCBOOK is set to YES. - -DOCBOOK_OUTPUT = docbook - -#--------------------------------------------------------------------------- -# Configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- - -# If the GENERATE_AUTOGEN_DEF tag is set to YES doxygen will generate an AutoGen -# Definitions (see http://autogen.sf.net) file that captures the structure of -# the code including all documentation. Note that this feature is still -# experimental and incomplete at the moment. -# The default value is: NO. - -GENERATE_AUTOGEN_DEF = NO - -#--------------------------------------------------------------------------- -# Configuration options related to the Perl module output -#--------------------------------------------------------------------------- - -# If the GENERATE_PERLMOD tag is set to YES doxygen will generate a Perl module -# file that captures the structure of the code including all documentation. -# -# Note that this feature is still experimental and incomplete at the moment. -# The default value is: NO. - -GENERATE_PERLMOD = NO - -# If the PERLMOD_LATEX tag is set to YES doxygen will generate the necessary -# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI -# output from the Perl module output. -# The default value is: NO. -# This tag requires that the tag GENERATE_PERLMOD is set to YES. - -PERLMOD_LATEX = NO - -# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be nicely -# formatted so it can be parsed by a human reader. This is useful if you want to -# understand what is going on. On the other hand, if this tag is set to NO the -# size of the Perl module output will be much smaller and Perl will parse it -# just the same. -# The default value is: YES. -# This tag requires that the tag GENERATE_PERLMOD is set to YES. - -PERLMOD_PRETTY = YES - -# The names of the make variables in the generated doxyrules.make file are -# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful -# so different doxyrules.make files included by the same Makefile don't -# overwrite each other's variables. -# This tag requires that the tag GENERATE_PERLMOD is set to YES. - -PERLMOD_MAKEVAR_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- - -# If the ENABLE_PREPROCESSING tag is set to YES doxygen will evaluate all -# C-preprocessor directives found in the sources and include files. -# The default value is: YES. - -ENABLE_PREPROCESSING = YES - -# If the MACRO_EXPANSION tag is set to YES doxygen will expand all macro names -# in the source code. If set to NO only conditional compilation will be -# performed. Macro expansion can be done in a controlled way by setting -# EXPAND_ONLY_PREDEF to YES. -# The default value is: NO. -# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. - -MACRO_EXPANSION = YES - -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then -# the macro expansion is limited to the macros specified with the PREDEFINED and -# EXPAND_AS_DEFINED tags. -# The default value is: NO. -# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. - -EXPAND_ONLY_PREDEF = YES - -# If the SEARCH_INCLUDES tag is set to YES the includes files in the -# INCLUDE_PATH will be searched if a #include is found. -# The default value is: YES. -# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. - -SEARCH_INCLUDES = YES - -# The INCLUDE_PATH tag can be used to specify one or more directories that -# contain include files that are not input files but should be processed by the -# preprocessor. -# This tag requires that the tag SEARCH_INCLUDES is set to YES. - -INCLUDE_PATH = - -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard -# patterns (like *.h and *.hpp) to filter out the header-files in the -# directories. If left blank, the patterns specified with FILE_PATTERNS will be -# used. -# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. - -INCLUDE_FILE_PATTERNS = - -# The PREDEFINED tag can be used to specify one or more macro names that are -# defined before the preprocessor is started (similar to the -D option of e.g. -# gcc). The argument of the tag is a list of macros of the form: name or -# name=definition (no spaces). If the definition and the "=" are omitted, "=1" -# is assumed. To prevent a macro definition from being undefined via #undef or -# recursively expanded use the := operator instead of the = operator. -# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. - -PREDEFINED = COI_LIBRARY_VERSION=2 -DMYO_SUPPORT -DOFFLOAD_DEBUG=1 -DSEP_SUPPORT -DTIMING_SUPPORT - -# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this -# tag can be used to specify a list of macro names that should be expanded. The -# macro definition that is found in the sources will be used. Use the PREDEFINED -# tag if you want to use a different macro definition that overrules the -# definition found in the source code. -# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. - -EXPAND_AS_DEFINED = - -# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will -# remove all refrences to function-like macros that are alone on a line, have an -# all uppercase name, and do not end with a semicolon. Such function macros are -# typically used for boiler-plate code, and will confuse the parser if not -# removed. -# The default value is: YES. -# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. - -SKIP_FUNCTION_MACROS = YES - -#--------------------------------------------------------------------------- -# Configuration options related to external references -#--------------------------------------------------------------------------- - -# The TAGFILES tag can be used to specify one or more tag files. For each tag -# file the location of the external documentation should be added. The format of -# a tag file without this location is as follows: -# TAGFILES = file1 file2 ... -# Adding location for the tag files is done as follows: -# TAGFILES = file1=loc1 "file2 = loc2" ... -# where loc1 and loc2 can be relative or absolute paths or URLs. See the -# section "Linking to external documentation" for more information about the use -# of tag files. -# Note: Each tag file must have an unique name (where the name does NOT include -# the path). If a tag file is not located in the directory in which doxygen is -# run, you must also specify the path to the tagfile here. - -TAGFILES = - -# When a file name is specified after GENERATE_TAGFILE, doxygen will create a -# tag file that is based on the input files it reads. See section "Linking to -# external documentation" for more information about the usage of tag files. - -GENERATE_TAGFILE = - -# If the ALLEXTERNALS tag is set to YES all external class will be listed in the -# class index. If set to NO only the inherited external classes will be listed. -# The default value is: NO. - -ALLEXTERNALS = NO - -# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed in -# the modules index. If set to NO, only the current project's groups will be -# listed. -# The default value is: YES. - -EXTERNAL_GROUPS = YES - -# If the EXTERNAL_PAGES tag is set to YES all external pages will be listed in -# the related pages index. If set to NO, only the current project's pages will -# be listed. -# The default value is: YES. - -EXTERNAL_PAGES = YES - -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of 'which perl'). -# The default file (with absolute path) is: /usr/bin/perl. - -PERL_PATH = /usr/bin/perl - -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- - -# If the CLASS_DIAGRAMS tag is set to YES doxygen will generate a class diagram -# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to -# NO turns the diagrams off. Note that this option also works with HAVE_DOT -# disabled, but it is recommended to install and use dot, since it yields more -# powerful graphs. -# The default value is: YES. - -CLASS_DIAGRAMS = YES - -# You can define message sequence charts within doxygen comments using the \msc -# command. Doxygen will then run the mscgen tool (see: -# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the -# documentation. The MSCGEN_PATH tag allows you to specify the directory where -# the mscgen tool resides. If left empty the tool is assumed to be found in the -# default search path. - -MSCGEN_PATH = - -# You can include diagrams made with dia in doxygen documentation. Doxygen will -# then run dia to produce the diagram and insert it in the documentation. The -# DIA_PATH tag allows you to specify the directory where the dia binary resides. -# If left empty dia is assumed to be found in the default search path. - -DIA_PATH = - -# If set to YES, the inheritance and collaboration graphs will hide inheritance -# and usage relations if the target is undocumented or is not a class. -# The default value is: YES. - -HIDE_UNDOC_RELATIONS = YES - -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is -# available from the path. This tool is part of Graphviz (see: -# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent -# Bell Labs. The other options in this section have no effect if this option is -# set to NO -# The default value is: NO. - -HAVE_DOT = NO - -# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed -# to run in parallel. When set to 0 doxygen will base this on the number of -# processors available in the system. You can set it explicitly to a value -# larger than 0 to get control over the balance between CPU load and processing -# speed. -# Minimum value: 0, maximum value: 32, default value: 0. -# This tag requires that the tag HAVE_DOT is set to YES. - -DOT_NUM_THREADS = 0 - -# When you want a differently looking font n the dot files that doxygen -# generates you can specify the font name using DOT_FONTNAME. You need to make -# sure dot is able to find the font, which can be done by putting it in a -# standard location or by setting the DOTFONTPATH environment variable or by -# setting DOT_FONTPATH to the directory containing the font. -# The default value is: Helvetica. -# This tag requires that the tag HAVE_DOT is set to YES. - -DOT_FONTNAME = Helvetica - -# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of -# dot graphs. -# Minimum value: 4, maximum value: 24, default value: 10. -# This tag requires that the tag HAVE_DOT is set to YES. - -DOT_FONTSIZE = 10 - -# By default doxygen will tell dot to use the default font as specified with -# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set -# the path where dot can find it using this tag. -# This tag requires that the tag HAVE_DOT is set to YES. - -DOT_FONTPATH = - -# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for -# each documented class showing the direct and indirect inheritance relations. -# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO. -# The default value is: YES. -# This tag requires that the tag HAVE_DOT is set to YES. - -CLASS_GRAPH = YES - -# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a -# graph for each documented class showing the direct and indirect implementation -# dependencies (inheritance, containment, and class references variables) of the -# class with other documented classes. -# The default value is: YES. -# This tag requires that the tag HAVE_DOT is set to YES. - -COLLABORATION_GRAPH = YES - -# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for -# groups, showing the direct groups dependencies. -# The default value is: YES. -# This tag requires that the tag HAVE_DOT is set to YES. - -GROUP_GRAPHS = YES - -# If the UML_LOOK tag is set to YES doxygen will generate inheritance and -# collaboration diagrams in a style similar to the OMG's Unified Modeling -# Language. -# The default value is: NO. -# This tag requires that the tag HAVE_DOT is set to YES. - -UML_LOOK = NO - -# If the UML_LOOK tag is enabled, the fields and methods are shown inside the -# class node. If there are many fields or methods and many nodes the graph may -# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the -# number of items for each type to make the size more manageable. Set this to 0 -# for no limit. Note that the threshold may be exceeded by 50% before the limit -# is enforced. So when you set the threshold to 10, up to 15 fields may appear, -# but if the number exceeds 15, the total amount of fields shown is limited to -# 10. -# Minimum value: 0, maximum value: 100, default value: 10. -# This tag requires that the tag HAVE_DOT is set to YES. - -UML_LIMIT_NUM_FIELDS = 10 - -# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and -# collaboration graphs will show the relations between templates and their -# instances. -# The default value is: NO. -# This tag requires that the tag HAVE_DOT is set to YES. - -TEMPLATE_RELATIONS = NO - -# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to -# YES then doxygen will generate a graph for each documented file showing the -# direct and indirect include dependencies of the file with other documented -# files. -# The default value is: YES. -# This tag requires that the tag HAVE_DOT is set to YES. - -INCLUDE_GRAPH = YES - -# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are -# set to YES then doxygen will generate a graph for each documented file showing -# the direct and indirect include dependencies of the file with other documented -# files. -# The default value is: YES. -# This tag requires that the tag HAVE_DOT is set to YES. - -INCLUDED_BY_GRAPH = YES - -# If the CALL_GRAPH tag is set to YES then doxygen will generate a call -# dependency graph for every global function or class method. -# -# Note that enabling this option will significantly increase the time of a run. -# So in most cases it will be better to enable call graphs for selected -# functions only using the \callgraph command. -# The default value is: NO. -# This tag requires that the tag HAVE_DOT is set to YES. - -CALL_GRAPH = NO - -# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller -# dependency graph for every global function or class method. -# -# Note that enabling this option will significantly increase the time of a run. -# So in most cases it will be better to enable caller graphs for selected -# functions only using the \callergraph command. -# The default value is: NO. -# This tag requires that the tag HAVE_DOT is set to YES. - -CALLER_GRAPH = NO - -# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical -# hierarchy of all classes instead of a textual one. -# The default value is: YES. -# This tag requires that the tag HAVE_DOT is set to YES. - -GRAPHICAL_HIERARCHY = YES - -# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the -# dependencies a directory has on other directories in a graphical way. The -# dependency relations are determined by the #include relations between the -# files in the directories. -# The default value is: YES. -# This tag requires that the tag HAVE_DOT is set to YES. - -DIRECTORY_GRAPH = YES - -# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images -# generated by dot. -# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order -# to make the SVG files visible in IE 9+ (other browsers do not have this -# requirement). -# Possible values are: png, jpg, gif and svg. -# The default value is: png. -# This tag requires that the tag HAVE_DOT is set to YES. - -DOT_IMAGE_FORMAT = png - -# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to -# enable generation of interactive SVG images that allow zooming and panning. -# -# Note that this requires a modern browser other than Internet Explorer. Tested -# and working are Firefox, Chrome, Safari, and Opera. -# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make -# the SVG files visible. Older versions of IE do not have SVG support. -# The default value is: NO. -# This tag requires that the tag HAVE_DOT is set to YES. - -INTERACTIVE_SVG = NO - -# The DOT_PATH tag can be used to specify the path where the dot tool can be -# found. If left blank, it is assumed the dot tool can be found in the path. -# This tag requires that the tag HAVE_DOT is set to YES. - -DOT_PATH = - -# The DOTFILE_DIRS tag can be used to specify one or more directories that -# contain dot files that are included in the documentation (see the \dotfile -# command). -# This tag requires that the tag HAVE_DOT is set to YES. - -DOTFILE_DIRS = - -# The MSCFILE_DIRS tag can be used to specify one or more directories that -# contain msc files that are included in the documentation (see the \mscfile -# command). - -MSCFILE_DIRS = - -# The DIAFILE_DIRS tag can be used to specify one or more directories that -# contain dia files that are included in the documentation (see the \diafile -# command). - -DIAFILE_DIRS = - -# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes -# that will be shown in the graph. If the number of nodes in a graph becomes -# larger than this value, doxygen will truncate the graph, which is visualized -# by representing a node as a red box. Note that doxygen if the number of direct -# children of the root node in a graph is already larger than -# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that -# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. -# Minimum value: 0, maximum value: 10000, default value: 50. -# This tag requires that the tag HAVE_DOT is set to YES. - -DOT_GRAPH_MAX_NODES = 50 - -# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs -# generated by dot. A depth value of 3 means that only nodes reachable from the -# root by following a path via at most 3 edges will be shown. Nodes that lay -# further from the root node will be omitted. Note that setting this option to 1 -# or 2 may greatly reduce the computation time needed for large code bases. Also -# note that the size of a graph can be further restricted by -# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. -# Minimum value: 0, maximum value: 1000, default value: 0. -# This tag requires that the tag HAVE_DOT is set to YES. - -MAX_DOT_GRAPH_DEPTH = 0 - -# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent -# background. This is disabled by default, because dot on Windows does not seem -# to support this out of the box. -# -# Warning: Depending on the platform used, enabling this option may lead to -# badly anti-aliased labels on the edges of a graph (i.e. they become hard to -# read). -# The default value is: NO. -# This tag requires that the tag HAVE_DOT is set to YES. - -DOT_TRANSPARENT = NO - -# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output -# files in one run (i.e. multiple -o and -T options on the command line). This -# makes dot run faster, but since only newer versions of dot (>1.8.10) support -# this, this feature is disabled by default. -# The default value is: NO. -# This tag requires that the tag HAVE_DOT is set to YES. - -DOT_MULTI_TARGETS = NO - -# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page -# explaining the meaning of the various boxes and arrows in the dot generated -# graphs. -# The default value is: YES. -# This tag requires that the tag HAVE_DOT is set to YES. - -GENERATE_LEGEND = YES - -# If the DOT_CLEANUP tag is set to YES doxygen will remove the intermediate dot -# files that are used to generate the various graphs. -# The default value is: YES. -# This tag requires that the tag HAVE_DOT is set to YES. - -DOT_CLEANUP = YES diff --git a/liboffloadmic/doc/doxygen/header.tex b/liboffloadmic/doc/doxygen/header.tex deleted file mode 100644 index e91d4be..0000000 --- a/liboffloadmic/doc/doxygen/header.tex +++ /dev/null @@ -1,90 +0,0 @@ -% Latex header for doxygen 1.8.3.1 -\documentclass{book} -\usepackage[a4paper,top=2.5cm,bottom=2.5cm,left=2.5cm,right=2.5cm]{geometry} -\usepackage{makeidx} -\usepackage{natbib} -\usepackage{graphicx} -\usepackage{multicol} -\usepackage{float} -\usepackage{listings} -\usepackage{color} -\usepackage{ifthen} -\usepackage[table]{xcolor} -\usepackage{textcomp} -\usepackage{alltt} -\usepackage{ifpdf} -\ifpdf -\usepackage[pdftex, - pagebackref=true, - colorlinks=true, - linkcolor=blue, - unicode - ]{hyperref} -\else -\usepackage[ps2pdf, - pagebackref=true, - colorlinks=true, - linkcolor=blue, - unicode - ]{hyperref} -\usepackage{pspicture} -\fi -\usepackage[utf8]{inputenc} -\usepackage{mathptmx} -\usepackage[scaled=.90]{helvet} -\usepackage{courier} -\usepackage{sectsty} -\usepackage{amssymb} -\usepackage[titles]{tocloft} -\usepackage{doxygen} -\usepackage{fancyhdr} -\pagestyle{fancy} -\lstset{language=C++,inputencoding=utf8,basicstyle=\footnotesize,breaklines=true,breakatwhitespace=true,tabsize=4,numbers=left } -\makeindex -\setcounter{tocdepth}{3} -\renewcommand{\footrulewidth}{0.4pt} -\renewcommand{\familydefault}{\sfdefault} -\hfuzz=15pt -\setlength{\emergencystretch}{15pt} -\hbadness=750 -\tolerance=750 -\begin{document} -\hypersetup{pageanchor=false,citecolor=blue} -\begin{titlepage} -\vspace*{7cm} -\begin{center} -{\Large Intel\textsuperscript{\textregistered} Offload Runtime Library }\\ -\vspace*{1cm} -{\large Generated by Doxygen $doxygenversion }\\ -\vspace*{0.5cm} -{\small $datetime }\\ -\end{center} -\end{titlepage} - -{\bf FTC Optimization Notice} - -Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for -optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, -SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the -availability, functionality, or effectiveness of any optimization on microprocessors not -manufactured by Intel. - -Microprocessor-dependent optimizations in this product are intended for use with Intel -microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for -Intel microprocessors. Please refer to the applicable product User and Reference Guides for -more information regarding the specific instruction sets covered by this notice. - -Notice revision \#20110804 - -\vspace*{0.5cm} - -{\bf Trademarks} - -Intel, Xeon, and Intel Xeon Phi are trademarks of Intel Corporation in the U.S. and/or other countries. - -This document is Copyright \textcopyright 2014-2016, Intel Corporation. All rights reserved. - -\pagenumbering{roman} -\tableofcontents -\pagenumbering{arabic} -\hypersetup{pageanchor=true,citecolor=blue} diff --git a/liboffloadmic/include/coi/common/COIEngine_common.h b/liboffloadmic/include/coi/common/COIEngine_common.h deleted file mode 100644 index 836e3e8..0000000 --- a/liboffloadmic/include/coi/common/COIEngine_common.h +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright 2010-2016 Intel Corporation. - * - * This library is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, version 2.1. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301 USA. - * - * Disclaimer: The codes contained in these modules may be specific - * to the Intel Software Development Platform codenamed Knights Ferry, - * and the Intel product codenamed Knights Corner, and are not backward - * compatible with other Intel products. Additionally, Intel will NOT - * support the codes or instruction set in future products. - * - * Intel offers no warranty of any kind regarding the code. This code is - * licensed on an "AS IS" basis and Intel is not obligated to provide - * any support, assistance, installation, training, or other services - * of any kind. Intel is also not obligated to provide any updates, - * enhancements or extensions. Intel specifically disclaims any warranty - * of merchantability, non-infringement, fitness for any particular - * purpose, and any other warranty. - * - * Further, Intel disclaims all liability of any kind, including but - * not limited to liability for infringement of any proprietary rights, - * relating to the use of the code, even if Intel is notified of the - * possibility of such liability. Except as expressly stated in an Intel - * license agreement provided with this code and agreed upon with Intel, - * no license, express or implied, by estoppel or otherwise, to any - * intellectual property rights is granted herein. - */ - -#ifndef _COIENGINE_COMMON_H -#define _COIENGINE_COMMON_H - -/** @ingroup COIEngine - * @addtogroup COIEnginecommon -@{ -* @file common/COIEngine_common.h -*/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -#include "../common/COITypes_common.h" -#include "../common/COIResult_common.h" - -#ifdef __cplusplus -extern "C" { -#endif -#endif // DOXYGEN_SHOULD_SKIP_THIS - -#define COI_MAX_ISA_x86_64_DEVICES 128 -#define COI_MAX_ISA_MIC_DEVICES 128 -#define COI_MAX_ISA_KNF_DEVICES 0 -#define COI_MAX_ISA_KNC_DEVICES COI_MAX_ISA_MIC_DEVICES -#define COI_MAX_ISA_KNL_DEVICES COI_MAX_ISA_MIC_DEVICES - -/////////////////////////////////////////////////////////////////////////////// -/// -/// List of ISA types of supported engines. -/// -typedef enum -{ - COI_DEVICE_INVALID = 0, ///< Represents an invalid device type. - COI_DEVICE_SOURCE, ///< The engine from which offload originates - COI_DEVICE_MIC, ///< Special value used to represent any device - ///< in the Intel(R) Many Integrated Core family. - COI_DEVICE_DEPRECATED_0, ///< Placeholder for L1OM devices (deprecated). - COI_DEVICE_KNC, ///< K1OM devices (Knigts Corner). - COI_DEVICE_KNL, ///< Knights Landing devices - COI_DEVICE_MAX, - COI_DEVICE_KNF = COI_DEVICE_DEPRECATED_0 -} COI_DEVICE_TYPE; - -/////////////////////////////////////////////////////////////////////////////// -/// -/// List of deprecated device types for backward compatibility -/// -#define COI_ISA_INVALID COI_DEVICE_INVALID -#define COI_ISA_x86_64 COI_DEVICE_SOURCE -#define COI_ISA_MIC COI_DEVICE_MIC -#define COI_ISA_KNF COI_DEVICE_KNF -#define COI_ISA_KNC COI_DEVICE_KNC - -typedef COI_DEVICE_TYPE COI_ISA_TYPE; - -/////////////////////////////////////////////////////////////////////////////// -/// -/// Get the information about the COIEngine executing this function call. -/// -/// @param out_pType -/// [out] The COI_DEVICE_TYPE of the engine. -/// -/// @param out_pIndex -/// [out] The zero-based index of this engine in the collection of -/// engines of the ISA returned in out_pType. -/// -/// @return COI_INVALID_POINTER if any of the parameters are NULL. -/// -/// @return COI_SUCCESS -/// -COIACCESSAPI -COIRESULT -COIEngineGetIndex( - COI_DEVICE_TYPE *out_pType, - uint32_t *out_pIndex); - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* _COIENGINE_COMMON_H */ - -/*! @} */ diff --git a/liboffloadmic/include/coi/common/COIEvent_common.h b/liboffloadmic/include/coi/common/COIEvent_common.h deleted file mode 100644 index 9d5623d..0000000 --- a/liboffloadmic/include/coi/common/COIEvent_common.h +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright 2010-2016 Intel Corporation. - * - * This library is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, version 2.1. - * - * This library 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 - * Lesser General Public License for more details. - * - * Disclaimer: The codes contained in these modules may be specific - * to the Intel Software Development Platform codenamed Knights Ferry, - * and the Intel product codenamed Knights Corner, and are not backward - * compatible with other Intel products. Additionally, Intel will NOT - * support the codes or instruction set in future products. - * - * Intel offers no warranty of any kind regarding the code. This code is - * licensed on an "AS IS" basis and Intel is not obligated to provide - * any support, assistance, installation, training, or other services - * of any kind. Intel is also not obligated to provide any updates, - * enhancements or extensions. Intel specifically disclaims any warranty - * of merchantability, non-infringement, fitness for any particular - * purpose, and any other warranty. - * - * Further, Intel disclaims all liability of any kind, including but - * not limited to liability for infringement of any proprietary rights, - * relating to the use of the code, even if Intel is notified of the - * possibility of such liability. Except as expressly stated in an Intel - * license agreement provided with this code and agreed upon with Intel, - * no license, express or implied, by estoppel or otherwise, to any - * intellectual property rights is granted herein. - */ - -#ifndef _COIEVENT_COMMON_H -#define _COIEVENT_COMMON_H - -/** @ingroup COIEvent - * @addtogroup COIEventcommon -@{ -* @file common/COIEvent_common.h -*/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -#include "../common/COITypes_common.h" -#include "../common/COIResult_common.h" - -#ifdef __cplusplus -extern "C" { -#endif -#endif // DOXYGEN_SHOULD_SKIP_THIS - - -/////////////////////////////////////////////////////////////////////////////// -/// -/// Signal one shot user event. User events created on source can be -/// signaled from both sink and source. This fires the event and wakes up -/// threads waiting on COIEventWait. -/// -/// Note: For events that are not registered or already signaled this call -/// will behave as a NOP. Users need to make sure that they pass valid -/// events on the sink side. -/// -/// @param in_Event -/// Event Handle to be signaled. -/// -/// @return COI_INVAILD_HANDLE if in_Event was not a User event. -/// -/// @return COI_ERROR if the signal fails to be sent from the sink. -/// -/// @return COI_SUCCESS if the event was successfully signaled or ignored. -/// -COIACCESSAPI -COIRESULT COIEventSignalUserEvent(COIEVENT in_Event); -/// -/// -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* _COIEVENT_COMMON_H */ - -/*! @} */ diff --git a/liboffloadmic/include/coi/common/COIMacros_common.h b/liboffloadmic/include/coi/common/COIMacros_common.h deleted file mode 100644 index d6811c1..0000000 --- a/liboffloadmic/include/coi/common/COIMacros_common.h +++ /dev/null @@ -1,229 +0,0 @@ -/* - * Copyright 2010-2016 Intel Corporation. - * - * This library is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, version 2.1. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301 USA. - * - * Disclaimer: The codes contained in these modules may be specific - * to the Intel Software Development Platform codenamed Knights Ferry, - * and the Intel product codenamed Knights Corner, and are not backward - * compatible with other Intel products. Additionally, Intel will NOT - * support the codes or instruction set in future products. - * - * Intel offers no warranty of any kind regarding the code. This code is - * licensed on an "AS IS" basis and Intel is not obligated to provide - * any support, assistance, installation, training, or other services - * of any kind. Intel is also not obligated to provide any updates, - * enhancements or extensions. Intel specifically disclaims any warranty - * of merchantability, non-infringement, fitness for any particular - * purpose, and any other warranty. - * - * Further, Intel disclaims all liability of any kind, including but - * not limited to liability for infringement of any proprietary rights, - * relating to the use of the code, even if Intel is notified of the - * possibility of such liability. Except as expressly stated in an Intel - * license agreement provided with this code and agreed upon with Intel, - * no license, express or implied, by estoppel or otherwise, to any - * intellectual property rights is granted herein. - */ - -#ifndef _COIMACROS_COMMON_H -#define _COIMACROS_COMMON_H - -#include <string.h> -#include "../source/COIPipeline_source.h" -#include "../common/COITypes_common.h" - -/// @file common/COIMacros_common.h -/// Commonly used macros - -// Note that UNUSUED_ATTR means that it is "possibly" unused, not "definitely". -// This should compile out in release mode if indeed it is unused. - #define UNUSED_ATTR __attribute__((unused)) - #include <sched.h> -#ifndef UNREFERENCED_CONST_PARAM -#define UNREFERENCED_CONST_PARAM(P) { void* x UNUSED_ATTR = \ - (void*)(uint64_t)P; \ -} -#endif - -// This seems to work on everything. -#ifndef UNREFERENCED_PARAM - #define UNREFERENCED_PARAM(P) (P = P) -#endif - -#ifndef SYMBOL_VERSION - - /* Linux support: */ - - #define SYMBOL_VERSION( SYMBOL , VERSION ) SYMBOL ## VERSION - -#endif - -/* The following are static inline definitions of functions used for manipulating - COI_CPU_MASK info (The COI_CPU_MASK type is declared as an array of 16 uint64_t's - in COITypes_common.h "typedef uint64_t COI_CPU_MASK[16]"). - - These static inlined functions are intended on being roughly the same as the Linux - CPU_* macros defined in sched.h - with the important difference being a different - fundamental type difference: cpu_set_t versus COI_CPU_MASK. - - The motivation for writing this code was to ease portability on the host side of COI - applications to both Windows and Linux. -*/ - -/* Roughly equivalent to CPU_ISSET(). */ -static inline uint64_t COI_CPU_MASK_ISSET(int bitNumber, const COI_CPU_MASK cpu_mask) -{ - if ((size_t)bitNumber < sizeof(COI_CPU_MASK) * 8) - return ((cpu_mask)[bitNumber / 64] & (((uint64_t)1) << (bitNumber % 64))); - return 0; -} - -/* Roughly equivalent to CPU_SET(). */ -static inline void COI_CPU_MASK_SET(int bitNumber, COI_CPU_MASK cpu_mask) -{ - if ((size_t)bitNumber < sizeof(COI_CPU_MASK) * 8) - ((cpu_mask)[bitNumber / 64] |= (((uint64_t)1) << (bitNumber % 64))); -} - -/* Roughly equivalent to CPU_ZERO(). */ -static inline void COI_CPU_MASK_ZERO(COI_CPU_MASK cpu_mask) -{ - memset(cpu_mask, 0, sizeof(COI_CPU_MASK)); -} - -/* Roughly equivalent to CPU_AND(). */ -static inline void COI_CPU_MASK_AND(COI_CPU_MASK dst, const COI_CPU_MASK src1, const COI_CPU_MASK src2) -{ - const unsigned int loopIterations = sizeof(COI_CPU_MASK) / sizeof(dst[0]); - unsigned int i = 0; - - for (; i < loopIterations; ++i) - dst[i] = src1[i] & src2[i]; -} - -/* Roughly equivalent to CPU_XOR(). */ -static inline void COI_CPU_MASK_XOR(COI_CPU_MASK dst, const COI_CPU_MASK src1, const COI_CPU_MASK src2) -{ - const unsigned int loopIterations = sizeof(COI_CPU_MASK) / sizeof(dst[0]); - unsigned int i = 0; - - for (; i < loopIterations; ++i) - dst[i] = src1[i] ^ src2[i]; -} - -/* Roughly equivalent to CPU_OR(). */ -static inline void COI_CPU_MASK_OR(COI_CPU_MASK dst, const COI_CPU_MASK src1, const COI_CPU_MASK src2) -{ - const unsigned int loopIterations = sizeof(COI_CPU_MASK) / sizeof(dst[0]); - unsigned int i = 0; - - for (; i < loopIterations; ++i) - dst[i] = src1[i] | src2[i]; -} - -/* Utility function for COI_CPU_MASK_COUNT() below. */ -static inline int __COI_CountBits(uint64_t n) -{ - int cnt = 0; - - for (; n; cnt++) - n &= (n - 1); - return cnt; -} - -/* Roughly equivalent to CPU_COUNT(). */ -static inline int COI_CPU_MASK_COUNT(const COI_CPU_MASK cpu_mask) -{ - int cnt = 0; - const unsigned int loopIterations = sizeof(COI_CPU_MASK) / sizeof(cpu_mask[0]); - unsigned int i = 0; - - for (; i < loopIterations; ++i) - { - cnt += __COI_CountBits(cpu_mask[i]); - } - return cnt; -} - -/* Roughly equivalent to CPU_EQUAL(). */ -static inline int COI_CPU_MASK_EQUAL(const COI_CPU_MASK cpu_mask1, const COI_CPU_MASK cpu_mask2) -{ - const unsigned int loopIterations = sizeof(COI_CPU_MASK) / sizeof(cpu_mask1[0]); - unsigned int i = 0; - - for (; i < loopIterations; ++i) - { - if (cpu_mask1[i] != cpu_mask2[i]) - return 0; - } - return 1; -} - - -/* Utility function to translate from cpu_set * to COI_CPU_MASK. */ -static inline void COI_CPU_MASK_XLATE(COI_CPU_MASK dest, const cpu_set_t *src) -{ - unsigned int i; - unsigned int j; - COI_CPU_MASK_ZERO(dest); - #if 0 - /* Slightly slower version than the following #else/#endif block. Left here only to - document the intent of the code. */ - for (i = 0; i < sizeof(cpu_set_t) * 8; ++i) - if (CPU_ISSET(i, src)) - COI_CPU_MASK_SET(i, dest); - #else - for (i = 0; i < sizeof(COI_CPU_MASK) / sizeof(dest[0]); ++i) - { - for (j = 0; j < 64; ++j) - { - if (CPU_ISSET(i * 64 + j, src)) - dest[i] |= ((uint64_t)1) << j; - } - } - #endif -} - -/* Utility function to translate from COI_CPU_MASK to cpu_set *. */ -static inline void COI_CPU_MASK_XLATE_EX(cpu_set_t *dest, const COI_CPU_MASK src) -{ - unsigned int i; - unsigned int j; - CPU_ZERO(dest); - #if 0 - /* Slightly slower version than the following #else/#endif block. Left here only to - document the intent of the code. */ - for (i = 0; i < sizeof(COI_CPU_MASK) * 8; ++i) - if (COI_CPU_MASK_ISSET(i, src)) - CPU_SET(i, dest); - #else - for (i = 0; i < sizeof(COI_CPU_MASK) / sizeof(src[0]); ++i) - { - const uint64_t cpu_mask = src[i]; - - for (j = 0; j < 64; ++j) - { - const uint64_t bit = ((uint64_t)1) << j; - - if (bit & cpu_mask) - CPU_SET(i * 64 + j, dest); - } - } - #endif -} - - -#endif /* _COIMACROS_COMMON_H */ diff --git a/liboffloadmic/include/coi/common/COIPerf_common.h b/liboffloadmic/include/coi/common/COIPerf_common.h deleted file mode 100644 index 0b17e13..0000000 --- a/liboffloadmic/include/coi/common/COIPerf_common.h +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright 2010-2016 Intel Corporation. - * - * This library is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, version 2.1. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301 USA. - * - * Disclaimer: The codes contained in these modules may be specific - * to the Intel Software Development Platform codenamed Knights Ferry, - * and the Intel product codenamed Knights Corner, and are not backward - * compatible with other Intel products. Additionally, Intel will NOT - * support the codes or instruction set in future products. - * - * Intel offers no warranty of any kind regarding the code. This code is - * licensed on an "AS IS" basis and Intel is not obligated to provide - * any support, assistance, installation, training, or other services - * of any kind. Intel is also not obligated to provide any updates, - * enhancements or extensions. Intel specifically disclaims any warranty - * of merchantability, non-infringement, fitness for any particular - * purpose, and any other warranty. - * - * Further, Intel disclaims all liability of any kind, including but - * not limited to liability for infringement of any proprietary rights, - * relating to the use of the code, even if Intel is notified of the - * possibility of such liability. Except as expressly stated in an Intel - * license agreement provided with this code and agreed upon with Intel, - * no license, express or implied, by estoppel or otherwise, to any - * intellectual property rights is granted herein. - */ - -#ifndef _COIPERF_COMMON_H -#define _COIPERF_COMMON_H - -/** @ingroup COIPerf - * @addtogroup COIPerfCommon -@{ - -* @file common/COIPerf_common.h -* Performance Analysis API */ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -#include "../common/COITypes_common.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#endif // DOXYGEN_SHOULD_SKIP_THIS - -/////////////////////////////////////////////////////////////////////////////// -/// -/// Returns a performance counter value -/// -/// This function returns a performance counter value that increments -/// at a constant rate for all time and is coherent across all cores. -/// -/// @return Current performance counter value or 0 if no performance counter -///// is available -/// -/// -COIACCESSAPI -uint64_t COIPerfGetCycleCounter(void); - -/////////////////////////////////////////////////////////////////////////////// -/// -/// Returns the calculated system frequency in hertz. -/// -/// @return Current system frequency in hertz. -/// -COIACCESSAPI -uint64_t COIPerfGetCycleFrequency(void); - -#ifdef __cplusplus -} /* extern "C" */ -#endif -/*! @} */ - -#endif /* _COIPERF_COMMON_H */ diff --git a/liboffloadmic/include/coi/common/COIResult_common.h b/liboffloadmic/include/coi/common/COIResult_common.h deleted file mode 100644 index d40c0b0..0000000 --- a/liboffloadmic/include/coi/common/COIResult_common.h +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Copyright 2010-2016 Intel Corporation. - * - * This library is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, version 2.1. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301 USA. - * - * Disclaimer: The codes contained in these modules may be specific - * to the Intel Software Development Platform codenamed Knights Ferry, - * and the Intel product codenamed Knights Corner, and are not backward - * compatible with other Intel products. Additionally, Intel will NOT - * support the codes or instruction set in future products. - * - * Intel offers no warranty of any kind regarding the code. This code is - * licensed on an "AS IS" basis and Intel is not obligated to provide - * any support, assistance, installation, training, or other services - * of any kind. Intel is also not obligated to provide any updates, - * enhancements or extensions. Intel specifically disclaims any warranty - * of merchantability, non-infringement, fitness for any particular - * purpose, and any other warranty. - * - * Further, Intel disclaims all liability of any kind, including but - * not limited to liability for infringement of any proprietary rights, - * relating to the use of the code, even if Intel is notified of the - * possibility of such liability. Except as expressly stated in an Intel - * license agreement provided with this code and agreed upon with Intel, - * no license, express or implied, by estoppel or otherwise, to any - * intellectual property rights is granted herein. - */ - -#ifndef _COIRESULT_COMMON_H -#define _COIRESULT_COMMON_H - -/** @ingroup COIResult - * @addtogroup COIResultCommon -@{ - -* @file common/COIResult_common.h -* Result codes and definitions. */ - -#include "../common/COITypes_common.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum COIRESULT -{ - COI_SUCCESS = 0, ///< The function succeeded without error. - COI_ERROR, ///< Unspecified error. - COI_NOT_INITIALIZED, ///< The function was called before the - ///< system was initialized. - COI_ALREADY_INITIALIZED, ///< The function was called after the - ///< system was initialized. - COI_ALREADY_EXISTS, ///< Cannot complete the request due to - ///< the existence of a similar object. - COI_DOES_NOT_EXIST, ///< The specified object was not found. - COI_INVALID_POINTER, ///< One of the provided addresses was not - ///< valid. - COI_OUT_OF_RANGE, ///< One of the arguments contains a value - ///< that is invalid. - COI_NOT_SUPPORTED, ///< This function is not currently - ///< supported as used. - COI_TIME_OUT_REACHED, ///< The specified time out caused the - ///< function to abort. - COI_MEMORY_OVERLAP, ///< The source and destination range - ///< specified overlaps for the same - ///< buffer. - COI_ARGUMENT_MISMATCH, ///< The specified arguments are not - ///< compatible. - COI_SIZE_MISMATCH, ///< The specified size does not match the - ///< expected size. - COI_OUT_OF_MEMORY, ///< The function was unable to allocate - ///< the required memory. - COI_INVALID_HANDLE, ///< One of the provided handles was not - ///< valid. - COI_RETRY, ///< This function currently can't - ///< complete, but might be able to later. - COI_RESOURCE_EXHAUSTED, ///< The resource was not large enough. - COI_ALREADY_LOCKED, ///< The object was expected to be - ///< unlocked, but was locked. - COI_NOT_LOCKED, ///< The object was expected to be locked, - ///< but was unlocked. - COI_MISSING_DEPENDENCY, ///< One or more dependent components - ///< could not be found. - COI_UNDEFINED_SYMBOL, ///< One or more symbols the component - ///< required was not defined in any - ///< library. - COI_PENDING, ///< Operation is not finished - COI_BINARY_AND_HARDWARE_MISMATCH, ///< A specified binary will not run on - ///< the specified hardware. - COI_PROCESS_DIED, - COI_INVALID_FILE, ///< The file is invalid for its intended - ///< usage in the function. - COI_EVENT_CANCELED, ///< Event wait on a user event that - ///< was unregistered or is being - ///< unregistered returns - ///< COI_EVENT_CANCELED. - COI_VERSION_MISMATCH, ///< The version of Intel(R) Coprocessor - ///< Offload Infrastructure on the host - ///< is not compatible with the version - ///< on the device. - COI_BAD_PORT, ///< The port that the host is set to - ///< connect to is invalid. - COI_AUTHENTICATION_FAILURE, ///< The daemon was unable to authenticate - ///< the user that requested an engine. - ///< Only reported if daemon is set up for - ///< authorization. Is also reported in - ///< Windows if host cannot find user. - COI_COMM_NOT_INITIALIZED, ///< The function was called before the - ///< comm was initialized. - COI_INCORRECT_FORMAT, ///< Format of data is incorrect - COI_NUM_RESULTS ///< Reserved, do not use. -} COIRESULT; - -////////////////////////////////////////////////////////////////////////////// -/// -/// Returns the string version of the passed in COIRESULT. Thus if -/// COI_RETRY is passed in, this function returns the string "COI_RETRY". If -/// the error code passed ins is not valid then "COI_ERROR" will be returned. -/// -/// @param in_ResultCode -/// [in] COIRESULT code to return the string version of. -/// -/// @return String version of the passed in COIRESULT code. -/// -COIACCESSAPI -const char * -COIResultGetName( - COIRESULT in_ResultCode); - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* _COIRESULT_COMMON_H */ - -/*! @} */ diff --git a/liboffloadmic/include/coi/common/COISysInfo_common.h b/liboffloadmic/include/coi/common/COISysInfo_common.h deleted file mode 100644 index cc37647..0000000 --- a/liboffloadmic/include/coi/common/COISysInfo_common.h +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright 2010-2016 Intel Corporation. - * - * This library is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, version 2.1. - * - * This library 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 - * Lesser General Public License for more details. - * - * Disclaimer: The codes contained in these modules may be specific - * to the Intel Software Development Platform codenamed Knights Ferry, - * and the Intel product codenamed Knights Corner, and are not backward - * compatible with other Intel products. Additionally, Intel will NOT - * support the codes or instruction set in future products. - * - * Intel offers no warranty of any kind regarding the code. This code is - * licensed on an "AS IS" basis and Intel is not obligated to provide - * any support, assistance, installation, training, or other services - * of any kind. Intel is also not obligated to provide any updates, - * enhancements or extensions. Intel specifically disclaims any warranty - * of merchantability, non-infringement, fitness for any particular - * purpose, and any other warranty. - * - * Further, Intel disclaims all liability of any kind, including but - * not limited to liability for infringement of any proprietary rights, - * relating to the use of the code, even if Intel is notified of the - * possibility of such liability. Except as expressly stated in an Intel - * license agreement provided with this code and agreed upon with Intel, - * no license, express or implied, by estoppel or otherwise, to any - * intellectual property rights is granted herein. - */ - -#ifndef _COISYSINFO_COMMON_H -#define _COISYSINFO_COMMON_H - -/** @ingroup COISysInfo - * @addtogroup COISysInfoCommon -@{ -* @file common/COISysInfo_common.h -* This interface allows developers to query the platform for system level -* information. */ - -#ifndef DOXYGEN_SHOULD_SKIP_THIS -#include "../common/COITypes_common.h" -#include <assert.h> -#include <string.h> - -#ifdef __cplusplus -extern "C" { -#endif -#endif // DOXYGEN_SHOULD_SKIP_THIS - -#define INITIAL_APIC_ID_BITS 0xFF000000 // EBX[31:24] unique APIC ID - -/////////////////////////////////////////////////////////////////////////////// -/// \fn uint32_t COISysGetAPICID(void) -/// @return The Advanced Programmable Interrupt Controller (APIC) ID of -/// the hardware thread on which the caller is running. -/// -/// @warning APIC IDs are unique to each hardware thread within a processor, -/// but may not be sequential. -COIACCESSAPI -uint32_t COISysGetAPICID(void); - -/////////////////////////////////////////////////////////////////////////////// -/// -/// @return The number of cores exposed by the processor on which the caller is -/// running. Returns 0 if there is an error loading the processor info. -COIACCESSAPI -uint32_t COISysGetCoreCount(void); - -/////////////////////////////////////////////////////////////////////////////// -/// -/// @return The number of hardware threads exposed by the processor on which -/// the caller is running. Returns 0 if there is an error loading processor -/// info. -COIACCESSAPI -uint32_t COISysGetHardwareThreadCount(void); - -/////////////////////////////////////////////////////////////////////////////// -/// -/// @return The index of the hardware thread on which the caller is running. -/// -/// The indexes of neighboring hardware threads will differ by a value of one -/// and are within the range zero through COISysGetHardwareThreadCount()-1. -/// Returns ((uint32_t)-1) if there was an error loading processor info. -COIACCESSAPI -uint32_t COISysGetHardwareThreadIndex(void); - -/////////////////////////////////////////////////////////////////////////////// -/// -/// @return The index of the core on which the caller is running. -/// -/// The indexes of neighboring cores will differ by a value of one and are -/// within the range zero through COISysGetCoreCount()-1. Returns ((uint32_t)-1) -/// if there was an error loading processor info. -COIACCESSAPI -uint32_t COISysGetCoreIndex(void); - -/////////////////////////////////////////////////////////////////////////////// -/// -/// @return The number of level 2 caches within the processor on which the -/// caller is running. Returns ((uint32_t)-1) if there was an error loading -/// processor info. -COIACCESSAPI -uint32_t COISysGetL2CacheCount(void); - -/////////////////////////////////////////////////////////////////////////////// -/// -/// @return The index of the level 2 cache on which the caller is running. -/// Returns ((uint32_t)-1) if there was an error loading processor info. -/// -/// The indexes of neighboring cores will differ by a value of one and are -/// within the range zero through COISysGetL2CacheCount()-1. -COIACCESSAPI -uint32_t COISysGetL2CacheIndex(void); - -#ifdef __cplusplus -} /* extern "C" */ -#endif -/*! @} */ - -#endif /* _COISYSINFO_COMMON_H */ diff --git a/liboffloadmic/include/coi/common/COITypes_common.h b/liboffloadmic/include/coi/common/COITypes_common.h deleted file mode 100644 index 6018b7d..0000000 --- a/liboffloadmic/include/coi/common/COITypes_common.h +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright 2010-2016 Intel Corporation. - * - * This library is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, version 2.1. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301 USA. - * - * Disclaimer: The codes contained in these modules may be specific - * to the Intel Software Development Platform codenamed Knights Ferry, - * and the Intel product codenamed Knights Corner, and are not backward - * compatible with other Intel products. Additionally, Intel will NOT - * support the codes or instruction set in future products. - * - * Intel offers no warranty of any kind regarding the code. This code is - * licensed on an "AS IS" basis and Intel is not obligated to provide - * any support, assistance, installation, training, or other services - * of any kind. Intel is also not obligated to provide any updates, - * enhancements or extensions. Intel specifically disclaims any warranty - * of merchantability, non-infringement, fitness for any particular - * purpose, and any other warranty. - * - * Further, Intel disclaims all liability of any kind, including but - * not limited to liability for infringement of any proprietary rights, - * relating to the use of the code, even if Intel is notified of the - * possibility of such liability. Except as expressly stated in an Intel - * license agreement provided with this code and agreed upon with Intel, - * no license, express or implied, by estoppel or otherwise, to any - * intellectual property rights is granted herein. - */ - -#ifndef _COITYPES_COMMON_H -#define _COITYPES_COMMON_H - -/** @ingroup COITypes - * @addtogroup COITypesSource -@{ - -* @file common/COITypes_common.h -*/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - #include <stdint.h> - #include <wchar.h> - #define COIACCESSAPI /* nothing */ - #define COIACCESSAPI2 /* nothing */ -#endif /* DOXYGEN_SHOULD_SKIP_THIS */ - - -#ifdef __cplusplus -extern "C" { -#endif - - -struct coievent -{ - uint64_t opaque[2]; -}; - -typedef struct coiprocess *COIPROCESS; -typedef struct coipipeline *COIPIPELINE; -typedef struct coifunction *COIFUNCTION; -typedef struct coiengine *COIENGINE; -typedef struct coievent COIEVENT; -typedef struct coibuffer *COIBUFFER; -typedef struct coilibrary *COILIBRARY; -typedef struct coimapinst *COIMAPINSTANCE; - -typedef uint64_t COI_CPU_MASK[16]; - -/** - * On Windows, coi_wchar_t is a uint32_t. On Windows, wchar_t is 16 bits wide, and on Linux it is 32 bits wide, so uint32_t is used for portability. - */ -typedef wchar_t coi_wchar_t; - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* _COITYPES_COMMON_H */ diff --git a/liboffloadmic/include/coi/sink/COIBuffer_sink.h b/liboffloadmic/include/coi/sink/COIBuffer_sink.h deleted file mode 100644 index d36d586..0000000 --- a/liboffloadmic/include/coi/sink/COIBuffer_sink.h +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright 2010-2016 Intel Corporation. - * - * This library is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, version 2.1. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301 USA. - * - * Disclaimer: The codes contained in these modules may be specific - * to the Intel Software Development Platform codenamed Knights Ferry, - * and the Intel product codenamed Knights Corner, and are not backward - * compatible with other Intel products. Additionally, Intel will NOT - * support the codes or instruction set in future products. - * - * Intel offers no warranty of any kind regarding the code. This code is - * licensed on an "AS IS" basis and Intel is not obligated to provide - * any support, assistance, installation, training, or other services - * of any kind. Intel is also not obligated to provide any updates, - * enhancements or extensions. Intel specifically disclaims any warranty - * of merchantability, non-infringement, fitness for any particular - * purpose, and any other warranty. - * - * Further, Intel disclaims all liability of any kind, including but - * not limited to liability for infringement of any proprietary rights, - * relating to the use of the code, even if Intel is notified of the - * possibility of such liability. Except as expressly stated in an Intel - * license agreement provided with this code and agreed upon with Intel, - * no license, express or implied, by estoppel or otherwise, to any - * intellectual property rights is granted herein. - */ - -#ifndef _COIBUFFER_SINK_H -#define _COIBUFFER_SINK_H - -/** @ingroup COIBuffer - * @addtogroup COIBufferSink -@{ - -* @file sink\COIBuffer_sink.h -*/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - #include "../common/COITypes_common.h" - #include "../common/COIResult_common.h" -#endif // DOXYGEN_SHOULD_SKIP_THIS - -#ifdef __cplusplus -extern "C" { -#endif - -////////////////////////////////////////////////////////////////////////////// -/// -/// Adds a reference to the memory of a buffer. The memory of the buffer -/// will remain on the device until both a corresponding COIBufferReleaseRef() -/// call is made and the run function that delivered the buffer returns. -/// -/// Running this API in a thread spawned within the run function is not -/// supported and will cause unpredictable results and may cause data corruption. -/// -/// @warning 1.It is possible for enqueued run functions to be unable to -/// execute due to all card memory being occupied by AddRef'd -/// buffers. As such, it is important that whenever a buffer is -/// AddRef'd that there be no dependencies on future run functions -/// for progress to be made towards releasing the buffer. -/// 2.It is important that AddRef is called within the scope of -/// run function that carries the buffer to be AddRef'd. -/// -/// @param in_pBuffer -/// [in] Pointer to the start of a buffer being AddRef'd, that was -/// passed in at the start of the run function. -/// -/// @return COI_SUCCESS if the buffer ref count was successfully incremented. -/// -/// @return COI_INVALID_POINTER if the buffer pointer is NULL. -/// -/// @return COI_INVALID_HANDLE if the buffer pointer is invalid. -/// -COIRESULT -COIBufferAddRef( - void *in_pBuffer); - - -////////////////////////////////////////////////////////////////////////////// -/// -/// Removes a reference to the memory of a buffer. The memory of the buffer -/// will be eligible for being freed on the device when the following -/// conditions are met: the run function that delivered the buffer -/// returns, and the number of calls to COIBufferReleaseRef() matches the -/// number of calls to COIBufferAddRef(). -// -/// Running this API in a thread spawned within the run function is not -/// supported and will cause unpredictable results and may cause data corruption. -/// -/// @warning When a buffer is AddRef'd it is assumed that it is in use and all -/// other operations on that buffer waits for ReleaseRef() to happen. -/// So you cannot pass the AddRef'd buffer's handle to RunFunction -/// that calls ReleaseRef(). This is a circular dependency and will -/// cause a deadlock. Buffer's pointer (buffer's sink side -/// address/pointer which is different than source side BUFFER handle) -/// needs to be stored somewhere to retrieve it later to use in -/// ReleaseRef. -/// -/// @param in_pBuffer -/// [in] Pointer to the start of a buffer previously AddRef'd, that -/// was passed in at the start of the run function. -/// -/// @return COI_SUCCESS if the buffer refcount was successfully decremented. -/// -/// @return COI_INVALID_POINTER if the buffer pointer was invalid. -/// -/// @return COI_INVALID_HANDLE if the buffer did not have COIBufferAddRef() -/// previously called on it. -/// -COIRESULT -COIBufferReleaseRef( - void *in_pBuffer); - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* _COIBUFFER_SINK_H */ - -/*! @} */ diff --git a/liboffloadmic/include/coi/sink/COIPipeline_sink.h b/liboffloadmic/include/coi/sink/COIPipeline_sink.h deleted file mode 100644 index 9cb1087..0000000 --- a/liboffloadmic/include/coi/sink/COIPipeline_sink.h +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright 2010-2016 Intel Corporation. - * - * This library is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, version 2.1. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301 USA. - * - * Disclaimer: The codes contained in these modules may be specific - * to the Intel Software Development Platform codenamed Knights Ferry, - * and the Intel product codenamed Knights Corner, and are not backward - * compatible with other Intel products. Additionally, Intel will NOT - * support the codes or instruction set in future products. - * - * Intel offers no warranty of any kind regarding the code. This code is - * licensed on an "AS IS" basis and Intel is not obligated to provide - * any support, assistance, installation, training, or other services - * of any kind. Intel is also not obligated to provide any updates, - * enhancements or extensions. Intel specifically disclaims any warranty - * of merchantability, non-infringement, fitness for any particular - * purpose, and any other warranty. - * - * Further, Intel disclaims all liability of any kind, including but - * not limited to liability for infringement of any proprietary rights, - * relating to the use of the code, even if Intel is notified of the - * possibility of such liability. Except as expressly stated in an Intel - * license agreement provided with this code and agreed upon with Intel, - * no license, express or implied, by estoppel or otherwise, to any - * intellectual property rights is granted herein. - */ - -#ifndef _COIPIPELINE_SINK_H -#define _COIPIPELINE_SINK_H - -/** @ingroup COIPipeline - * @addtogroup COIPipelineSink -@{ -* @file sink/COIPipeline_sink.h -*/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -#include "../common/COITypes_common.h" -#include "../common/COIResult_common.h" - -#ifdef __FreeBSD__ - #define COINATIVELIBEXPORT_VISIBILITY "extern" -#else - #define COINATIVELIBEXPORT_VISIBILITY "default" -#endif - -#ifdef __cplusplus -#define COINATIVELIBEXPORT \ - extern "C" __attribute__ ((visibility(COINATIVELIBEXPORT_VISIBILITY))) -#else -#define COINATIVELIBEXPORT \ - __attribute__ ((visibility(COINATIVELIBEXPORT_VISIBILITY))) -#endif - -#ifdef __cplusplus -extern "C" { -#endif -#endif // DOXYGEN_SHOULD_SKIP_THIS - -////////////////////////////////////////////////////////////////////////////// -/// -/// This is the prototype that run functions should follow. -/// -/// @param in_BufferCount -/// The number of buffers passed to the run function. -/// -/// @param in_ppBufferPointers -/// An array that is in_BufferCount in length that contains the -/// sink side virtual addresses for each buffer passed in to -/// the run function. -/// -/// @param in_pBufferLengths -/// An array that is in_BufferCount in length of uint32_t integers -/// describing the length of each passed in buffer in bytes. -/// -/// @param in_pMiscData -/// Pointer to the MiscData passed in when the run function -/// was enqueued on the source. -/// -/// @param in_MiscDataLen -/// Length in bytes of the MiscData passed in when the run function -/// was enqueued on the source. -/// -/// @param in_pReturnValue -/// Pointer to the location where the return value from this run -/// function will be stored. -/// -/// @param in_ReturnValueLength -/// Length in bytes of the user-allocated ReturnValue pointer. -/// -/// @return A uint64_t that can be retrieved in the out_UserData parameter -/// from the COIPipelineWaitForEvent function. -/// -typedef void -(*RunFunctionPtr_t)( - uint32_t in_BufferCount, - void **in_ppBufferPointers, - uint64_t *in_pBufferLengths, - void *in_pMiscData, - uint16_t in_MiscDataLength, - void *in_pReturnValue, - uint16_t in_ReturnValueLength); - -/////////////////////////////////////////////////////////////////////////////// -/// -/// Start processing pipelines on the Sink. This should be done after any -/// required initialization in the Sink's application has finished. No -/// run functions will actually be executed (although they may be queued) -/// until this function is called. -/// -/// -/// @return COI_SUCCESS if the pipelines were successfully started. -/// -COIRESULT -COIPipelineStartExecutingRunFunctions(); - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* _COIPIPELINE_SINK_H */ - -/*! @} */ diff --git a/liboffloadmic/include/coi/sink/COIProcess_sink.h b/liboffloadmic/include/coi/sink/COIProcess_sink.h deleted file mode 100644 index 9438925..0000000 --- a/liboffloadmic/include/coi/sink/COIProcess_sink.h +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Copyright 2010-2016 Intel Corporation. - * - * This library is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, version 2.1. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301 USA. - * - * Disclaimer: The codes contained in these modules may be specific - * to the Intel Software Development Platform codenamed Knights Ferry, - * and the Intel product codenamed Knights Corner, and are not backward - * compatible with other Intel products. Additionally, Intel will NOT - * support the codes or instruction set in future products. - * - * Intel offers no warranty of any kind regarding the code. This code is - * licensed on an "AS IS" basis and Intel is not obligated to provide - * any support, assistance, installation, training, or other services - * of any kind. Intel is also not obligated to provide any updates, - * enhancements or extensions. Intel specifically disclaims any warranty - * of merchantability, non-infringement, fitness for any particular - * purpose, and any other warranty. - * - * Further, Intel disclaims all liability of any kind, including but - * not limited to liability for infringement of any proprietary rights, - * relating to the use of the code, even if Intel is notified of the - * possibility of such liability. Except as expressly stated in an Intel - * license agreement provided with this code and agreed upon with Intel, - * no license, express or implied, by estoppel or otherwise, to any - * intellectual property rights is granted herein. - */ - -#ifndef _COIPROCESS_SINK_H -#define _COIPROCESS_SINK_H - -/** @ingroup COIProcess - * @addtogroup COIProcessSink -@{ -* @file sink/COIProcess_sink.h -*/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -#include "../common/COITypes_common.h" -#include "../common/COIResult_common.h" - -#ifdef __cplusplus -extern "C" { -#endif -#endif // DOXYGEN_SHOULD_SKIP_THIS - -////////////////////////////////////////////////////////////////////////////// -/// -/// This call will block while waiting for the source to send a process destroy -/// message. This provides the sink side application with an event to keep the -/// main() function from exiting until it is directed to by the source. When -/// the shutdown message is received this function will stop any future run -/// functions from executing but will wait for any current run functions to -/// complete. All Intel® Coprocessor Offload Infrastructure (Intel® COI) -/// resources will be cleaned up and no additional Intel® Coprocessor Offload -/// Infrastructure (Intel® COI) APIs should be called after this function -/// returns. This function does not invoke exit() so the application -/// can perform any of its own cleanup once this call returns. -/// -/// @return COI_SUCCESS once the process receives the shutdown message. -/// -COIRESULT -COIProcessWaitForShutdown(); - -////////////////////////////////////////////////////////////////////////////// -/// -/// This call will block until all stdout and stderr output has been proxied -/// to and written by the source. This call guarantees that any output in a -/// run function is transmitted to the source before the run function signals -/// its completion event back to the source. -/// -/// Note that having an additional thread printing forever while another -/// calls COIProxyFlush may lead to a hang because the process will be forced -/// to wait until all that output can be flushed to the source before returning -/// from this call. -/// -/// @return COI_SUCCESS once the proxy output has been flushed to and written -/// written by the host. Note that Intel® Coprocessor Offload -/// Infrastructure (Intel® COI) on the source writes to stdout and -/// stderr, but does not flush this output. -/// @return COI_SUCCESS if the process was created without enabling -/// proxy IO this function. -/// -COIRESULT -COIProcessProxyFlush(); - - -////////////////////////////////////////////////////////////////////////////// -/// -/// Loads a shared library from host filesystem into the current sink -/// process, akin to using dlopen() on a local process in Linux or -/// LoadLibrary() in Windows. -/// -/// @param in_pFileName -/// [in] The name of the shared library file on the source's file -/// system that is being loaded. If the file name is not an absolute -/// path, the file is searched for in the same manner as dependencies. -/// -/// @param in_pLibraryName -/// [in] Name for the shared library. This optional parameter can -/// be specified in case the dynamic library doesn't have an -/// SO_NAME field. If specified, it will take precedence over -/// the SO_NAME if it exists. If it is not specified then -/// the library must have a valid SO_NAME field. -/// -///@param in_LibrarySearchPath -/// [in] a path to locate dynamic libraries dependencies for the -/// library being loaded. If not NULL, this path will override the -/// environment variable SINK_LD_LIBRARY_PATH. If NULL it will use -/// SINK_LD_LIBRARY_PATH to locate dependencies. -/// -/// @param in_Flags -/// [in] Bitmask of the flags that will be passed in as the dlopen() -/// "flag" parameter on the sink. -/// -/// @param out_pLibrary -/// [out] If COI_SUCCESS or COI_ALREADY_EXISTS is returned, the handle -/// that uniquely identifies the loaded library. -/// -/// @return COI_SUCCESS if the library was successfully loaded. -/// -/// @return COI_INVALID_POINTER if in_pFileName is NULL. -/// -/// @return COI_DOES_NOT_EXIST if in_pFileName cannot be found. -/// -/// @return COI_INVALID_FILE if the file is not a valid shared library. -/// -/// @return COI_MISSING_DEPENDENCY if a dependent library is missing from -/// either SINK_LD_LIBRARY_PATH or the in_LibrarySearchPath parameter. -/// -/// @return COI_ARGUMENT_MISMATCH if the shared library is missing an SONAME -/// and in_pLibraryName is NULL. -/// -/// @return COI_UNDEFINED_SYMBOL if we are unable to load the library due to -/// an undefined symbol. -/// -/// @return COI_ALREADY_EXISTS if there is an existing COILIBRARY handle -/// that identifies this library, and this COILIBRARY hasn't been -/// unloaded yet. -/// -/// @return COI_BINARY_AND_HARDWARE_MISMATCH if the target machine of the -/// binary or any of its recursive dependencies does not match the -/// engine associated with Process. -/// -/// @return COI_NOT_INITIALIZED if setup of remote process on host is not -/// completed yet. -/// -COIRESULT -COIProcessLoadSinkLibraryFromFile( - const char *in_pFileName, - const char *in_pLibraryName, - const char *in_LibrarySearchPath, - uint32_t in_Flags, - COILIBRARY *out_pLibrary); - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* _COIPROCESS_SINK_H */ - -/*! @} */ diff --git a/liboffloadmic/include/coi/source/COIBuffer_source.h b/liboffloadmic/include/coi/source/COIBuffer_source.h deleted file mode 100644 index b90d505..0000000 --- a/liboffloadmic/include/coi/source/COIBuffer_source.h +++ /dev/null @@ -1,1806 +0,0 @@ -/* - * Copyright 2010-2016 Intel Corporation. - * - * This library is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, version 2.1. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301 USA. - * - * Disclaimer: The codes contained in these modules may be specific - * to the Intel Software Development Platform codenamed Knights Ferry, - * and the Intel product codenamed Knights Corner, and are not backward - * compatible with other Intel products. Additionally, Intel will NOT - * support the codes or instruction set in future products. - * - * Intel offers no warranty of any kind regarding the code. This code is - * licensed on an "AS IS" basis and Intel is not obligated to provide - * any support, assistance, installation, training, or other services - * of any kind. Intel is also not obligated to provide any updates, - * enhancements or extensions. Intel specifically disclaims any warranty - * of merchantability, non-infringement, fitness for any particular - * purpose, and any other warranty. - * - * Further, Intel disclaims all liability of any kind, including but - * not limited to liability for infringement of any proprietary rights, - * relating to the use of the code, even if Intel is notified of the - * possibility of such liability. Except as expressly stated in an Intel - * license agreement provided with this code and agreed upon with Intel, - * no license, express or implied, by estoppel or otherwise, to any - * intellectual property rights is granted herein. - */ - -#ifndef _COIBUFFER_SOURCE_H -#define _COIBUFFER_SOURCE_H - -/** @ingroup COIBuffer - * @addtogroup COIBufferSource -@{ - -* @file source\COIBuffer_source.h -*/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - #include "../common/COITypes_common.h" - #include "../common/COIResult_common.h" -#endif // DOXYGEN_SHOULD_SKIP_THIS - -#ifdef __cplusplus -extern "C" { -#endif - - -/////////////////////////////////////////////////////////////////////////////// -/// The valid buffer types that may be created using COIBufferCreate. -/// Please see the COI_VALID_BUFFER_TYPES_AND_FLAGS matrix -/// below which describes the valid combinations of buffer types and flags. -/// -typedef enum COI_BUFFER_TYPE -{ - /// Normal buffers exist as a single physical buffer in either Source or - /// Sink physical memory. Mapping the buffer may stall the pipelines. - COI_BUFFER_NORMAL = 1, - - // Reserved values, not used by COI any more - COI_BUFFER_RESERVED_1, - COI_BUFFER_RESERVED_2, - COI_BUFFER_RESERVED_3, - - /// OpenCL buffers are similar to Normal buffers except they don't - /// stall pipelines and don't follow any read write dependencies. - COI_BUFFER_OPENCL - -} COI_BUFFER_TYPE; - - -/// @name COIBUFFER creation flags. -/// Please see the COI_VALID_BUFFER_TYPES_AND_FLAGS matrix -/// below which describes the valid combinations of buffer types and flags. -//@{ - -/// Create the buffer such that it has the same virtual address on all of the -/// sink processes with which it is associated. -#define COI_SAME_ADDRESS_SINKS 0x00000001 - -/// Create the buffer such that it has the same virtual address on all of the -/// sink processes with which it is associated and in the source process. -#define COI_SAME_ADDRESS_SINKS_AND_SOURCE 0x00000002 - -/// Hint to the runtime that the source will frequently read the buffer -#define COI_OPTIMIZE_SOURCE_READ 0x00000004 - -/// Hint to the runtime that the source will frequently write the buffer -#define COI_OPTIMIZE_SOURCE_WRITE 0x00000008 - -/// Hint to the runtime that the sink will frequently read the buffer -#define COI_OPTIMIZE_SINK_READ 0x00000010 - -/// Hint to the runtime that the sink will frequently write the buffer -#define COI_OPTIMIZE_SINK_WRITE 0x00000020 - -/// Used to delay the pinning of memory into physical pages, until required -/// for DMA. This can be used to delay the cost of time spent pinning memory -/// until absolutely necessary. Might speed up the execution of COIBufferCreate -/// calls, but slow down the first access of the buffer in -/// COIPipelineRunFunction(s) or other COIBuffer access API's. -/// Also of important note, that with this flag enabled COI will not be able to -/// check to see if this memory is read only. Ordinarily this is checked -/// and an error is thrown upon buffer creation. With this flag, the error -/// might occur later, and cause undetermined behavior. Be sure to always -/// use writable memory for COIBuffers. -#define COI_OPTIMIZE_NO_DMA 0x00000040 - -/// Hint to the runtime to try to use huge page sizes for backing store on the -/// sink. Is currently not compatible with the SAME_ADDRESS -/// flags or the SINK_MEMORY flag. It is important to note that this is a hint -/// and internally the runtime may not actually promote to huge pages. -/// Specifically if the buffer is too small (less than 4KiB for example) then -/// the runtime will not promote the buffer to use huge pages. -#define COI_OPTIMIZE_HUGE_PAGE_SIZE 0x00000080 - -/// Used to tell Intel(R) Coprocessor Offload Infrastructure (Intel(R) COI) -/// to create a buffer using memory that has already been -/// allocated on the sink. This flag is only valid when passed in to the -/// COIBufferCreateFromMemory API. -#define COI_SINK_MEMORY 0x00000100 - -//@} - -#ifndef DOXYGEN_SHOULD_SKIP_THIS -// Make the flag mask -#ifdef F -#undef F -#endif -#define F 0 -#ifdef T -#undef T -#endif -#define T 1 -#define MTM(_BUFFER, B1, B2, B3, B4, B5, B6, B7, B8, B9) \ - (B1 | B2<<1 | B3<<2 | B4<<3 | B5<<4 | B6<<5 | B7<<6 | B8<<7 | B9<<8) -#endif - -/// \enum COI_BUFFER_TYPE -/// This matrix shows the valid combinations of buffer types and buffer flags -/// that may be passed in to COIBufferCreate and COIBufferCreateFromMemory. -/// \code -static const uint64_t -COI_VALID_BUFFER_TYPES_AND_FLAGS[COI_BUFFER_OPENCL + 1] = -{ - /* | | SAME | | | | | | | | - | SAME | ADDR | OPT | OPT | OPT | OPT | OPT | HUGE | COI | - | ADDR | SINK | SRC | SRC | SINK | SINK | NO | PAGE | SINK | - | SINKS | SRC | READ | WRITE | READ | WRITE | DMA | SIZE | MEM | - +-------+------+------+-------+------+-------+-----+------+-----*/ - MTM(INVALID , F , F , F , F , F , F , F , F , F), - MTM(NORMAL , T , T , T , T , T , T , T , T , T), - MTM(RESERVED1 , F , F , F , F , F , F , F , F , F), - MTM(RESERVED2 , F , F , F , F , F , F , F , F , F), - MTM(RESERVED3 , F , F , F , F , F , F , F , F , F), - MTM(OPENCL , T , T , T , T , T , T , T , T , F), -}; -///\endcode -#undef MTM - -////////////////////////////////////////////////////////////////////////////// -/// These flags control how the buffer will be accessed on the source after -/// it is mapped. -/// Please see the COI_VALID_BUFFER_TYPES_AND_MAP matrix below for the -/// valid buffer type and map operation combinations. -typedef enum COI_MAP_TYPE -{ - /// Allows the application to read and write the contents of the buffer - /// after it is mapped. - COI_MAP_READ_WRITE = 1, - - /// If this flag is set then the application must only read from the - /// buffer after it is mapped. If the application writes to the buffer - /// the contents will not be reflected back to the sink or stored for - /// the next time the buffer is mapped on the source. - /// This allows the runtime to make significant performance optimizations - /// in buffer handling. - COI_MAP_READ_ONLY, - - /// Setting this flag means that the source will overwrite the entire - /// buffer once it is mapped. The app must not read from the buffer and - /// must not expect the contents of the buffer to be synchronized from - /// the sink side during the map operation. - /// This allows the runtime to make significant performance optimizations - /// in buffer handling. - COI_MAP_WRITE_ENTIRE_BUFFER -} COI_MAP_TYPE; - -#ifndef DOXYGEN_SHOULD_SKIP_THIS -// Make the flag mask -#define MMM(_BUFFER, B1, B2, B3) \ - { F , B1, B2, B3} -#endif -/// \enum COI_MAP_TYPE -/// This matrix shows the valid combinations of buffer types and map -/// operations that may be passed in to COIBufferMap. -/// \code -static const uint64_t -COI_VALID_BUFFER_TYPES_AND_MAP -[COI_BUFFER_OPENCL + 1][COI_MAP_WRITE_ENTIRE_BUFFER + 1] = -{ - /* | MAP | MAP | MAP | - | READ | READ | WRITE | - | WRITE | ONLY | ENTIRE| - +-------+-------+-------+*/ - MMM(INVALID , F , F , F), - MMM(NORMAL , T , T , T), - MMM(RESERVED1 , F , F , F), - MMM(RESERVED2 , F , F , F), - MMM(RESERVED3 , F , F , F), - MMM(OPENCL , T , T , T), -}; -///\endcode -#undef MMM -#ifndef DOXYGEN_SHOULD_SKIP_THIS -#undef F -#undef T -#endif - -////////////////////////////////////////////////////////////////////////////// -/// The valid copy operation types for the COIBufferWrite, COIBufferRead, -/// and COIBufferCopy APIs. -/// -typedef enum COI_COPY_TYPE -{ - /// The runtime can pick the best suitable way to copy the data. - COI_COPY_UNSPECIFIED = 0, - - /// The runtime should use DMA to copy the data. - COI_COPY_USE_DMA, - - /// The runtime should use a CPU copy to copy the data. - COI_COPY_USE_CPU, - - /// Same as above, but forces moving entire buffer to target process in Ex - /// extended APIs, even if the full buffer is not written. - COI_COPY_UNSPECIFIED_MOVE_ENTIRE, - - /// Same as above, but forces moving entire buffer to target process in Ex - /// extended APIs, even if the full buffer is not written. - COI_COPY_USE_DMA_MOVE_ENTIRE, - - /// Same as above, but forces moving entire buffer to target process in Ex - /// extended APIs, even if the full buffer is not written. - COI_COPY_USE_CPU_MOVE_ENTIRE - -} COI_COPY_TYPE; - - -////////////////////////////////////////////////////////////////////////////// -/// The buffer states are used to indicate whether a buffer is available for -/// access in a COIPROCESS. This is used with COIBufferSetState. -/// -/// Rules on State Transition of the buffer: -/// -. When a Buffer is created by default it is valid only on the source, -/// except for buffers created with COI_SINK_MEMORY flag which are valid -/// only on the sink where the memory lies when created. -/// -. Apart from SetState following APIs also alters the state of the buffer -/// internally: -/// -/// - COIBufferMap alters state of buffer depending on the COI_MAP_TYPE. -/// COI_MAP_READ_ONLY: Makes Valid on the Source. Doesn't affect the state -/// of the buffer on the other devices. -/// COI_MAP_READ_WRITE: Makes it Valid only the Source and Invalid -/// everywhere else. OPENCL buffers are invalidated -/// only if it is not in use. -/// COI_MAP_WRITE_ENTIRE_BUFFER: Makes it valid only on the Source. OPENCL -/// buffers are invalidated only if not in use. -/// -/// - COIPipelineRunfunction alters the state of the buffer depending on the -/// COI_ACCESS_FLAGS -/// COI_SINK_READ: Makes it valid on the sink where RunFunction is being -/// issued. Doesn't affect the state of the buffer on other -/// devices. -/// COI_SINK_WRITE: Makes it valid only on the sink where Runfunction is -/// being issued and invalid everywhere else. OPENCL -/// buffers are invalidated only if the buffer is not in -/// use. -/// COI_SINK_WRITE_ENTIRE: Makes it valid only on the sink where -/// Runfunction is being issued and invalid everywhere else -/// OPENCL buffers are invalidated only if the buffer is -/// not in use. -/// -/// - COIBufferWrite makes the buffer exclusively valid where the write -/// happens. Write gives preference to Source over Sink. In other words -/// if a buffer is valid on the Source and multiple Sinks, Write will -/// happen on the Source and will Invalidate all other Sinks. If the -/// buffer is valid on multiple Sinks ( and not on the Source) then -/// Intel(R) Coprocessor Offload Infrastructure (Intel(R) COI) -/// selects process handle with the lowest numerical value to do the -/// exclusive write Again, OPENCL buffers are invalidated only if the -/// buffer is not in use on that SINK/SOURCE. -/// -/// The preference rule mentioned above holds true even for SetState API, -/// when data needs to be moved from a valid location. The selection of -/// valid location happens as stated above. -/// -/// - It is possible to alter only parts of the buffer and change it state -/// In other words it is possible for different parts of the buffer to have -/// different states on different devices. A byte is the minimum size at -/// which state can be maintained internally. Granularity level is completely -/// determined by how the buffer gets fragmented. -/// -/// Note: Buffer is considered 'in use' if is -/// - Being used in RunFunction : In use on a Sink -/// - Mapped: In use on a Source -/// - AddRef'd: In use on Sink -/// - -////////////////////////////////////////////////////////////////////////////// -/// The buffer states used with COIBufferSetState call to indicate the new -/// state of the buffer on a given process -/// -typedef enum -{ - COI_BUFFER_VALID = 0, // Buffer is valid and up-to-date on the process - COI_BUFFER_INVALID , // Buffer is not valid, need valid data - COI_BUFFER_VALID_MAY_DROP, // Same as valid but will drop the content when - // evicted to avoid overwriting the shadow - // memory - COI_BUFFER_RESERVED // Reserved for internal use -} COI_BUFFER_STATE; -/// -/// Note: A VALID_MAY_DROP declares a buffer's copy as secondary on a given -/// process. This means that there needs to be at least one primary copy of the -/// the buffer somewhere in order to mark the buffer as VALID_MAY_DROP on a -/// process. In other words to make a buffer VALID_MAY_DROP on a given process -/// it needs to be in COI_BUFFER_VALID state somewhere else. The operation gets -/// ignored (or is a nop) if there is no primary copy of the buffer. The nature -/// of this state to "drop the content" when evicted is a side effect of -/// marking the buffer as secondary copy. So when a buffer marked -/// VALID_MAY_DROP is evicted Intel(R) Coprocessor Offload Infrastructure -/// (Intel(R) COI) doesn't back it up as it is assumed that -/// there is a primary copy somewhere. - -////////////////////////////////////////////////////////////////////////////// -/// The buffer move flags are used to indicate when a buffer should be moved -/// when it's state is changed. This is used with COIBufferSetState. -typedef enum -{ - COI_BUFFER_MOVE = 0,// Dirty data is moved if state change requires it - COI_BUFFER_NO_MOVE // Change state without moving data -} COI_BUFFER_MOVE_FLAG; - -// A process handle for COIBufferSetState call to indicate all the sink -// processes where the given buffer is valid -#define COI_SINK_OWNERS ((COIPROCESS)-2) - -// Matrix descriptors used with MultiD Read/Write -typedef struct dim_desc -{ - int64_t size; // Size of data type - int64_t lindex; // Lower index, used in Fortran - int64_t lower; // Lower section bound - int64_t upper; // Upper section bound - int64_t stride; // Stride, or number of bytes between the start - // of one element and start of next one divided - // by size. -} dim_desc; - -typedef struct arr_desc -{ - int64_t base; // Base address - int64_t rank; // Rank of array, i.e. number of dimensions - dim_desc dim[3]; // This array has as many elements as 'rank' - // currently limited to 3. -} arr_desc; - -////////////////////////////////////////////////////////////////////////////// -/// -/// Creates a buffer that can be used in RunFunctions that are queued in -/// pipelines. The address space for the buffer is reserved when it is -/// created although the memory may not be committed until the buffer is -/// used for the first time. Please note that the Intel(R) Coprocessor Offload -/// Infrastructure (Intel(R) COI) runtime may also allocate space for the -/// source process to use as shadow memory for certain types of buffers. -/// If Intel(R) Coprocessor Offload Infrastructure (Intel(R) COI) -/// does allocate this memory it will not be released or reallocated -/// until the COIBuffer is destroyed. -/// -/// @param in_Size -/// [in] The number of bytes to allocate for the buffer. If in_Size -/// is not page aligned, it will be rounded up. -/// -/// @param in_Type -/// [in] The type of the buffer to create. -/// -/// @param in_Flags -/// [in] A bitmask of attributes for the newly created buffer. -/// Some of these flags are required for correctness while others -/// are provided as hints to the runtime system so it can make -/// certain performance optimizations. -/// -/// @param in_pInitData -/// [in] If non-NULL the buffer will be initialized with the data -/// pointed to by pInitData. The memory at in_pInitData must hold -/// at least in_Size bytes. -/// -/// @param in_NumProcesses -/// [in] The number of processes with which this buffer might be used. -/// -/// @param in_pProcesses -/// [in] An array of COIPROCESS handles identifying the processes with -/// which this buffer might be used. -/// -/// @param out_pBuffer -/// [out] Pointer to a buffer handle. The handle will be filled in -/// with a value that uniquely identifies the newly created buffer. -/// This handle should be disposed of via COIBufferDestroy() -/// once it is no longer needed. -/// -/// @return COI_SUCCESS if the buffer was created -/// -/// @return COI_ARGUMENT_MISMATCH if the in_Type and in_Flags parameters -/// are not compatible with one another. Please see the -/// COI_VALID_BUFFER_TYPES_AND_FLAGS map above for information about -/// which flags and types are compatible. -/// -/// @return COI_OUT_OF_RANGE if in_Size is zero, if the bits set in -/// the in_Flags parameter are not recognized flags, or if in_NumProcesses is zero. -/// -/// @return COI_INVALID_POINTER if the in_pProcesses or out_pBuffer parameter -/// is NULL. -/// -/// @return COI_NOT_SUPPORTED if in_Type has invalid value or if -/// one of the in_Flags is COI_SINK_MEMORY. -/// -/// @return COI_NOT_SUPPORTED if the flags include either -/// COI_SAME_ADDRESS_SINKS or COI_SAME_ADDRESS_SINKS_AND_SOURCE and -/// COI_OPTIMIZE_HUGE_PAGE_SIZE. -/// -/// @return COI_INVALID_HANDLE if one of the COIPROCESS handles in the -/// in_pProcesses array does not identify a valid process. -/// -/// @return COI_OUT_OF_MEMORY if allocating the buffer fails. -/// -/// @return COI_RESOURCE_EXHAUSTED if the sink is out of buffer memory. -/// -COIACCESSAPI -COIRESULT -COIBufferCreate( - uint64_t in_Size, - COI_BUFFER_TYPE in_Type, - uint32_t in_Flags, - const void *in_pInitData, - uint32_t in_NumProcesses, - const COIPROCESS *in_pProcesses, - COIBUFFER *out_pBuffer); - -////////////////////////////////////////////////////////////////////////////// -/// -/// Creates a buffer from some existing memory that can be used in -/// RunFunctions that are queued in pipelines. If the flag COI_SINK_MEMORY -/// is specified then Intel(R) Coprocessor Offload -/// Infrastructure (Intel(R) COI) will use that memory for the buffer on the sink. -/// If that flag isn't set then the memory provided is used as backing store -/// for the buffer on the source. In either case the memory must not be freed -/// before the buffer is destroyed. -/// While the user still owns the memory passed in they must use the -/// appropriate access flags when accessing the buffer in COIPipelinRunFunction -/// or COIBufferMap calls so that the runtime knows when the -/// memory has been modified. If the user just writes directly to the memory -/// location then those changes may not be visible when the corresponding -/// buffer is accessed. -/// Whatever values are already present in the memory location when this call -/// is made are preserved. The memory values are also preserved when -/// COIBufferDestroy is called. -/// -/// @warning: Use of this function is highly discouraged if the calling -/// program forks at all (including calls to system(3), popen(3), or similar -/// functions) during the life of this buffer. See the discussion around the -/// in_Memory parameter below regarding this. -/// -/// @param in_Size -/// [in] The size of in_Memory in bytes. If in_Size -/// is not page aligned, it will be rounded up. -/// -/// @param in_Type -/// [in] The type of the buffer to create. Only COI_BUFFER_NORMAL -/// buffer type is supported. -/// -/// @param in_Flags -/// [in] A bitmask of attributes for the newly created buffer. -/// Some of these flags are required for correctness while others -/// are provided as hints to the runtime system so it can make -/// certain performance optimizations. Note that the flag -/// COI_SAME_ADDRESS_SINKS_AND_SOURCE is still valid but may fail -/// if the same address as in_Memory cannot be allocated on the sink. -/// -/// @param in_Memory -/// [in] A pointer to an already allocated memory region -/// that should be turned into a COIBUFFER. Although the user still -/// owns this memory they should not free it before calling -/// COIBufferDestroy. They must also only access the memory using -/// COIBUFFER semantics, for example using COIBufferMap/COIBufferUnmap -/// when they wish to read or write the data. There are no alignment -/// or size requirements for this memory region. -/// -/// WARNING: -/// Since the backing memory passed in can be the target of a DMA -/// the caller must ensure that there is no call to clone(2) (without -/// the CLONE_VM argument) during the life of this buffer. This -/// includes higher level functions that call clone such as fork(2), -/// system(3), popen(3), among others). -/// -/// For forked processes, Linux uses copy-on-write semantics for -/// performance reasons. Consequently, if the parent forks and then -/// writes to this memory, the physical page mapping changes causing -/// the DMA to fail (and thus data corruption). -/// -/// In Linux you can mark a set of pages to not be copied across -/// across the clone by calling madvise(2) with an argument of -/// MADV_DONTFORK and then safely use that memory in this scenario. -/// Alternately, if the memory is from a region marked MAP_SHARED, -/// this will work. -/// -/// @param in_NumProcesses -/// [in] The number of processes with which this buffer might be used. -/// If the flag COI_SINK_MEMORY is specified then this must be 1. -/// -/// @param in_pProcesses -/// [in] An array of COIPROCESS handles identifying the processes with -/// which this buffer might be used. -/// -/// @param out_pBuffer -/// [out] Pointer to a buffer handle. The handle will be filled in -/// with a value that uniquely identifies the newly created buffer. -/// This handle should be disposed of via COIBufferDestroy() -/// once it is no longer needed. -/// -/// @return COI_SUCCESS if the buffer was created -/// -/// @return COI_NOT_SUPPORTED if the in_Type value is not COI_BUFFER_NORMAL, -/// or COI_BUFFER_OPENCL. -/// -/// @return COI_NOT_SUPPORTED if in_Memory is read-only memory -/// -/// @return COI_NOT_SUPPORTED if one of the in_Flags is COI_SINK_MEMORY and -/// in_Type is not COI_BUFFER_NORMAL -/// -/// @return COI_NOT_SUPPORTED if the flag COI_SAME_ADDRESS_SINKS is set -/// -/// @return COI_NOT_SUPPORTED if the flag COI_SAME_ADDRESS_SINKS_AND_SOURCE is -/// set -/// -/// @return COI_ARGUMENT_MISMATCH if the in_Type and in_Flags parameters -/// are not compatible with one another. Please see the -/// COI_VALID_BUFFER_TYPES_AND_FLAGS map above for information about -/// which flags and types are compatible. -/// -/// @return COI_ARGUMENT_MISMATCH if the flag COI_SINK_MEMORY is specified and -/// in_NumProcesses > 1. -/// -/// @return COI_ARGUMENT_MISMATCH if the flags COI_SINK_MEMORY and -/// COI_OPTIMIZE_HUGE_PAGE_SIZE are both set. -/// -/// @return COI_OUT_OF_RANGE if in_Size is zero, if the bits set in -/// the in_Flags parameter are not recognized flags, or if in_NumProcesses is zero. -/// -/// @return COI_INVALID_POINTER if in_Memory, in_pProcesses or -/// out_pBuffer parameter is NULL. -/// -/// @return COI_INVALID_HANDLE if one of the COIPROCESS handles in the -/// in_pProcesses array does not identify a valid process. -/// -COIACCESSAPI -COIRESULT -COIBufferCreateFromMemory( - uint64_t in_Size, - COI_BUFFER_TYPE in_Type, - uint32_t in_Flags, - void *in_Memory, - uint32_t in_NumProcesses, - const COIPROCESS *in_pProcesses, - COIBUFFER *out_pBuffer); - - -////////////////////////////////////////////////////////////////////////////// -/// -/// Destroys a buffer. Will block on completion of any operations on the -/// buffer, such as COIPipelineRunFunction or COIBufferCopy. Will block until -/// all COIBufferAddRef calls have had a matching COIBufferReleaseRef call -/// made. will not block on an outstanding COIBufferUnmap but will instead -/// return COI_RETRY. -/// -/// @param in_Buffer -/// [in] Handle of the buffer to destroy. -/// -/// @return COI_SUCCESS if the buffer was destroyed. -/// -/// @return COI_INVALID_HANDLE if the buffer handle was invalid. -/// -/// @return COI_RETRY if the buffer is currently mapped. The buffer must -/// first be unmapped before it can be destroyed. -/// -/// @return COI_RETRY if the sub-buffers created from this buffer are not yet -/// destroyed -/// -COIACCESSAPI -COIRESULT -COIBufferDestroy( - COIBUFFER in_Buffer); - - -////////////////////////////////////////////////////////////////////////////// -/// -/// This call initiates a request to access a region of a buffer. Multiple -/// overlapping (or non overlapping) regions can be mapped simultaneously for -/// any given buffer. If a completion event is specified this call will -/// queue a request for the data which will be satisfied when the buffer is -/// available. Once all conditions are met the completion event will be -/// signaled and the user can access the data at out_ppData. The user can call -/// COIEventWait with out_pCompletion to find out when the map operation has -/// completed. If the user accesses the data before the map operation is -/// complete the results are undefined. If out_pCompletion is NULL then this -/// call blocks until the map operation completes and when this call returns -/// out_ppData can be safely accessed. This call returns a map instance handle -/// in an out parameter which must be passed into COIBufferUnmap when the user -/// no longer needs access to that region of the buffer. -/// -/// The address returned from COIBufferMap may point to memory that -/// Intel(R) Coprocessor Offload Infrastructure (Intel(R) COI) -/// manages on behalf of the user. The user must not free or reallocate this -/// memory, Intel(R) Coprocessor Offload Infrastructure (Intel(R) COI) -/// will perform any necessary cleanup when the buffer is -/// destroyed. -/// -/// Note that different types of buffers behave differently when mapped. -/// For instance, mapping a COI_BUFFER_NORMAL for write must stall if the -/// buffer is currently being written to by a run function. -/// The asynchronous operation of COIBufferMap will likely be most useful when -/// paired with a COI_BUFFER_NORMAL. -/// -/// @param in_Buffer -/// [in] Handle for the buffer to map. -/// -/// @param in_Offset -/// [in] Offset into the buffer that a pointer should be returned -/// for. The value 0 can be passed in to signify that the mapped -/// region should start at the beginning of the buffer. -/// -/// @param in_Length -/// [in] Length of the buffer area to map. This parameter, in -/// combination with in_Offset, allows the caller to specify -/// that only a subset of an entire buffer need be mapped. A -/// value of 0 can be passed in only if in_Offset is 0, to signify -/// that the mapped region is the entire buffer. -/// -/// @param in_Type -/// [in] The access type that is needed by the application. This will -/// affect how the data can be accessed once the map operation -/// completes. See the COI_MAP_TYPE enum for more details. -/// -/// @param in_NumDependencies -/// [in] The number of dependencies specified in the in_pDependencies -/// array. This may be 0 if the caller does not want the map -/// call initiation to wait for any events to be signaled before -/// starting the map operations. -/// -/// @param in_pDependencies -/// [in] An optional array of handles to previously created COIEVENT -/// objects that this map operation will wait for before starting. -/// This allows the user to create dependencies between asynchronous -/// map calls and other operations such as run functions or other -/// asynchronous map calls. The user may pass in NULL if they do not -/// wish to wait for any dependencies to complete before initiating map -/// operations. -/// -/// @param out_pCompletion -/// [out] An optional pointer to a COIEVENT object -/// that will be signaled when a map call with the passed in buffer -/// would complete immediately, that is, the buffer memory has been -/// allocated on the source and its contents updated. The user may pass -/// in NULL if the user wants COIBufferMap to perform a blocking map -/// operation. -/// -/// @param out_pMapInstance -/// [out] A pointer to a COIMAPINSTANCE which represents this mapping -/// of the buffer and must be passed in to COIBufferUnmap when access -/// to this region of the buffer data is no longer needed. -/// -/// @param out_ppData -/// [out] Pointer to the buffer data. The data will only be valid -/// when the completion object is signaled, or for a synchronous -/// map operation with the call to map returns. -/// -/// -/// @return COI_SUCCESS if the map request succeeds. -/// -/// @return COI_OUT_OF_RANGE if in_Offset of (in_Offset + in_Length) exceeds -/// the size of the buffer. -/// -/// @return COI_OUT_OF_RANGE if in_Length is 0, but in_Offset is not 0. -/// -/// @return COI_OUT_OF_RANGE if in_Type is not a valid COI_MAP_TYPE. -/// -/// @return COI_ARGUMENT_MISMATCH if in_NumDependencies is non-zero while -/// in_pDependencies was passed in as NULL. -/// -/// @return COI_ARGUMENT_MISMATCH if in_pDependencies is non-NULL but -/// in_NumDependencies is zero. -/// -/// @return COI_ARGUMENT_MISMATCH if the in_Type of map is not a valid type -/// for in_Buffer's type of buffer. -/// -/// @return COI_INVALID_HANDLE if in_Buffer is not a valid buffer handle. -/// -/// @return COI_INVALID_POINTER if out_pMapInstance or out_ppData is NULL. -/// -COIACCESSAPI -COIRESULT -COIBufferMap( - COIBUFFER in_Buffer, - uint64_t in_Offset, - uint64_t in_Length, - COI_MAP_TYPE in_Type, - uint32_t in_NumDependencies, - const COIEVENT *in_pDependencies, - COIEVENT *out_pCompletion, - COIMAPINSTANCE *out_pMapInstance, - void **out_ppData); - -////////////////////////////////////////////////////////////////////////////// -/// -/// Disables Source access to the region of the buffer that was provided -/// through the corresponding call to COIBufferMap. The number of calls to -/// COIBufferUnmap() should always match the number of calls made to -/// COIBufferMap(). The data pointer returned from the COIBufferMap() call -/// will be invalid after this call. -/// -/// @param in_MapInstance -/// [in] buffer map instance handle to unmap. -/// -/// @param in_NumDependencies -/// [in] The number of dependencies specified in the in_pDependencies -/// array. This may be 0 if the caller does not want the unmap call to -/// wait for any events to be signaled before performing the unmap -/// operation. -/// -/// @param in_pDependencies -/// [in] An optional array of handles to previously created COIEVENT -/// objects that this unmap operation will wait for before starting. -/// This allows the user to create dependencies between asynchronous -/// unmap calls and other operations such as run functions or other -/// asynchronous unmap calls. The user may pass in NULL if they do not -/// wish to wait for any dependencies to complete before initiating -/// unmap operations. -/// -/// @param out_pCompletion -/// [out] An optional pointer to a COIEVENT object that will be -/// signaled when the unmap is complete. The user may pass in NULL if -/// the user wants COIBufferUnmap to perform a blocking unmap -/// operation. -/// -/// @return COI_SUCCESS upon successful unmapping of the buffer instance. -/// -/// @return COI_INVALID_HANDLE if the passed in map instance handle was NULL. -/// -/// @return COI_ARGUMENT_MISMATCH if the in_pDependencies is non NULL but -/// in_NumDependencies is 0. -/// -/// @return COI_ARGUMENT_MISMATCH if in_pDependencies is NULL but -/// in_NumDependencies is not 0. -/// -COIACCESSAPI -COIRESULT -COIBufferUnmap( - COIMAPINSTANCE in_MapInstance, - uint32_t in_NumDependencies, - const COIEVENT *in_pDependencies, - COIEVENT *out_pCompletion); - -////////////////////////////////////////////////////////////////////////////// -/// -/// Gets the Sink's virtual address of the buffer for the first process -/// that is using the buffer. This is the same address -/// that is passed to the run function on the Sink. The virtual -/// address assigned to the buffer for use on the sink is fixed; -/// the buffer will always be present at that virtual address on the sink -/// and will not get a different virtual address across different -/// RunFunctions. -/// This address is only valid on the Sink and should not be dereferenced on -/// the Source (except for the special case of buffers created with the -/// COI_SAME_ADDRESS flag). -/// -/// @param in_Buffer -/// [in] Buffer handle -/// -/// @param out_pAddress -/// [out] pointer to a uint64_t* that will be filled with the address. -/// -/// @return COI_SUCCESS upon successful return of the buffer's address. -/// -/// @return COI_INVALID_HANDLE if the passed in buffer handle was invalid. -/// -/// @return COI_INVALID_POINTER if the out_pAddress parameter was invalid. -/// -COIACCESSAPI -COIRESULT -COIBufferGetSinkAddress( - COIBUFFER in_Buffer, - uint64_t *out_pAddress); - -////////////////////////////////////////////////////////////////////////////// -/// -/// Gets the Sink's virtual address of the buffer. This is the same -/// address that is passed to the run function on the Sink. The virtual -/// address assigned to the buffer for use on the sink is fixed; -/// the buffer will always be present at that virtual address on the sink -/// and will not get a different virtual address across different -/// RunFunctions. -/// This address is only valid on the Sink and should not be dereferenced on -/// the Source (except for the special case of buffers created with the -/// COI_SAME_ADDRESS flag). -/// -/// @param in_Process -/// [in] The process for which the address should be returned. -/// Special handle value 0 can be passed to the function; -/// in this case, address for the first valid process will be returned -/// -/// @param in_Buffer -/// [in] Buffer handle -/// -/// @param out_pAddress -/// [out] pointer to a uint64_t* that will be filled with the address. -/// -/// @return COI_SUCCESS upon successful return of the buffer's address. -/// -/// @return COI_INVALID_HANDLE if the passed in buffer or process -/// handle was invalid. -/// -/// @return COI_INVALID_POINTER if the out_pAddress parameter was invalid. -/// -/// @return COI_OUT_OF_RANGE if the in_Process is not valid for in_Buffer at the -/// moment of calling the function. -/// -COIACCESSAPI -COIRESULT -COIBufferGetSinkAddressEx( - COIPROCESS in_Process, - COIBUFFER in_Buffer, - uint64_t *out_pAddress); - -////////////////////////////////////////////////////////////////////////////// -/// -/// Copy data from a normal virtual address into an existing COIBUFFER. -/// Please note that COIBufferWrite does not follow implicit buffer -/// dependencies. If a buffer is in use in a run function or has been added -/// to a process using COIBufferAddRef the call to COIBufferWrite will not -/// wait, it will still copy data immediately. -/// This is to facilitate a usage model where a buffer is being used outside -/// of a run function, for example in a spawned thread, but data still needs -/// to be transferred to or from the buffer. -/// Additionally this means that if more than one DMA channel is enabled, -/// (See COIProcessConfigureDMA) operations to the same buffer may -/// happen in parallel if they can be assigned to different DMA hardware. -/// So it is highly recommended to use explicit event dependencies to -/// order operations where needed. -/// -/// @param in_DestBuffer -/// [in] Buffer to write into. -/// -/// @param in_DestProcess -/// [in] A pointer to the process to which the data will be written. -/// Buffer is updated only in this process and invalidated in other -/// processes. Only a single process can be specified. -/// Can be left NULL and default behavior will be chosen, which -/// chooses the first valid process in which regions are found. Other -/// buffer regions are invalidated if not updated. -/// -/// @param in_Offset -/// [in] Location in the buffer to start writing to. -/// -/// @param in_pSourceData -/// [in] A pointer to local memory that should be copied into the -/// provided buffer. -/// -/// @param in_Length -/// [in] The number of bytes to write from in_pSourceData into -/// in_DestBuffer. Must not be larger than the size of in_DestBuffer -/// and must not over run in_DestBuffer if an in_Offset is provided. -/// -/// @param in_Type -/// [in] The type of copy operation to use, one of either -/// COI_COPY_UNSPECIFIED, COI_COPY_USE_DMA, COI_COPY_USE_CPU. -/// -/// @param in_NumDependencies -/// [in] The number of dependencies specified in the in_pDependencies -/// array. This may be 0 if the caller does not want the write call to -/// wait for any additional events to be signaled before starting the -/// write operation. -/// -/// @param in_pDependencies -/// [in] An optional array of handles to previously created COIEVENT -/// objects that this write operation will wait for before starting. -/// This allows the user to create dependencies between buffer write -/// calls and other operations such as run functions and map calls. The -/// user may pass in NULL if they do not wish to wait for any -/// additional dependencies to complete before doing the write. -/// -/// @param out_pCompletion -/// [out] An optional event to be signaled when the write has -/// completed. This event can be used as a dependency to order -/// the write with regard to future operations. -/// If no completion event is passed in then the write is -/// synchronous and will block until the transfer is complete. -/// -/// -/// @return COI_SUCCESS if the buffer was written successfully. -/// -/// @return COI_INVALID_HANDLE if the buffer handle was invalid. -/// -/// @return COI_OUT_OF_RANGE if in_Offset is beyond the end of the buffer. -/// -/// @return COI_ARGUMENT_MISMATCH if the in_pDependencies is non NULL but -/// in_NumDependencies is 0. -/// -/// @return COI_ARGUMENT_MISMATCH if in_pDependencies is NULL but -/// in_NumDependencies is not 0. -/// -/// @return COI_INVALID_POINTER if the in_pSourceData pointer is NULL. -/// -/// @return COI_OUT_OF_RANGE if in_Offset + in_Length exceeds the size of -/// the buffer. -/// -/// @return COI_OUT_OF_RANGE if in_Length is 0. -/// -/// @return COI_RETRY if in_DestBuffer is mapped and is not COI_BUFFER_OPENCL -/// buffer. -/// -COIACCESSAPI -COIRESULT -COIBufferWriteEx( - COIBUFFER in_DestBuffer, - const COIPROCESS in_DestProcess, - uint64_t in_Offset, - const void *in_pSourceData, - uint64_t in_Length, - COI_COPY_TYPE in_Type, - uint32_t in_NumDependencies, - const COIEVENT *in_pDependencies, - COIEVENT *out_pCompletion); - -////////////////////////////////////////////////////////////////////////////// -/// -/// Copy data specified by multi-dimensional array data structure into another -/// multi-dimensional array in an existing COIBUFFER. -/// Arrays with more than 3 dimensions are not supported. -/// Different numbers of elements between src and destination is not supported. -/// Please note that COIBufferWriteMultiD does not follow implicit buffer -/// dependencies. If a buffer is in use in a run function or has been added -/// to a process using COIBufferAddRef the call to COIBufferWriteMultiD will not -/// wait, it will still copy data immediately. -/// This is to facilitate a usage model where a buffer is being used outside -/// of a run function, for example in a spawned thread, but data still needs -/// to be transferred to or from the buffer. -/// Additionally this means that if more than one DMA channel is enabled, -/// (See COIProcessConfigureDMA) operations to the same buffer may -/// happen in parallel if they can be assigned to different DMA hardware. -/// So it is highly recommended to use explicit event dependencies to -/// order operations where needed. -/// -/// -/// @param in_DestBuffer -/// [in] Buffer to write into. -/// -/// @param in_DestProcess -/// [in] A pointer to the process to which the data will be written. -/// Buffer is updated only in this process and invalidated in other -/// processes. Only a single process can be specified. -/// Can be left NULL and default behavior will be chosen, which -/// chooses the first valid process in which regions are found. Other -/// buffer regions are invalidated if not updated. -/// -/// @param in_Offset -/// [in] Start location of the destination array within the buffer. -/// -/// @param in_DestArray -/// [in] A pointer to a data structure describing the structure of -/// the data array in the buffer. Total size must not be larger than -/// the size of in_DestBuffer. The base field of this structure will -/// be ignored. -/// -/// @param in_SrcArray -/// [in] A pointer to a data structure describing the structure of -/// the data array in local memory that should be copied. in_SrcArray -/// and in_DestArry must have the same number of elements. The base -/// field of this structure should be the virtual pointer to the local -/// memory in which this array is located. -/// -/// @param in_Type -/// [in] The type of copy operation to use, one of either -/// COI_COPY_UNSPECIFIED, COI_COPY_USE_DMA, COI_COPY_USE_CPU. -/// -/// @param in_NumDependencies -/// [in] The number of dependencies specified in the in_pDependencies -/// array. This may be 0 if the caller does not want the write call to -/// wait for any additional events to be signaled before starting the -/// write operation. -/// -/// @param in_pDependencies -/// [in] An optional array of handles to previously created COIEVENT -/// objects that this write operation will wait for before starting. -/// This allows the user to create dependencies between buffer write -/// calls and other operations such as run functions and map calls. The -/// user may pass in NULL if they do not wish to wait for any -/// additional dependencies to complete before doing the write. -/// -/// @param out_pCompletion -/// [out] An optional event to be signaled when the write has -/// completed. This event can be used as a dependency to order -/// the write with regard to future operations. -/// If no completion event is passed in then the write is -/// synchronous and will block until the transfer is complete. -/// -/// -/// @return COI_SUCCESS if the buffer was copied successfully. -/// -/// @return COI_INVALID_HANDLE if the buffer or process handle was invalid. -/// -/// @return COI_OUT_OF_RANGE if in_Offset is beyond the end of the buffer. -/// -/// @return COI_ARGUMENT_MISMATCH if the in_pDependencies is non NULL but -/// in_NumDependencies is 0. -/// -/// @return COI_ARGUMENT_MISMATCH if in_pDependencies is NULL but -/// in_NumDependencies is not 0. -/// -/// @return COI_NOT_SUPPORTED or dimension of destination or source arrays -/// are greater than 3 or less than 1 -/// -/// @return COI_INVALID_POINTER if the pointer in_SrcArray->base is NULL. -/// -/// @return COI_OUT_OF_RANGE if in_Offset + size of in_DestArray exceeds the -/// size of the buffer. -/// -/// @return COI_OUT_OF_MEMORY if any allocation of memory fails -/// -/// @return COI_RETRY if in_DestBuffer is mapped and is not -/// a COI_BUFFER_OPENCL buffer. -/// -COIACCESSAPI -COIRESULT -COIBufferWriteMultiD( - COIBUFFER in_DestBuffer, - const COIPROCESS in_DestProcess, - uint64_t in_Offset, - struct arr_desc *in_DestArray, - struct arr_desc *in_SrcArray, - COI_COPY_TYPE in_Type, - uint32_t in_NumDependencies, - const COIEVENT *in_pDependencies, - COIEVENT *out_pCompletion); - -////////////////////////////////////////////////////////////////////////////// -/// -/// Copy data specified by multi-dimensional array data structure from an -/// existing COIBUFFER to another multi-dimensional array located in memory. -/// Arrays with more than 3 dimensions are not supported. -/// Different numbers of elements between source and destination are not supported. -/// Please note that COIBufferReadMultiD does not follow implicit buffer -/// dependencies. If a buffer is in use in a run function or has been added -/// to a process using COIBufferAddRef the call to COIBufferReadMultiD will not -/// wait, it will still copy data immediately. -/// This is to facilitate a usage model where a buffer is being used outside -/// of a run function, for example in a spawned thread, but data still needs -/// to be transferred to or from the buffer. -/// Additionally this means that if more than one DMA channel is enabled, -/// (See COIProcessConfigureDMA) operations to the same buffer may -/// happen in parallel if they can be assigned to different DMA hardware. -/// So it is highly recommended to use explicit event dependencies to -/// order operations where needed. -/// -/// -/// @param in_SourceBuffer -/// [in] Buffer to read from. -/// -/// @param in_Offset -/// [in] Start location of the source array within the buffer. -/// -/// @param in_DestArray -/// [in] A pointer to a data structure describing the structure of -/// the data array in the buffer. Total size must not be larger than -/// the size of in_DestBuffer. The base field of this structure will -/// be ignored. -/// -/// @param in_SrcArray -/// [in] A pointer to a data structure describing the structure of -/// the data array in local memory that should be copied. in_SrcArray -/// and in_DestArry must have the same number of elements. The base -/// field of this structure should be the virtual pointer to the local -/// memory in which this array is located. -/// -/// @param in_Type -/// [in] The type of copy operation to use, one of either -/// COI_COPY_UNSPECIFIED, COI_COPY_USE_DMA, COI_COPY_USE_CPU. -/// -/// @param in_NumDependencies -/// [in] The number of dependencies specified in the in_pDependencies -/// array. This may be 0 if the caller does not want the write call to -/// wait for any additional events to be signaled before starting the -/// write operation. -/// -/// @param in_pDependencies -/// [in] An optional array of handles to previously created COIEVENT -/// objects that this write operation will wait for before starting. -/// This allows the user to create dependencies between buffer write -/// calls and other operations such as run functions and map calls. The -/// user may pass in NULL if they do not wish to wait for any -/// additional dependencies to complete before doing the write. -/// -/// @param out_pCompletion -/// [out] An optional event to be signaled when the write has -/// completed. This event can be used as a dependency to order -/// the write with regard to future operations. -/// If no completion event is passed in then the write is -/// synchronous and will block until the transfer is complete. -/// -/// -/// @return COI_SUCCESS if the buffer was written successfully. -/// -/// @return COI_INVALID_HANDLE if the buffer or process handle was invalid. -/// -/// @return COI_OUT_OF_RANGE if in_Offset is beyond the end of the buffer. -/// -/// @return COI_ARGUMENT_MISMATCH if the in_pDependencies is non NULL but -/// in_NumDependencies is 0. -/// -/// @return COI_ARGUMENT_MISMATCH if in_pDependencies is NULL but -/// in_NumDependencies is not 0. -/// -/// @return COI_NOT_SUPPORTED or dimension of destination or source arrays -/// are greater than 3 or less than 1 -/// -/// @return COI_INVALID_POINTER if the pointer in_DestArray->base is NULL. -/// -/// @return COI_OUT_OF_RANGE if in_Offset + size of in_SourceArray exceeds the -/// size of the buffer. -/// -/// @return COI_OUT_OF_MEMORY if any allocation of memory fails -/// -/// @return COI_RETRY if in_SourceBuffer is mapped and is not -/// a COI_BUFFER_OPENCL buffer. -/// -COIACCESSAPI -COIRESULT -COIBufferReadMultiD( - COIBUFFER in_SourceBuffer, - uint64_t in_Offset, - struct arr_desc *in_DestArray, - struct arr_desc *in_SrcArray, - COI_COPY_TYPE in_Type, - uint32_t in_NumDependencies, - const COIEVENT *in_pDependencies, - COIEVENT *out_pCompletion); - -////////////////////////////////////////////////////////////////////////////// -/// -/// Copy data from a normal virtual address into an existing COIBUFFER. -/// Please note that COIBufferWrite does not follow implicit buffer -/// dependencies. If a buffer is in use in a run function or has been added -/// to a process using COIBufferAddRef the call to COIBufferWrite will not -/// wait, it will still copy data immediately. -/// This is to facilitate a usage model where a buffer is being used outside -/// of a run function, for example in a spawned thread, but data still needs -/// to be transferred to or from the buffer. -/// Additionally this means that if more than one DMA channel is enabled, -/// (See COIProcessConfigureDMA) operations to the same buffer may -/// happen in parallel if they can be assigned to different DMA hardware. -/// So it is highly recommended to use explicit event dependencies to -/// order operations where needed. -/// -/// @param in_DestBuffer -/// [in] Buffer to write into. -/// -/// @param in_Offset -/// [in] Location in the buffer to start writing to. -/// -/// @param in_pSourceData -/// [in] A pointer to local memory that should be copied into the -/// provided buffer. -/// -/// @param in_Length -/// [in] The number of bytes to write from in_pSourceData into -/// in_DestBuffer. Must not be larger than the size of in_DestBuffer -/// and must not over run in_DestBuffer if an in_Offset is provided. -/// -/// @param in_Type -/// [in] The type of copy operation to use, one of either -/// COI_COPY_UNSPECIFIED, COI_COPY_USE_DMA, COI_COPY_USE_CPU. -/// -/// @param in_NumDependencies -/// [in] The number of dependencies specified in the in_pDependencies -/// array. This may be 0 if the caller does not want the write call to -/// wait for any additional events to be signaled before starting the -/// write operation. -/// -/// @param in_pDependencies -/// [in] An optional array of handles to previously created COIEVENT -/// objects that this write operation will wait for before starting. -/// This allows the user to create dependencies between buffer write -/// calls and other operations such as run functions and map calls. The -/// user may pass in NULL if they do not wish to wait for any -/// additional dependencies to complete before doing the write. -/// -/// @param out_pCompletion -/// [out] An optional event to be signaled when the write has -/// completed. This event can be used as a dependency to order -/// the write with regard to future operations. -/// If no completion event is passed in then the write is -/// synchronous and will block until the transfer is complete. -/// -/// -/// @return COI_SUCCESS if the buffer was copied successfully. -/// -/// @return COI_INVALID_HANDLE if the buffer handle was invalid. -/// -/// @return COI_OUT_OF_RANGE if in_Offset is beyond the end of the buffer. -/// -/// @return COI_ARGUMENT_MISMATCH if the in_pDependencies is non NULL but -/// in_NumDependencies is 0. -/// -/// @return COI_ARGUMENT_MISMATCH if in_pDependencies is NULL but -/// in_NumDependencies is not 0. -/// -/// @return COI_INVALID_POINTER if the in_pSourceData pointer is NULL. -/// -/// @return COI_OUT_OF_RANGE if in_Offset + in_Length exceeds the size of -/// the buffer. -/// -/// @return COI_OUT_OF_RANGE if in_Length is 0. -/// -/// @return COI_RETRY if in_DestBuffer is mapped and is not -/// a COI_BUFFER_OPENCL buffer. -/// -COIACCESSAPI -COIRESULT -COIBufferWrite( - COIBUFFER in_DestBuffer, - uint64_t in_Offset, - const void *in_pSourceData, - uint64_t in_Length, - COI_COPY_TYPE in_Type, - uint32_t in_NumDependencies, - const COIEVENT *in_pDependencies, - COIEVENT *out_pCompletion); - -////////////////////////////////////////////////////////////////////////////// -/// -/// Copy data from a buffer into local memory. -/// Please note that COIBufferRead does not follow implicit buffer -/// dependencies. If a buffer is in use in a run function or has been added -/// to a process using COIBufferAddRef the call to COIBufferRead will not -/// wait, it will still copy data immediately. -/// This is to facilitate a usage model where a buffer is being used outside -/// of a run function, for example in a spawned thread, but data still needs -/// to be transferred to or from the buffer. -/// Additionally this means that if more than one DMA channel is enabled, -/// (See COIProcessConfigureDMA) operations to the same buffer may -/// happen in parallel if they can be assigned to different DMA hardware. -/// So it is highly recommended to use explicit event dependencies to -/// order operations where needed. -/// -/// -/// @param in_SourceBuffer -/// [in] Buffer to read from. -/// -/// @param in_Offset -/// [in] Location in the buffer to start reading from. -/// -/// @param in_pDestData -/// [in] A pointer to local memory that should be written into from -/// the provided buffer. -/// -/// @param in_Length -/// [in] The number of bytes to write from in_SourceBuffer into -/// in_pDestData. Must not be larger than the size of in_SourceBuffer -/// and must not over run in_SourceBuffer if an in_Offset is provided. -/// -/// @param in_Type -/// [in] The type of copy operation to use, one of either -/// COI_COPY_UNSPECIFIED, COI_COPY_USE_DMA, COI_COPY_USE_CPU. -/// -/// @param in_NumDependencies -/// [in] The number of dependencies specified in the in_pDependencies -/// array. This may be 0 if the caller does not want the read call to -/// wait for any additional events to be signaled before starting the -/// read operation. -/// -/// @param in_pDependencies -/// [in] An optional array of handles to previously created COIEVENT -/// objects that this read operation will wait for before starting. -/// This allows the user to create dependencies between buffer read -/// calls and other operations such as run functions and map calls. The -/// user may pass in NULL if they do not wish to wait for any -/// additional dependencies to complete before doing the read. -/// -/// @param out_pCompletion -/// [out] An optional event to be signaled when the read has -/// completed. This event can be used as a dependency to order -/// the read with regard to future operations. -/// If no completion event is passed in then the read is -/// synchronous and will block until the transfer is complete. -/// -/// @return COI_SUCCESS if the buffer was copied successfully. -/// -/// @return COI_INVALID_HANDLE if the buffer handle was invalid. -/// -/// @return COI_OUT_OF_RANGE if in_Offset is beyond the end of the buffer. -/// -/// @return COI_ARGUMENT_MISMATCH if the in_pDependencies is non NULL but -/// in_NumDependencies is 0. -/// -/// @return COI_ARGUMENT_MISMATCH if in_pDependencies is NULL but -/// in_NumDependencies is not 0. -/// -/// @return COI_OUT_OF_RANGE if in_Offset + in_Length exceeds the size of -/// the buffer. -/// -/// @return COI_OUT_OF_RANGE if in_Length is 0. -/// -/// @return COI_INVALID_POINTER if the in_pDestData pointer is NULL. -/// -/// @return COI_RETRY if in_SourceBuffer is mapped and is not -/// a COI_BUFFER_OPENCL buffer. -/// -COIACCESSAPI -COIRESULT -COIBufferRead( - COIBUFFER in_SourceBuffer, - uint64_t in_Offset, - void *in_pDestData, - uint64_t in_Length, - COI_COPY_TYPE in_Type, - uint32_t in_NumDependencies, - const COIEVENT *in_pDependencies, - COIEVENT *out_pCompletion); - -////////////////////////////////////////////////////////////////////////////// -/// -/// Copy data between two buffers. It also allows copying within the same -/// buffer. For copy within the same buffer, if source and destination regions -/// overlap then this API returns error. -/// Please note that COIBufferCopy does not follow implicit buffer -/// dependencies. If a buffer is in use in a run function or has been added -/// to a process using COIBufferAddRef the call to COIBufferCopy will not -/// wait, it will still copy data immediately. -/// This is to facilitate a usage model where a buffer is being used outside -/// of a run function, for example in a spawned thread, but data still needs -/// to be transferred to or from the buffer. -/// Additionally this means that if more than one DMA channel is enabled, -/// (See COIProcessConfigureDMA) operations to the same buffer may -/// happen in parallel if they can be assigned to different DMA hardware. -/// So it is highly recommended to use explicit event dependencies to -/// order operations where needed. -/// When a destroyed buffer (destination or source) is provided to the -/// function, then behavior is unspecified. -/// -/// @param in_DestBuffer -/// [in] Buffer to copy into. -/// -/// @param in_DestProcess -/// [in] A pointer to the process to which the data will be written. -/// Buffer is updated only in this process and invalidated in other -/// processes. Only a single process can be specified. -/// Can be left NULL and default behavior will be chosen, which -/// chooses the first valid process in which regions are found. Other -/// buffer regions are invalidated if not updated. -/// -/// @param in_SourceBuffer -/// [in] Buffer to copy from. -/// -/// @param in_DestOffset -/// [in] Location in the destination buffer to start writing to. -/// -/// @param in_SourceOffset -/// [in] Location in the source buffer to start reading from. -/// -/// @param in_Length -/// [in] The number of bytes to copy from in_SourceBuffer into -/// in_DestinationBuffer. -/// If the length is specified as zero then length to be copied -// is entire destination buffer's length. -/// Must not be larger than the size of in_SourceBuffer or -/// in_DestBuffer and must not over run in_SourceBuffer or -/// in_DestBuffer if offsets are specified. -/// -/// @param in_Type -/// [in] The type of copy operation to use, one of either -/// COI_COPY_UNSPECIFIED, COI_COPY_USE_DMA, COI_COPY_USE_CPU. -/// -/// @param in_NumDependencies -/// [in] The number of dependencies specified in the in_pDependencies -/// array. This may be 0 if the caller does not want the copy call to -/// wait for any additional events to be signaled before starting the -/// copy operation. -/// -/// @param in_pDependencies -/// [in] An optional array of handles to previously created COIEVENT -/// objects that this copy operation will wait for before starting. -/// This allows the user to create dependencies between buffer copy -/// calls and other operations such as run functions and map calls. The -/// user may pass in NULL if they do not wish to wait for any -/// additional dependencies to complete before doing the copy. -/// -/// @param out_pCompletion -/// [out] An optional event to be signaled when the copy has -/// completed. This event can be used as a dependency to order -/// the copy with regard to future operations. -/// If no completion event is passed in then the copy is -/// synchronous and will block until the transfer is complete. -/// -/// @return COI_SUCCESS if the buffer was copied successfully. -/// -/// @return COI_INVALID_HANDLE if either buffer handle was invalid. -/// -/// @return COI_MEMORY_OVERLAP if in_SourceBuffer and in_DestBuffer are the -/// same buffer(or have the same parent buffer) and the source and -/// destination regions overlap -/// -/// @return COI_OUT_OF_RANGE if in_DestOffset is is beyond the end of -/// in_DestBuffer -/// -/// @return COI_OUT_OF_RANGE if in_SourceOffset is beyond the end of -/// in_SourceBuffer. -/// -/// @return COI_OUT_OF_RANGE if in_DestOffset + in_Length exceeds the size of -/// the in_DestBuffer -/// -/// @return COI_OUT_OF_RANGE if in_SourceOffset + in_Length exceeds -/// the size of in_SourceBuffer. -/// -/// @return COI_ARGUMENT_MISMATCH if the in_pDependencies is non NULL but -/// in_NumDependencies is 0. -/// -/// @return COI_ARGUMENT_MISMATCH if in_pDependencies is NULL but -/// in_NumDependencies is not 0. -/// -/// @return COI_RETRY if in_DestBuffer or in_SourceBuffer are mapped and not -/// COI_BUFFER_OPENCL buffers. -/// -COIACCESSAPI -COIRESULT -COIBufferCopyEx( - COIBUFFER in_DestBuffer, - const COIPROCESS in_DestProcess, - COIBUFFER in_SourceBuffer, - uint64_t in_DestOffset, - uint64_t in_SourceOffset, - uint64_t in_Length, - COI_COPY_TYPE in_Type, - uint32_t in_NumDependencies, - const COIEVENT *in_pDependencies, - COIEVENT *out_pCompletion); - -////////////////////////////////////////////////////////////////////////////// -/// -/// Copy data between two buffers. It also allows copying within the same -/// buffer. For copy within the same buffer, if source and destination regions -/// overlap then this API returns error. -/// Please note that COIBufferCopy does not follow implicit buffer -/// dependencies. If a buffer is in use in a run function or has been added -/// to a process using COIBufferAddRef the call to COIBufferCopy will not -/// wait, it will still copy data immediately. -/// This is to facilitate a usage model where a buffer is being used outside -/// of a run function, for example in a spawned thread, but data still needs -/// to be transferred to or from the buffer. -/// Additionally this means that if more than one DMA channel is enabled, -/// (See COIProcessConfigureDMA) operations to the same buffer may -/// happen in parallel if they can be assigned to different DMA hardware. -/// So it is highly recommended to use explicit event dependencies to -/// order operations where needed. -/// When a destroyed buffer (destination or source) is provided to the -/// function, then behavior is unspecified. -/// -/// @param in_DestBuffer -/// [in] Buffer to copy into. -/// -/// @param in_SourceBuffer -/// [in] Buffer to copy from. -/// -/// @param in_DestOffset -/// [in] Location in the destination buffer to start writing to. -/// -/// @param in_SourceOffset -/// [in] Location in the source buffer to start reading from. -/// -/// @param in_Length -/// [in] The number of bytes to copy from in_SourceBuffer into -/// in_DestinationBuffer. -/// If the length is specified as zero then length to be copied -/// is entire destination buffer's length. -/// Must not be larger than the size of in_SourceBuffer or -/// in_DestBuffer and must not over run in_SourceBuffer or -/// in_DestBuffer if offsets are specified. -/// -/// @param in_Type -/// [in] The type of copy operation to use, one of either -/// COI_COPY_UNSPECIFIED, COI_COPY_USE_DMA, COI_COPY_USE_CPU. -/// -/// @param in_NumDependencies -/// [in] The number of dependencies specified in the in_pDependencies -/// array. This may be 0 if the caller does not want the copy call to -/// wait for any additional events to be signaled before starting the -/// copy operation. -/// -/// @param in_pDependencies -/// [in] An optional array of handles to previously created COIEVENT -/// objects that this copy operation will wait for before starting. -/// This allows the user to create dependencies between buffer copy -/// calls and other operations such as run functions and map calls. The -/// user may pass in NULL if they do not wish to wait for any -/// additional dependencies to complete before doing the copy. -/// -/// @param out_pCompletion -/// [out] An optional event to be signaled when the copy has -/// completed. This event can be used as a dependency to order -/// the copy with regard to future operations. -/// If no completion event is passed in then the copy is -/// synchronous and will block until the transfer is complete. -/// -/// @return COI_SUCCESS if the buffer was copied successfully. -/// -/// @return COI_INVALID_HANDLE if either buffer handle was invalid. -/// -/// @return COI_MEMORY_OVERLAP if in_SourceBuffer and in_DestBuffer are the -/// same buffer(or have the same parent buffer) and the source and -/// destination regions overlap -/// -/// @return COI_OUT_OF_RANGE if in_DestOffset is is beyond the end of -/// in_DestBuffer -/// -/// @return COI_OUT_OF_RANGE if in_SourceOffset is beyond the end of -/// in_SourceBuffer. -/// -/// @return COI_OUT_OF_RANGE if in_DestOffset + in_Length exceeds the size of -/// the in_DestBuffer -/// -/// @return COI_OUT_OF_RANGE if in_SourceOffset + in_Length exceeds -/// the size of in_SourceBuffer. -/// -/// @return COI_ARGUMENT_MISMATCH if the in_pDependencies is non NULL but -/// in_NumDependencies is 0. -/// -/// @return COI_ARGUMENT_MISMATCH if in_pDependencies is NULL but -/// in_NumDependencies is not 0. -/// -/// @return COI_RETRY if in_DestBuffer or in_SourceBuffer are mapped and not -/// COI_BUFFER_OPENCL buffers. -/// -COIACCESSAPI -COIRESULT -COIBufferCopy( - COIBUFFER in_DestBuffer, - COIBUFFER in_SourceBuffer, - uint64_t in_DestOffset, - uint64_t in_SourceOffset, - uint64_t in_Length, - COI_COPY_TYPE in_Type, - uint32_t in_NumDependencies, - const COIEVENT *in_pDependencies, - COIEVENT *out_pCompletion); - -////////////////////////////////////////////////////////////////////////////// -/// -/// This API allows an experienced Intel(R) Coprocessor Offload Infrastructure -/// (Intel(R) COI) developer to set where a COIBUFFER is -/// located and when the COIBUFFER's data is moved. This functionality is -/// useful when the developer knows when and where a buffer is going to be -/// accessed. It allows the data movement to happen sooner than if the -/// Intel(R) Coprocessor Offload Infrastructure (Intel(R) COI) -/// runtime tried to manage the buffer placement itself. The advantage of -/// this API is that the developer knows much more about their own -/// application's data access patterns and can therefore optimize the data -/// access to be much more efficient than the Intel(R)Coprocessor Offload -/// Infrastructure (Intel(R) COI) runtime. Using this API may yield better -/// memory utilization, lower latency and overall improved workload -/// throughput. -/// This API does respect implicit dependencies for buffer read/write hazards. -/// For example, if the buffer is being written in one COIPROCESS and the user -/// requests the buffer be placed in another COIPROCESS then this API will wait -/// for the first access to complete before moving the buffer. -/// This API is not required for program correctness. It is intended solely -/// for advanced Intel(R) Coprocessor Offload Infrastructure (Intel(R) COI) -/// developers who wish to fine tune their application performance -/// Cases where "a change in state" is an error condition the change just gets -/// ignored without any error. This is because the SetState can be a -/// nonblocking call and in such cases we can't rely on the state of the buffer -/// at the time of the call. We can do the transition checks only at the time -/// when the actual state change happens (which is something in future). -/// Currently there is no way to report an error from something that happens in -/// future and that is why such state transitions are nop. One example is using -/// VALID_MAY_DROP with COI_SINK_OWNERS when buffer is not valid at source. -/// This operation will be a nop if at the time of actual state change the -/// buffer is not valid at source. -/// -/// @param in_Buffer -/// [in] The buffer to modify. -/// -/// @param in_Process -/// [in] The process where the state is being modified for this -/// buffer. To modify buffer's state on source process use -/// COI_PROCESS_SOURCE as process handle. To modify buffer's -/// state on all processes where buffer is valid use COI_SINK_OWNERS -/// as the process handle. -/// -/// @param in_State -/// [in] The new state for the buffer. The buffer's state could be -/// set to invalid on one of the sink processes where it is being -/// used. -/// -/// @param in_DataMove -/// [in] A flag to indicate if the buffer's data should be moved -/// when the state is changed. For instance, a buffer's state may -/// be set to valid on a process and the data move flag may be set to -/// COI_BUFFER_MOVE which would cause the buffer contents to be -/// copied to the process where it is now valid. -/// -/// @param in_NumDependencies -/// [in] The number of dependencies specified in the in_pDependencies -/// array. This may be 0 if the caller does not want the SetState call -/// to wait for any additional events to be signaled before starting -/// this operation. -/// -/// @param in_pDependencies -/// [in] An optional array of handles to previously created COIEVENT -/// objects that this SetState operation will wait for before starting -/// This allows the user to create dependencies between buffer -/// SetState calls and other operations such as run functions and map -/// calls. The user may pass in NULL if they do not wish to wait for -/// any additional dependencies to complete before doing the SetState -/// -/// @param out_pCompletion -/// [out] An optional event to be signaled when the SetState has -/// completed. This event can be used as a dependency to order -/// the SetState with regard to future operations. -/// If no completion event is passed in then the state changing is -/// synchronous and will block until the SetState and dma transfers -/// related to this operation are complete. -/// -/// @return COI_SUCCESS if the buffer's state was changed successfully. -/// -/// @return COI_INVALID_HANDLE if in_Buffer or in_Process is invalid. -/// -/// @return COI_NOT_SUPPORTED if the in_Buffer is of any type other than -/// COI_BUFFER_NORMAL or COI_BUFFER_OPENCL. -/// -/// @return COI_ARGUMENT_MISMATCH if the in_State is COI_BUFFER_VALID_MAY_DROP -/// and the in_Process is COI_PROCESS_SOURCE. -/// -/// @return COI_ARGUMENT_MISMATCH if the in_Process is COI_SINK_OWNERS and the -/// COI_BUFFER_MOVE is passed as move flag. -/// -/// @return COI_MISSING_DEPENDENCY if buffer was not created on the process -/// handle that was passed in. -/// -COIACCESSAPI -COIRESULT -COIBufferSetState( - COIBUFFER in_Buffer, - COIPROCESS in_Process, - COI_BUFFER_STATE in_State, - COI_BUFFER_MOVE_FLAG in_DataMove, - uint32_t in_NumDependencies, - const COIEVENT *in_pDependencies, - COIEVENT *out_pCompletion); - -////////////////////////////////////////////////////////////////////////////// -/// -/// Creates a sub-buffer that is a reference to a portion of an existing -/// buffer. The returned buffer handle can be used in all API calls that the -/// original buffer handle could be used in except COIBufferCreateSubBuffer. -/// Sub buffers out of Huge Page Buffer are also supported but the original -/// buffer needs to be a OPENCL buffer created with COI_OPTIMIZE_HUGE_PAGE_SIZE -/// flag. -/// -/// When the sub-buffer is used only the corresponding sub-section of the -/// original buffer is used or affected. -/// -/// @param in_Buffer -/// [in] The original buffer that this new sub-buffer is a reference -/// to. -/// -/// @param in_Length -/// [in] The length of the sub-buffer in number of bytes. -/// -/// @param in_Offset -/// [in] Where in the original buffer to start this sub-buffer. -/// -/// @param out_pSubBuffer -/// [out] Pointer to a buffer handle that is filled in with the newly -/// created sub-buffer. -/// -/// @return COI_SUCCESS if the sub-buffer was created -/// -/// @return COI_INVALID_HANDLE if in_Buffer is not a valid buffer handle. -/// -/// @return COI_OUT_OF_RANGE if in_Length is zero, or if in_Offset + in_Length -/// is greater than the size of the original buffer. -/// -/// @return COI_OUT_OF_MEMORY if allocating the buffer fails. -/// -/// @return COI_INVALID_POINTER if the out_pSubBuffer pointer is NULL. -/// -/// @return COI_NOT_SUPPORTED if the in_Buffer is of any type other than -/// COI_BUFFER_OPENCL -/// -COIACCESSAPI -COIRESULT -COIBufferCreateSubBuffer( - COIBUFFER in_Buffer, - uint64_t in_Length, - uint64_t in_Offset, - COIBUFFER *out_pSubBuffer); - -////////////////////////////////////////////////////////////////////////////// -/// -/// Releases the reference count on the specified buffer and process by -/// in_ReleaseRefcnt. The returned result being COI_SUCCESS indicates that the -/// specified process contains a reference to the specified buffer that has a -/// refcnt that can be decremented. Otherwise, if the buffer or process -/// specified do not exist, then COI_INVALID_HANDLE will be returned. If the -/// process does not contain a reference to the specified buffer then -/// COI_OUT_OF_RANGE will be returned. -/// -/// -/// @param in_Process -/// [in] The COI Process whose reference count for the specified buffer -/// the user wants to decrement. -/// -/// @param in_Buffer -/// [in] The buffer used in the specified coi process in which the user -/// wants to decrement the reference count. -/// -/// @param in_ReleaseRefcnt -/// [in] The value the reference count will be decremented by. -/// -/// @return COI_SUCCESS if the reference count was successfully decremented. -/// -/// @return COI_INVALID_HANDLE if in_Buffer or in_Process are invalid handles. -/// -/// @return COI_OUT_OF_RANGE if the reference for the specified buffer or -/// process does not exist. -/// - -COIACCESSAPI -COIRESULT -COIBufferReleaseRefcnt( - COIPROCESS in_Process, - COIBUFFER in_Buffer, - uint64_t in_ReleaseRefcnt); - -////////////////////////////////////////////////////////////////////////////// -/// -/// Increments the reference count on the specified buffer and process by -/// in_AddRefcnt. The returned result being COI_SUCCESS indicates that the -/// specified process contains a reference to the specified buffer or a new -/// reference has been created and that reference has a new refcnt. Otherwise, -/// if the buffer or process specified do not exist, then COI_INVALID_HANDLE -/// will be returned. If the input buffer is not valid on the target process -/// then COI_NOT_INITIALIZED will be returned since the buffer is not current -/// or allocated on the process. -/// -/// @param in_Process -/// [in] The COI Process whose reference count for the specified buffer -/// the user wants to increment. -/// -/// @param in_Buffer -/// [in] The buffer used in the specified coi process in which the user -/// wants to increment the reference count. -/// -/// @param in_AddRefcnt -/// [in] The value the reference count will be incremented by. -/// -/// @return COI_SUCCESS if the reference count was successfully incremented. -/// -/// @return COI_INVALID_HANDLE if in_Buffer or in_Process are invalid handles. -/// -/// @return COI_NOT_INITIALIZED if in_Buffer does not have a buffer state of -/// COI_BUFFER_VALID on the in_Process. -/// -COIACCESSAPI -COIRESULT -COIBufferAddRefcnt( - COIPROCESS in_Process, - COIBUFFER in_Buffer, - uint64_t in_AddRefcnt); - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* _COIBUFFER_SOURCE_H */ - -/*! @} */ diff --git a/liboffloadmic/include/coi/source/COIEngine_source.h b/liboffloadmic/include/coi/source/COIEngine_source.h deleted file mode 100644 index d4f6c1b..0000000 --- a/liboffloadmic/include/coi/source/COIEngine_source.h +++ /dev/null @@ -1,273 +0,0 @@ -/* - * Copyright 2010-2016 Intel Corporation. - * - * This library is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, version 2.1. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301 USA. - * - * Disclaimer: The codes contained in these modules may be specific - * to the Intel Software Development Platform codenamed Knights Ferry, - * and the Intel product codenamed Knights Corner, and are not backward - * compatible with other Intel products. Additionally, Intel will NOT - * support the codes or instruction set in future products. - * - * Intel offers no warranty of any kind regarding the code. This code is - * licensed on an "AS IS" basis and Intel is not obligated to provide - * any support, assistance, installation, training, or other services - * of any kind. Intel is also not obligated to provide any updates, - * enhancements or extensions. Intel specifically disclaims any warranty - * of merchantability, non-infringement, fitness for any particular - * purpose, and any other warranty. - * - * Further, Intel disclaims all liability of any kind, including but - * not limited to liability for infringement of any proprietary rights, - * relating to the use of the code, even if Intel is notified of the - * possibility of such liability. Except as expressly stated in an Intel - * license agreement provided with this code and agreed upon with Intel, - * no license, express or implied, by estoppel or otherwise, to any - * intellectual property rights is granted herein. - */ - -#ifndef _COIENGINE_SOURCE_H -#define _COIENGINE_SOURCE_H - -/** @ingroup COIEngine - * @addtogroup COIEngineSource -@{ - -* @file source\COIEngine_source.h -*/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - #include <wchar.h> - #include "../common/COITypes_common.h" - #include "../common/COIResult_common.h" - #include "../common/COIEngine_common.h" -#endif // DOXYGEN_SHOULD_SKIP_THIS - -#ifdef __cplusplus -extern "C" { -#endif - -#define COI_MAX_DRIVER_VERSION_STR_LEN 255 - -#define COI_MAX_HW_THREADS 1024 - -/////////////////////////////////////////////////////////////////////////////// -/// This enum defines miscellaneous information returned from the -/// COIGetEngineInfo() function. -/// -typedef enum -{ - COI_ENG_ECC_DISABLED = 0, //ECC is not enabled on this engine - COI_ENG_ECC_ENABLED = 0x00000001, //ECC is enabled on this engine - COI_ENG_ECC_UNKNOWN = 0x00000002 //ECC is mode is unknown -} coi_eng_misc; - - -/////////////////////////////////////////////////////////////////////////////// -/// This structure returns information about an Intel(R) Xeon Phi(TM) -/// coprocessor. -/// A pointer to this structure is passed into the COIGetEngineInfo() function, -/// which fills in the data before returning to the caller. -/// -typedef struct COI_ENGINE_INFO -{ - /// The version string identifying the driver. - coi_wchar_t DriverVersion[COI_MAX_DRIVER_VERSION_STR_LEN]; - - /// The DeviceType supported by the engine. - COI_DEVICE_TYPE ISA; - - /// The number of cores on the engine. - uint32_t NumCores; - - /// Miscellaneous fields - coi_eng_misc MiscFlags; - - /// The number of hardware threads on the engine. - uint32_t NumThreads; - - /// The maximum frequency (in MHz) of the cores on the engine. - uint32_t CoreMaxFrequency; - - /// The load percentage for each of the hardware threads on the engine. - /// Currently this is limited to reporting out a maximum of 1024 HW threads - uint32_t Load[COI_MAX_HW_THREADS]; - - /// The amount of physical memory managed by the OS. - uint64_t PhysicalMemory; - - /// The amount of free physical memory in the OS. - uint64_t PhysicalMemoryFree; - - /// The amount of swap memory managed by the OS. - uint64_t SwapMemory; - - /// The amount of free swap memory in the OS. - uint64_t SwapMemoryFree; - - /// The pci config vendor id - uint16_t VendorId; - - /// The pci config device id - uint16_t DeviceId; - - /// The pci config subsystem id - uint16_t SubSystemId; - - /// The stepping of the board, A0, A1, C0, D0 etc. - uint16_t BoardStepping; - - /// The SKU of the stepping, EB, ED, etc. - uint16_t BoardSKU; -} COI_ENGINE_INFO; - -/////////////////////////////////////////////////////////////////////////////// -/// -/// Returns information related to a specified engine. Note that if the runtime -/// is unable to query a value it will be returned as zero but the call will -/// still succeed. -/// -/// -/// @param in_EngineHandle -/// [in] The COIENGINE structure as provided from COIEngineGetHandle() -/// which to query for device level information. -/// -/// @param in_EngineInfoSize -/// [in] The size of the structure that out_pEngineInfo points to. -/// Used for version safety of the function call. -/// -/// @param out_pEngineInfo -/// [out] The address of a user allocated COI_ENGINE_INFO structure. -/// Upon success, the contents of the structure will be updated -/// to contain information related to the specified engine. -/// -/// -/// @return COI_SUCCESS if the function completed without error. -/// -/// @return COI_INVALID_HANDLE if the in_EngineHandle handle is not valid. -/// -/// @return COI_SIZE_MISMATCH if in_EngineInfoSize does not match any current -/// or previous COI_ENGINE_INFO structure sizes. -/// -/// @return COI_INVALID_POINTER if the out_pEngineInfo pointer is NULL. -/// -COIACCESSAPI -COIRESULT -COIEngineGetInfo( - COIENGINE in_EngineHandle, - uint32_t in_EngineInfoSize, - COI_ENGINE_INFO *out_pEngineInfo); - - -/////////////////////////////////////////////////////////////////////////////// -/// -/// Returns the number of engines in the system that match the provided device type. -/// -/// The number of available coprocessor devices (i.e. cards connected via PCIe) -/// is detected by the COI runtime. -/// -/// @param in_DeviceType -/// [in] Specifies the ISA type of the engine requested. -/// -/// @param out_pNumEngines -/// [out] The number of engines available. This can be used to index -/// into the engines using COIEngineGetHandle(). -/// -/// @return COI_SUCCESS if the function completed without error. -/// -/// @return COI_DOES_NOT_EXIST if the in_DeviceType parameter is not valid. -/// -/// @return COI_INVALID_POINTER if the out_pNumEngines parameter is NULL. -/// -/// @return COI_OUT_OF_RANGE if number of selected devices is greater than 8. -/// -COIACCESSAPI -COIRESULT -COIEngineGetCount( - COI_DEVICE_TYPE in_DeviceType, - uint32_t *out_pNumEngines); - - -/////////////////////////////////////////////////////////////////////////////// -/// -/// Returns the handle of a user specified engine. -/// -/// @param in_DeviceType -/// [in] Specifies the ISA type of the engine requested. -/// -/// @param in_EngineIndex -/// [in] A unsigned integer which specifies the zero-based position of -/// the engine in a collection of engines. The makeup of this -/// collection is defined by the in_DeviceType parameter. -/// -/// @param out_pEngineHandle -/// [out] The address of a COIENGINE handle. -/// -/// @return COI_SUCCESS if the function completed without error. -/// -/// @return COI_DOES_NOT_EXIST if the in_DeviceType parameter is not valid. -/// -/// @return COI_OUT_OF_RANGE if in_EngineIndex is greater than or equal to -/// the number of engines that match the in_DeviceType parameter. -/// -/// @return COI_INVALID_POINTER if the out_pEngineHandle parameter is NULL. -/// -/// @return COI_VERSION_MISMATCH if the version of Intel(R) Coprocessor Offload -/// Infrastructure (Intel(R) COI) on the host is not -/// compatible with the version on the device. -/// -/// @return COI_NOT_INITIALIZED if the engine requested exists but is offline. -/// -COIACCESSAPI -COIRESULT -COIEngineGetHandle( - COI_DEVICE_TYPE in_DeviceType, - uint32_t in_EngineIndex, - COIENGINE *out_pEngineHandle); - -/////////////////////////////////////////////////////////////////////////////// -/// -/// Returns the hostname for a specified COIEngine. -/// -/// @param in_EngineHandle -/// [in] The connected COI Engine Handle passed in by the user that is -/// used to request the hostname of the device connected by this COIEngine. -/// -/// @param out_Hostname -/// [out] The hostname of the device connected by this COIEngine. -/// COI will write at most 4096 bytes and the user must make sure that the size -/// of the memory pointed by this argument is large enough. -/// -/// @return COI_SUCCESS if the hostname was retrieved without error. -/// -/// @return COI_ERROR if the function was unable to retrieve the hostname and/or -/// the retrieved out_Hostname is NULL. -/// -/// @return COI_INVALID_HANDLE if the in_EngineHandle is invalid. -/// -/// @return COI_INVALID_POINTER if the out_Hostname is NULL. -/// -COIACCESSAPI -COIRESULT -COIEngineGetHostname( - COIENGINE in_EngineHandle, - char *out_Hostname); - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* _COIENGINE_SOURCE_H */ - -/*! @} */ diff --git a/liboffloadmic/include/coi/source/COIEvent_source.h b/liboffloadmic/include/coi/source/COIEvent_source.h deleted file mode 100644 index 8c6ad25..0000000 --- a/liboffloadmic/include/coi/source/COIEvent_source.h +++ /dev/null @@ -1,301 +0,0 @@ -/* - * Copyright 2010-2016 Intel Corporation. - * - * This library is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, version 2.1. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301 USA. - * - * Disclaimer: The codes contained in these modules may be specific - * to the Intel Software Development Platform codenamed Knights Ferry, - * and the Intel product codenamed Knights Corner, and are not backward - * compatible with other Intel products. Additionally, Intel will NOT - * support the codes or instruction set in future products. - * - * Intel offers no warranty of any kind regarding the code. This code is - * licensed on an "AS IS" basis and Intel is not obligated to provide - * any support, assistance, installation, training, or other services - * of any kind. Intel is also not obligated to provide any updates, - * enhancements or extensions. Intel specifically disclaims any warranty - * of merchantability, non-infringement, fitness for any particular - * purpose, and any other warranty. - * - * Further, Intel disclaims all liability of any kind, including but - * not limited to liability for infringement of any proprietary rights, - * relating to the use of the code, even if Intel is notified of the - * possibility of such liability. Except as expressly stated in an Intel - * license agreement provided with this code and agreed upon with Intel, - * no license, express or implied, by estoppel or otherwise, to any - * intellectual property rights is granted herein. - */ - -#ifndef _COIEVENT_SOURCE_H -#define _COIEVENT_SOURCE_H - -/** @ingroup COIEvent - * @addtogroup COIEventSource -@{ -* @file source/COIEvent_source.h -*/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -#include "../common/COITypes_common.h" -#include "../common/COIResult_common.h" - -#ifdef __cplusplus -extern "C" { -#endif -#endif // DOXYGEN_SHOULD_SKIP_THIS -/////////////////////////////////////////////////////////////////////////////// -/// -/// Special case event values which can be passed in to APIs to specify -/// how the API should behave. In COIBuffer APIs passing in NULL for the -/// completion event is the equivalent of passing COI_EVENT_SYNC. -/// Note that passing COI_EVENT_ASYNC can be used when the caller wishes the -/// operation to be performed asynchronously but does not care when the -/// operation completes. This can be useful for operations that by definition -/// must complete in order (DMAs, run functions on a single pipeline). If -/// the caller does care when the operation completes then they should pass -/// in a valid completion event which they can later wait on. -/// -#define COI_EVENT_ASYNC ((COIEVENT*)1) -#define COI_EVENT_SYNC ((COIEVENT*)2) - -////////////////////////////////////////////////////////////////////////////// -/// -/// This can be used to initialize a COIEVENT to a known invalid state. -/// This is not required to use, but can be useful in some cases -/// if a program is unsure if the event will be initialized by the runtime. -/// Simply set the event to this value: COIEVENT event = COI_EVENT_INITIALIZER; -/// -#define COI_EVENT_INITIALIZER { { 0, -1 } } - - -/////////////////////////////////////////////////////////////////////////////// -/// -/// Wait for an arbitrary number of COIEVENTs to be signaled as completed, -/// eg when the run function or asynchronous map call associated with an event -/// has finished execution. -/// If the user sets in_WaitForAll = True and not all of the events are -/// signaled when the timeout period is reached then COI_TIME_OUT_REACHED will -/// be returned. -/// If the user sets in_WaitForAll = False then if at least one event is -/// signaled when the timeout is reached then COI_SUCCESS is returned. -/// -/// @param in_NumEvents -/// [in] The number of events to wait for. -/// -/// @param in_pEvents -/// [in] The array of COIEVENT handles to wait for. -/// -/// @param in_Timeout -/// [in] The time in milliseconds to wait for the event. 0 polls -/// and returns immediately, -1 blocks indefinitely. -/// -/// @param in_WaitForAll -/// [in] Boolean value specifying behavior. If true, wait for all -/// events to be signaled, or for timeout, whichever happens first. -/// If false, return when any event is signaled, or at timeout. -/// -/// @param out_pNumSignaled -/// [out] The number of events that were signaled. If in_NumEvents -/// is 1 or in_WaitForAll = True, this parameter is optional. -/// -/// @param out_pSignaledIndices -/// [out] Pointer to an array of indices into the original event -/// array. Those denoted have been signaled. The user must provide an -/// array that is no smaller than the in_Events array. If in_NumEvents -/// is 1 or in_WaitForAll = True, this parameter is optional. -/// -/// @return COI_SUCCESS once an event has been signaled completed. -/// -/// @return COI_TIME_OUT_REACHED if the events are still in use when the -/// timeout is reached or timeout is zero (a poll). -/// -/// @return COI_OUT_OF_RANGE if a negative value other than -1 is passed in to -/// the in_Timeout parameter. -/// -/// @return COI_OUT_OF_RANGE if in_NumEvents is 0. -/// -/// @return COI_INVALID_POINTER if in_pEvents is NULL. -/// -/// @return COI_ARGUMENT_MISMATCH if in_NumEvents > 1 and if in_WaitForAll -/// is not true and out_pSignaled or out_pSignaledIndicies are NULL. -/// -/// @return COI_ARGUMENT_MISMATCH if out_pNumSignaled is not NULL -/// and out_pSignaledIndices is NULL (or vice versa). -/// -/// @return COI_EVENT_CANCELED if while waiting on a user event, it gets -/// unregistered this returns COI_EVENT_CANCELED -/// -/// @return COI_PROCESS_DIED if the remote process died. See COIProcessDestroy -/// for more details. -/// -/// @return COI_<REAL ERROR> if only a single event is passed in, and that event -/// failed, COI will attempt to return the real error code that caused -/// the original operation to fail, otherwise COI_PROCESS_DIED is reported. -/// -COIACCESSAPI -COIRESULT -COIEventWait( - uint16_t in_NumEvents, - const COIEVENT *in_pEvents, - int32_t in_TimeoutMilliseconds, - uint8_t in_WaitForAll, - uint32_t *out_pNumSignaled, - uint32_t *out_pSignaledIndices); - - - -/////////////////////////////////////////////////////////////////////////////// -/// -/// Register a User COIEVENT so that it can be fired. Registered event is -/// a one shot User event; in other words once signaled it cannot be used -/// again for signaling. You have to unregister and register again to enable -/// signaling. An event will be reset if it is re-registered without -/// unregistering, resulting in loss of all outstanding signals. -/// -/// @param out_pEvent -/// [out] Pointer to COIEVENT handle being Registered -/// -/// @return COI_SUCCESS an event is successfully registered -/// -/// @return COI_INVALID_POINTER if out_pEvent is NULL -/// -COIACCESSAPI -COIRESULT -COIEventRegisterUserEvent( - COIEVENT *out_pEvent); - - -/////////////////////////////////////////////////////////////////////////////// -/// -/// Unregister a User COIEVENT. Unregistering a unsignaled event is similar -/// to firing an event. Except Calling COIEventWait on an event that is -/// being unregistered returns COI_EVENT_CANCELED -/// -/// @param in_Event -/// [in] Event Handle to be unregistered. -/// -/// @return COI_INVALID_HANDLE if in_Event is not a UserEvent -/// -/// @return COI_SUCCESS if an event is successfully unregistered -/// -COIACCESSAPI -COIRESULT -COIEventUnregisterUserEvent( - COIEVENT in_Event); - - -////////////////////////////////////////////////////////////////////////////// -/// -/// A callback that will be invoked to notify the user of an internal -/// runtime event completion. -/// -/// As with any callback mechanism it is up to the user to make sure that -/// there are no possible deadlocks due to reentrancy (ie the callback being -/// invoked in the same context that triggered the notification) and also -/// that the callback does not slow down overall processing. If the user -/// performs too much work within the callback it could delay further -/// processing. The callback will be invoked prior to the signaling of -/// the corresponding COIEvent. For example, if a user is waiting -/// for a COIEvent associated with a run function completing they will -/// receive the callback before the COIEvent is marked as signaled. -/// -/// @param in_Event -/// [in] The completion event that is associated with the -/// operation that is being notified. -/// -/// @param in_Result -/// [in] The COIRESULT of the operation. -/// -/// @param in_UserData -/// [in] Opaque data that was provided when the callback was -/// registered. Intel(R) Coprocessor Offload Infrastructure -/// (Intel(R) COI) simply passes this back to the user so that -/// they can interpret it as they choose. -/// -typedef void (*COI_EVENT_CALLBACK)( - COIEVENT in_Event, - const COIRESULT in_Result, - const void *in_UserData); - - - -////////////////////////////////////////////////////////////////////////////// -/// -/// Registers any COIEVENT to receive a one time callback, when the event -/// is marked complete in the offload runtime. If the event has completed -/// before the COIEventRegisterCallback() is called then the callback will -/// immediately be invoked by the calling thread. When the event is -/// registered before the event completes, the runtime gaurantees that -/// the callback will be invoked before COIEventWait() is notified of -/// the same event completing. In well written user code, this may provide -/// a slight performance advantage. -/// -/// Users should treat the callback much like an interrupt routine, in regards -/// of performance. Specifically designing the callback to be as short and -/// non blocking as possible. Since the thread that runs the callback is -/// non deterministic blocking or stalling of the callback, may have severe -/// performance impacts on the offload runtime. Thus, it is important to not -/// create deadlocks between the callback and other signaling/waiting -/// mechanisms. It is recommended to never invoke COIEventWait() inside -/// a callback function, as this could lead to immediate deadlocks. -/// -/// It is important to note that the runtime cannot distinguish between -/// already triggered events and invalid events. Thus the user needs to pass -/// in a valid event, or the callback will be invoked immediately. -/// Failed events will still receive a callback and the user can query -/// COIEventWait() after the callback for the failed return code. -/// -/// If more than one callback is registered for the same event, only the -/// single most current callback will be used, i.e. the older one will -/// be replaced. -/// -/// @param in_Event -/// [in] A valid single event handle to be registered to receive a callback. -/// -/// @param in_Callback -/// [in] Pointer to a user function used to signal an -/// event completion. -/// -/// @param in_UserData -/// [in] Opaque data to pass to the callback when it is invoked. -/// -/// @param in_Flags -/// [in] Reserved parameter for future expansion, required to be zero for now. -/// -/// @return COI_INVALID_HANDLE if in_Event is not a valid COIEVENT -/// -/// @return COI_INVALID_HANDLE if in_Callback is not a valid pointer. -/// -/// @return COI_ARGUMENT_MISMATCH if the in_Flags is not zero. -/// -/// @return COI_SUCCESS an event is successfully registered -/// -COIACCESSAPI -COIRESULT -COIEventRegisterCallback( - const COIEVENT in_Event, - COI_EVENT_CALLBACK in_Callback, - const void *in_UserData, - const uint64_t in_Flags); - - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* _COIEVENT_SOURCE_H */ - -/*! @} */ diff --git a/liboffloadmic/include/coi/source/COIPipeline_source.h b/liboffloadmic/include/coi/source/COIPipeline_source.h deleted file mode 100644 index c13404d..0000000 --- a/liboffloadmic/include/coi/source/COIPipeline_source.h +++ /dev/null @@ -1,437 +0,0 @@ -/* - * Copyright 2010-2016 Intel Corporation. - * - * This library is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, version 2.1. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301 USA. - * - * Disclaimer: The codes contained in these modules may be specific - * to the Intel Software Development Platform codenamed Knights Ferry, - * and the Intel product codenamed Knights Corner, and are not backward - * compatible with other Intel products. Additionally, Intel will NOT - * support the codes or instruction set in future products. - * - * Intel offers no warranty of any kind regarding the code. This code is - * licensed on an "AS IS" basis and Intel is not obligated to provide - * any support, assistance, installation, training, or other services - * of any kind. Intel is also not obligated to provide any updates, - * enhancements or extensions. Intel specifically disclaims any warranty - * of merchantability, non-infringement, fitness for any particular - * purpose, and any other warranty. - * - * Further, Intel disclaims all liability of any kind, including but - * not limited to liability for infringement of any proprietary rights, - * relating to the use of the code, even if Intel is notified of the - * possibility of such liability. Except as expressly stated in an Intel - * license agreement provided with this code and agreed upon with Intel, - * no license, express or implied, by estoppel or otherwise, to any - * intellectual property rights is granted herein. - */ - -#ifndef _COIPIPELINE_SOURCE_H -#define _COIPIPELINE_SOURCE_H - -/** @ingroup COIPipeline - * @addtogroup COIPipelineSource -@{ -* @file source/COIPipeline_source.h -*/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -#include "../common/COITypes_common.h" -#include "../common/COIResult_common.h" - -#ifdef __cplusplus -extern "C" { -#endif -#endif // DOXYGEN_SHOULD_SKIP_THIS - - - -////////////////////////////////////////////////////////////////////////////// -/// These flags specify how a buffer will be used within a run function. They -/// allow the runtime to make optimizations in how it moves the data around. -/// These flags can affect the correctness of an application, so they must be -/// set properly. For example, if a buffer is used in a run function with the -/// COI_SINK_READ flag and then mapped on the source, the runtime may use a -/// previously cached version of the buffer instead of retrieving data from -/// the sink. -typedef enum COI_ACCESS_FLAGS -{ - /// Specifies that the run function will only read the associated buffer. - COI_SINK_READ = 1, - - /// Specifies that the run function will write to the associated buffer. - COI_SINK_WRITE, - - /// Specifies that the run function will overwrite the entire associated - /// buffer and therefore the buffer will not be synchronized with the - /// source before execution. - COI_SINK_WRITE_ENTIRE, - - /// Specifies that the run function will only read the associated buffer - /// and will maintain the reference count on the buffer after - /// run function exit. - COI_SINK_READ_ADDREF, - - /// Specifies that the run function will write to the associated buffer - /// and will maintain the reference count on the buffer after - /// run function exit. - COI_SINK_WRITE_ADDREF, - - /// Specifies that the run function will overwrite the entire associated - /// buffer and therefore the buffer will not be synchronized with the - /// source before execution and will maintain the reference count on the - /// buffer after run function exit. - COI_SINK_WRITE_ENTIRE_ADDREF -} COI_ACCESS_FLAGS; - -#define COI_PIPELINE_MAX_PIPELINES 512 -#define COI_PIPELINE_MAX_IN_BUFFERS 16384 -#define COI_PIPELINE_MAX_IN_MISC_DATA_LEN 32768 - - -/////////////////////////////////////////////////////////////////////////////// -/// -/// Create a pipeline associated with a remote process. This pipeline can -/// then be used to execute remote functions and to share data using -/// COIBuffers. -/// -/// @param in_Process -/// [in] A handle to an already existing process that the pipeline -/// will be associated with. -/// -/// @param in_Mask -/// [in] An optional mask of the set of hardware threads on which the -/// sink pipeline command processing thread could run. -/// -/// @param in_StackSize -/// [in] An optional value that will be used when the pipeline -/// processing thread is created on the sink. If the user passes in -/// 0 the OS default stack size will be used. Otherwise the value -/// must be PTHREAD_STACK_MIN (16384) bytes or larger and must be -/// a multiple of a page (4096 bytes). -/// -/// @param out_pPipeline -/// [out] Handle returned to uniquely identify the pipeline that was -/// created for use in later API calls. -/// -/// -/// @return COI_SUCCESS if the pipeline was successfully created. -/// -/// @return COI_INVALID_HANDLE if the in_Process handle passed in was invalid. -/// -/// @return COI_INVALID_POINTER if the out_pPipeline pointer was NULL. -/// -/// @return COI_RESOURCE_EXHAUSTED if no more COIPipelines can be created. The -/// maximum number of pipelines allowed is COI_PIPELINE_MAX_PIPELINES. -/// It is recommended in most cases to not exceed the number of CPU's -/// that are reported on the offload device, performance will suffer. -/// -/// -/// @return COI_OUT_OF_RANGE if the in_StackSize > 0 && -/// in_StackSize < PTHREAD_STACK_MIN or if in_StackSize is not a -/// multiple of a page (4096 bytes). -/// -/// @return COI_OUT_OF_RANGE if the in_Mask is set to all zeroes. If no mask -/// is desired then the in_Mask should be passed as NULL, otherwise -/// at least one thread must be set. -/// -/// @return COI_TIME_OUT_REACHED if establishing the communication channel with -/// the remote pipeline timed out. -/// -/// @return COI_RETRY if the pipeline cannot be created due to the number of -/// source-to-sink connections in use. A subsequent call to -/// COIPipelineCreate may succeed if resources are freed up. -/// -/// @return COI_PROCESS_DIED if in_Process died. -/// -COIACCESSAPI -COIRESULT -COIPipelineCreate( - COIPROCESS in_Process, - COI_CPU_MASK in_Mask, - uint32_t in_StackSize, - COIPIPELINE *out_pPipeline); - -/////////////////////////////////////////////////////////////////////////////// -/// -/// Destroys the indicated pipeline, releasing its resources. -/// -/// @param in_Pipeline -/// [in] Pipeline to destroy. -/// -/// -/// @return COI_SUCCESS if the pipeline was destroyed -/// -COIACCESSAPI -COIRESULT -COIPipelineDestroy( - COIPIPELINE in_Pipeline); - - -////////////////////////////////////////////////////////////////////////////// -/// -/// Enqueues a function in the remote process binary to be executed. The -/// function execution is asynchronous in regards to the Source and all -/// run functions enqueued on a pipeline are executed in-order. The run -/// function will only execute when all of the required buffers are present -/// in the Sink's memory. -/// -/// Potential Hazards while using Runfunctions: -/// -/// 1. Proper care has to be taken while setting the input dependencies for -/// RunFunctions. Setting it incorrectly can lead to cyclic dependencies -/// and can cause the respective pipeline to stall. -/// 2. RunFunctions can also segfault if enough memory space is not available -/// on the sink for the buffers passed in. Buffers that are AddRef'd -/// need to be accounted for available memory space. In other -/// words, this memory is not available for use until it is freed up. -/// 3. Unexpected segmentation faults or erroneous behavior can occur if -/// handles or data passed in to Runfunction gets destroyed before the -/// RunFunction finishes. -/// For example, if a variable passed in as Misc data or the buffer gets -/// destroyed before the runtime receives the completion notification -/// of the Runfunction, it can cause unexpected behavior. So it is always -/// recommended to wait for RunFunction completion event before any related -/// destroy event occurs. -/// -/// The runtime expects users to handle such scenarios. COIPipelineRunFunction -/// returns COI_SUCCESS for above cases because it was queued up successfully. -/// Also if you try to destroy a pipeline with a stalled function then the -/// destroy call will hang. COIPipelineDestroy waits until all the functions -/// enqueued are finished executing. -/// -/// @param in_Pipeline -/// [in] Handle to a previously created pipeline that this run -/// function should be enqueued to. -/// -/// @param in_Function -/// [in] Previously returned handle from a call to -/// COIPipelineGetFunctionHandle() that represents a function in the -/// application running on the Sink process. -/// -/// @param in_NumBuffers -/// [in] The number of buffers that are being passed to the run -/// function. This number must match the number of buffers in the -/// in_pBuffers and in_pBufferAccessFlags arrays. Must be less than -/// COI_PIPELINE_MAX_IN_BUFFERS. -/// -/// @param in_pBuffers -/// [in] An array of COIBUFFER handles that the function is expected -/// to use during its execution. Each buffer when it arrives at the -/// Sink process will be at least 4k page aligned, thus, using a very -/// large number of small buffers is memory inefficient and should be -/// avoided. -/// -/// @param in_pBufferAccessFlags -/// [in] An array of flag values which correspond to the buffers -/// passed in the in_pBuffers parameter. These flags are used to -/// track dependencies between different run functions being -/// executed from different pipelines. -/// -/// @param in_NumDependencies -/// [in] The number of dependencies specified in the in_pDependencies -/// array. This may be 0 if the caller does not want the run function -/// to wait for any dependencies. -/// -/// @param in_pDependencies -/// [in] An optional array of COIEVENT objects that this run -/// function will wait for before executing. This allows the user to -/// create dependencies between run functions in different pipelines. -/// The user may pass in NULL if they do not wish to wait for any -/// dependencies to complete. -/// -/// @param in_pMiscData -/// [in] Pointer to user defined data, typically used to pass -/// parameters to Sink side functions. Should only be used for small -/// amounts data since the data will be placed directly in the -/// Driver's command buffer. COIBuffers should be used to pass large -/// amounts of data. -/// -/// @param in_MiscDataLen -/// [in] Size of the in_pMiscData in bytes. Must be less than -/// COI_PIPELINE_MAX_IN_MISC_DATA_LEN, and should usually be much -/// smaller, see documentation for the parameter in_pMiscData. -/// -/// @param out_pAsyncReturnValue -/// [out] Pointer to user-allocated memory where the return value from -/// the run function will be placed. This memory should not be read -/// until out_pCompletion has been signaled. -/// -/// @param in_AsyncReturnValueLen -/// [in] Size of the out_pAsyncReturnValue in bytes. -/// -/// @param out_pCompletion -/// [out] An optional pointer to a COIEVENT object -/// that will be signaled when this run function has completed -/// execution. The user may pass in NULL if they wish for this function -/// to be synchronous, otherwise if a COIEVENT object is passed in the -/// function is then asynchronous and closes after enqueuing the -/// RunFunction and passes back the COIEVENT that will be signaled -/// once the RunFunction has completed. -/// -/// @return COI_SUCCESS if the function was successfully placed in a -/// pipeline for future execution. Note that the actual -/// execution of the function will occur in the future. -/// -/// @return COI_OUT_OF_RANGE if in_NumBuffers is greater than -/// COI_PIPELINE_MAX_IN_BUFFERS or if in_MiscDataLen is greater than -/// COI_PIPELINE_MAX_IN_MISC_DATA_LEN. -/// -/// @return COI_INVALID_HANDLE if the pipeline handle passed in was invalid. -/// -/// @return COI_INVALID_HANDLE if the function handle passed in was invalid. -/// -/// @return COI_INVALID_HANDLE if any of the buffers passed in are invalid. -/// -/// @return COI_ARGUMENT_MISMATCH if in_NumDependencies is non-zero while -/// in_pDependencies was passed in as NULL. -/// -/// @return COI_ARGUMENT_MISMATCH if in_pDependencies is non-NULL but -/// in_NumDependencies is zero. -/// -/// @return COI_ARGUMENT_MISMATCH if in_MiscDataLen is non-zero while -/// in_pMiscData was passed in as NULL. -/// -/// @return COI_ARGUMENT_MISMATCH if in_pMiscData is non-NULL but -/// in_MiscDataLen is zero. -/// -/// @return COI_ARGUMENT_MISMATCH if in_NumBuffers is non-zero and in_pBuffers -/// or in_pBufferAccessFlags are NULL. -/// -/// @return COI_ARGUMENT_MISMATCH if in_pBuffers is non-NULL but -/// in_NumBuffers is zero. -/// -/// @return COI_ARGUMENT_MISMATCH if in_pBufferAccessFlags is non-NULL but -/// in_NumBuffers is zero. -/// -/// @return COI_ARGUMENT_MISMATCH if in_ReturnValueLen is non-zero while -/// in_pReturnValue was passed in as NULL. -/// -/// @return COI_ARGUMENT_MISMATCH if in_pReturnValue is non-NULL but -/// in_ReturnValueLen is zero. -/// -/// @return COI_RETRY if any input buffers are still mapped when -/// passed to the run function. -/// -/// @return COI_MISSING_DEPENDENCY if buffer was not created on the process -/// associated with the pipeline that was passed in. -/// -/// @return COI_OUT_OF_RANGE if any of the access flags in -/// in_pBufferAccessFlags is not a valid COI_ACCESS_FLAGS. -/// -COIACCESSAPI -COIRESULT -COIPipelineRunFunction( - COIPIPELINE in_Pipeline, - COIFUNCTION in_Function, - uint32_t in_NumBuffers, - const COIBUFFER *in_pBuffers, - const COI_ACCESS_FLAGS *in_pBufferAccessFlags, - uint32_t in_NumDependencies, - const COIEVENT *in_pDependencies, - const void *in_pMiscData, - uint16_t in_MiscDataLen, - void *out_pAsyncReturnValue, - uint16_t in_AsyncReturnValueLen, - COIEVENT *out_pCompletion); - - -////////////////////////////////////////////////////////////////////////////// -/// -/// Retrieve the engine that the pipeline is associated with. -/// -/// @param in_Pipeline -/// [in] Pipeline to query. -/// -/// @param out_pEngine -/// [out] The handle of the Engine. -/// -/// @return COI_SUCCESS if the engine was retrieved. -/// -/// @return COI_INVALID_HANDLE if the pipeline handle passed in was invalid. -/// -/// @return COI_INVALID_POINTER if the out_pEngine parameter is NULL. -/// -/// @return COI_PROCESS_DIED if the process associated with this engine died. -/// -COIACCESSAPI -COIRESULT -COIPipelineGetEngine( - COIPIPELINE in_Pipeline, - COIENGINE *out_pEngine); - -////////////////////////////////////////////////////////////////////////////// -/// -/// Add a particular core:thread pair to a COI_CPU_MASK. -/// -/// @param in_Process -/// [in] A handle to an already existing process that the pipeline -/// will be associated with. -/// -/// @param in_CoreID -/// [in] Core to affinitize to; must be less than the number of cores -/// on the device. -/// -/// @param in_ThreadID -/// [in] Thread on the core to affinitize to (0 - 3). -/// -/// @param out_pMask -/// [out] Pointer to the mask to set. -/// -/// @warning Unless it is explicitly done, the contents of the mask may not -/// be zero when creating or declaring a COI_CPU_MASK variable. -/// -/// @return COI_SUCCESS if the mask was set. -/// -/// @return COI_OUT_OF_RANGE if the in_CoreID or in_ThreadID is out of range. -/// -/// @return COI_INVALID_POINTER if out_pMask is invalid. -/// -/// @return COI_INVALID_HANDLE if in_Process is invalid. -/// -COIACCESSAPI -COIRESULT -COIPipelineSetCPUMask( - COIPROCESS in_Process, - uint32_t in_CoreID, - uint8_t in_ThreadID, - COI_CPU_MASK *out_pMask); - -////////////////////////////////////////////////////////////////////////////// -/// -/// Clears a given mask. Note that the memory contents of COI_CPU_MASK are not -/// guaranteed to be zero when declaring a COI_CPU_MASK variable. Thus, prior -/// to setting a specific affinity to in_Mask it is important to call this -/// function first. -/// -/// @param in_Mask -/// [in] Pointer to the mask to clear. -/// -/// @return COI_SUCCESS if the mask was cleared. -/// -/// @return COI_INVALID_POINTER if in_Mask is invalid. -/// -COIACCESSAPI -COIRESULT -COIPipelineClearCPUMask( - COI_CPU_MASK *in_Mask); - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* _COIPIPELINE_SOURCE_H */ - -/*! @} */ diff --git a/liboffloadmic/include/coi/source/COIProcess_source.h b/liboffloadmic/include/coi/source/COIProcess_source.h deleted file mode 100644 index 1248a91..0000000 --- a/liboffloadmic/include/coi/source/COIProcess_source.h +++ /dev/null @@ -1,1235 +0,0 @@ -/* - * Copyright 2010-2016 Intel Corporation. - * - * This library is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, version 2.1. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301 USA. - * - * Disclaimer: The codes contained in these modules may be specific - * to the Intel Software Development Platform codenamed Knights Ferry, - * and the Intel product codenamed Knights Corner, and are not backward - * compatible with other Intel products. Additionally, Intel will NOT - * support the codes or instruction set in future products. - * - * Intel offers no warranty of any kind regarding the code. This code is - * licensed on an "AS IS" basis and Intel is not obligated to provide - * any support, assistance, installation, training, or other services - * of any kind. Intel is also not obligated to provide any updates, - * enhancements or extensions. Intel specifically disclaims any warranty - * of merchantability, non-infringement, fitness for any particular - * purpose, and any other warranty. - * - * Further, Intel disclaims all liability of any kind, including but - * not limited to liability for infringement of any proprietary rights, - * relating to the use of the code, even if Intel is notified of the - * possibility of such liability. Except as expressly stated in an Intel - * license agreement provided with this code and agreed upon with Intel, - * no license, express or implied, by estoppel or otherwise, to any - * intellectual property rights is granted herein. - */ - -#ifndef _COIPROCESS_SOURCE_H -#define _COIPROCESS_SOURCE_H - -/** @ingroup COIProcess - * @addtogroup COIProcessSource -@{ -* @file source/COIProcess_source.h -*/ -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -#include "../common/COITypes_common.h" -#include "../common/COIResult_common.h" - -#ifdef __cplusplus -extern "C" { -#endif -#endif // DOXYGEN_SHOULD_SKIP_THIS - - -/////////////////////////////////////////////////////////////////////////////// -/// This is a special COIPROCESS handle that can be used to indicate that -/// the source process should be used for an operation. -/// -#define COI_PROCESS_SOURCE ((COIPROCESS)-1) - -#define COI_MAX_FILE_NAME_LENGTH 256 - -/////////////////////////////////////////////////////////////////////////////// -/// This is a flag for COIProcessCreateFromMemory that indicates the passed in -/// memory pointer is a fat binary file and should not have regular validation. -/// -#define COI_FAT_BINARY ((uint64_t)-1) - -/////////////////////////////////////////////////////////////////////////////// -/// -/// Create a remote process on the Sink and start executing its main() -/// function. -/// -/// For more details about creating a process see COIProcessCreateFromMemory. -/// -/// @param in_Engine -/// [in] A handle retrieved via a call to COIEngineGetHandle() that -/// indicates which device to create the process on. This is -/// necessary because there can be more than one device -/// within the system. -/// -/// @param in_pBinaryName -/// [in] Pointer to a null-terminated string that contains the -/// path to the program binary to be instantiated as a process on -/// the sink device. The file name will be accessed via -/// fopen and fread, as such, the passed in binary name must -/// be locatable via these commands. Also, the file name (without -/// directory information) will be used automatically by the system -/// to create the argv[0] of the new process. -/// -/// @param in_Argc -/// [in] The number of arguments being passed in to the process in the -/// in_ppArgv parameter. -/// -/// @param in_ppArgv -/// [in] An array of strings that represent the arguments being passed -/// in. The system will auto-generate argv[0] using in_pBinaryName and -/// thus that parameter cannot be passed in using in_ppArgv. Instead, -/// in_ppArgv contains the rest of the parameters being passed in. -/// -/// @param in_DupEnv -/// [in] A boolean that indicates whether the process that is being -/// created should inherit the environment of the caller. -/// -/// @param in_ppAdditionalEnv -/// [in] An array of strings that represent additional environment -/// variables. This parameter must terminate the array with a NULL -/// string. For convenience it is also allowed to be NULL if there are -/// no additional environment variables that need adding. Note that -/// any environment variables specified here will be in addition to -/// but override those that were inherited via in_DupEnv. -/// -/// @param in_ProxyActive -/// [in] A boolean that specifies whether the process that is to be -/// created wants I/O proxy support. If this flag is enabled, then -/// stdout and stderr are forwarded back to the calling process's -/// output and error streams. -/// -/// @param in_Reserved -/// Reserved for future use, best set at NULL. -/// -/// @param in_InitialBufferSpace -/// [in] The initial memory (in bytes) that will be pre-allocated at -/// process creation for use by buffers associated with this remote -/// process. In addition to allocating, Intel(R) Coprocessor Offload -/// Infrastructure (Intel(R) COI) will also fault in the -/// memory during process creation. If the total size of the buffers -/// in use by this process exceed this initial size, memory on the -/// sink may continue to be allocated on demand, as needed, subject -/// to the system constraints on the sink. -/// -///@param in_LibrarySearchPath -/// [in] a path to locate dynamic libraries dependencies for the sink -/// application. If not NULL, this path will override the environment -/// variable SINK_LD_LIBRARY_PATH. If NULL it will use -/// SINK_LD_LIBRARY_PATH to locate dependencies. -/// -/// @param out_pProcess -/// [out] Handle returned to uniquely identify the process that was -/// created for use in later API calls. -/// -/// @return COI_SUCCESS if the remote process was successfully created. -/// -/// @return COI_INVALID_POINTER if in_pBinaryName was NULL. -/// -/// @return COI_INVALID_FILE if in_pBinaryName is not a "regular file" as -/// determined by stat or if its size is 0. -/// -/// @return COI_DOES_NOT_EXIST if in_pBinaryName cannot be found. -/// -/// @return See COIProcessCreateFromMemory for additional errors. -/// -COIACCESSAPI -COIRESULT -COIProcessCreateFromFile( - COIENGINE in_Engine, - const char *in_pBinaryName, - int in_Argc, - const char **in_ppArgv, - uint8_t in_DupEnv, - const char **in_ppAdditionalEnv, - uint8_t in_ProxyActive, - const char *in_Reserved, - uint64_t in_InitialBufferSpace, - const char *in_LibrarySearchPath, - COIPROCESS *out_pProcess); - -/////////////////////////////////////////////////////////////////////////////// -/// -/// Create a remote process on the Sink and start executing its main() -/// function. This will also automatically load any dependent shared objects -/// on to the device. Once the process is created, remote calls can be -/// initiated by using the RunFunction mechanism found in the COIPipeline APIs. -/// -/// If instead of creating a process you only wish to check for dynamic -/// library dependencies set the environment variable -/// SINK_LD_TRACE_LOADED_OBJECTS to be non empty before making this call. -/// -/// If there are dynamic link libraries on the source file system that need to -/// be preloaded when the process is created on the device, callers of this -/// API can set the environment variable SINK_LD_PRELOAD to a colon separated -/// list of libraries that need to be copied to the sink and preloaded as part -/// of process creation. -/// -/// For more information on how dependencies are loaded, see -/// COIProcessLoadLibraryFromMemory. -/// -/// @param in_Engine -/// [in] A handle retrieved via a call to COIEngineGetHandle() that -/// indicates which device to create the process on. This is -/// necessary because there can be more than one device -/// within the system. -/// -/// @param in_pBinaryName -/// [in] Pointer to a null-terminated string that contains the name to -/// give the process that will be created. Note that the final name -/// will strip out any directory information from in_pBinaryName and -/// use the file information to generate an argv[0] for the new -/// process. -/// -/// @param in_pBinaryBuffer -/// [in] Pointer to a buffer whose contents represent the sink-side -/// process that we want to create. -/// -/// @param in_BinaryBufferLength -/// [in] Number of bytes in in_pBinaryBuffer. -/// -/// @param in_Argc -/// [in] The number of arguments being passed in to the process in the -/// in_ppArgv parameter. -/// -/// @param in_ppArgv -/// [in] An array of strings that represent the arguments being passed -/// in. The system will auto-generate argv[0] using in_pBinaryName and -/// thus that parameter cannot be passed in using in_ppArgv. Instead, -/// in_ppArgv contains the rest of the parameters being passed in. -/// -/// @param in_DupEnv -/// [in] A boolean that indicates whether the process that is being -/// created should inherit the environment of the caller. -/// -/// @param in_ppAdditionalEnv -/// [in] An array of strings that represent additional environment -/// variables. This parameter must terminate the array with a NULL -/// string. For convenience it is also allowed to be NULL if there are -/// no additional environment variables that need adding. Note that -/// any environment variables specified here will be in addition to -/// but override those that were inherited via in_DupEnv. -/// -/// @param in_ProxyActive -/// [in] A boolean that specifies whether the process that is to be -/// created wants I/O proxy support. -/// -/// @param in_Reserved -/// Reserved for future use, best set to NULL. -/// -/// @param in_InitialBufferSpace -/// [in] The initial memory (in bytes) that will be pre-allocated at -/// process creation for use by buffers associated with this remote -/// process. In addition to allocating, Intel(R) Coprocessor -/// Offload Infrastructure (Intel(R) COI) will also fault in the -/// memory during process creation. If the total size of the buffers -/// in use by this process exceed this initial size, memory on the -/// sink may continue to be allocated on demand, as needed, subject -/// to the system constraints on the sink. -/// -/// @param in_LibrarySearchPath -/// [in] A path to locate dynamic libraries dependencies for the sink -/// application. If not NULL, this path will override the environment -/// variable SINK_LD_LIBRARY_PATH. If NULL it will use -/// SINK_LD_LIBRARY_PATH to locate dependencies. -/// -/// @param in_FileOfOrigin -/// [in] If not NULL, this parameter indicates the file from which the -/// in_pBinaryBuffer was obtained. This parameter is optional. -/// -/// @param in_FileOfOriginOffset -/// [in] If in_FileOfOrigin is not NULL, this parameter indicates the -/// offset within that file where in_pBinaryBuffer begins. -/// -/// @param out_pProcess -/// [out] Handle returned to uniquely identify the process that was -/// created for use in later API calls. -/// -/// @return COI_SUCCESS if the remote process was successfully created. -/// -/// @return COI_INVALID_HANDLE if the in_Engine handle passed in was invalid. -/// -/// @return COI_INVALID_POINTER if out_pProcess was NULL. -/// -/// @return COI_INVALID_POINTER if in_pBinaryName or in_pBinaryBuffer was NULL. -/// -/// @return COI_MISSING_DEPENDENCY if a dependent library is missing from -/// either SINK_LD_LIBRARY_PATH or the in_LibrarySearchPath parameter. -/// -/// @return COI_BINARY_AND_HARDWARE_MISMATCH if in_pBinaryName or any of its -/// recursive dependencies were built for a target machine that does -/// not match the engine specified. -/// -/// @return COI_RESOURCE_EXHAUSTED if no more COIProcesses can be created, -/// possibly, but not necessarily because in_InitialBufferSpace is too -/// large. -/// -/// @return COI_ARGUMENT_MISMATCH if in_Argc is 0 and in_ppArgv is not NULL. -/// -/// @return COI_ARGUMENT_MISMATCH if in_Argc is greater than 0 and in_ppArgv is -/// NULL. -/// -/// @return COI_OUT_OF_RANGE if in_Argc is less than 0. -/// -/// @return COI_OUT_OF_RANGE if the length of in_pBinaryName is greater than or -/// equal to COI_MAX_FILE_NAME_LENGTH. -/// -/// @return COI_OUT_OF_RANGE if in_BinaryBufferLength is 0. -/// -/// @return COI_TIME_OUT_REACHED if establishing the communication channel with -/// the remote process timed out. -/// -/// @return COI_DOES_NOT_EXIST if in_FileOfOrigin is not NULL and does not -/// exist. -/// -/// @return COI_ARGUMENT_MISMATCH if in_FileOfOrigin is NULL and -/// in_FileOfOriginOffset is not 0. -/// -/// @return COI_INVALID_FILE if in_FileOfOrigin is not a "regular file" as -/// determined by stat or if its size is 0. -/// -/// @return COI_OUT_OF_RANGE if in_FileOfOrigin exists but its size is -/// less than in_FileOfOriginOffset + in_BinaryBufferLength. -/// -/// @return COI_NOT_INITIALIZED if the environment variable -/// SINK_LD_TRACE_LOADED_OBJECTS is set to a non empty string and there -/// are no errors locating the shared library dependencies. -/// -/// @return COI_PROCESS_DIED if at some point during the loading of the remote -/// process the remote process terminated abnormally. -/// -/// @return COI_VERSION_MISMATCH if the version of Intel(R) Coprocessor -/// Offload Infrastructure (Intel(R) COI) on the host is not -/// compatible with the version on the device. -/// -COIACCESSAPI -COIRESULT -COIProcessCreateFromMemory( - COIENGINE in_Engine, - const char *in_pBinaryName, - const void *in_pBinaryBuffer, - uint64_t in_BinaryBufferLength, - int in_Argc, - const char **in_ppArgv, - uint8_t in_DupEnv, - const char **in_ppAdditionalEnv, - uint8_t in_ProxyActive, - const char *in_Reserved, - uint64_t in_InitialBufferSpace, - const char *in_LibrarySearchPath, - const char *in_FileOfOrigin, - uint64_t in_FileOfOriginOffset, - COIPROCESS *out_pProcess); - -////////////////////////////////////////////////////////////////////////////// -/// -/// Destroys the indicated process, releasing its resources. Note, this -/// will destroy any outstanding pipelines created in this process as well. -/// -/// @param in_Process -/// [in] Process to destroy. -/// -/// @param in_WaitForMainTimeout -/// [in] The number of milliseconds to wait for the main() function -/// to return in the sink process before timing out. -1 means to wait -/// indefinitely. -/// -/// @param in_ForceDestroy -/// [in] If this flag is set to true, then the sink process will be -/// forcibly terminated after the timeout has been reached. A timeout -/// value of 0 will kill the process immediately, while a timeout of -/// -1 is invalid. If the flag is set to false then a message will -/// be sent to the sink process requesting a clean shutdown. A value -/// of false along with a timeout of 0 does not send a shutdown -/// message, instead simply polls the process to see if it is alive. -/// In most cases this flag should be set to false. If a sink process -/// is not responding then it may be necessary to set this flag to -/// true. -/// -/// @param out_pProcessReturn -/// [out] The value returned from the main() function executing in -/// the sink process. This is an optional parameter. If the caller -/// is not interested in the return value from the remote process -/// they may pass in NULL for this parameter. The output value of -/// this pointer is only meaningful if COI_SUCCESS is returned. -/// -/// @param out_pTerminationCode -/// [out] This parameter specifies the termination code. This will -/// be 0 if the remote process exited cleanly. If the remote process -/// exited abnormally this will contain the termination code given -/// by the operating system of the remote process. This is an optional -/// parameter and the caller may pass in NULL if they are not -/// interested in the termination code. The output value of this -/// pointer is only meaningful if COI_SUCCESS is returned. -/// -/// @return COI_SUCCESS if the process was destroyed. -/// -/// @return COI_INVALID_HANDLE if the process handle passed in was invalid. -/// -/// @return COI_OUT_OF_RANGE for any negative in_WaitForMainTimeout value -/// except -1. -/// -/// @return COI_ARGUMENT_MISMATCH if in_WaitForMainTimeout is -1 and -/// in_ForceDestroy is true. -/// -/// @return COI_TIME_OUT_REACHED if the sink process is still running after -/// waiting in_WaitForMainTimeout milliseconds and in_ForceDestroy -/// is false. This is true even if in_WaitForMainTimeout was 0. -/// In this case, out_pProcessReturn and out_pTerminationCode -/// are undefined. -/// -COIACCESSAPI -COIRESULT -COIProcessDestroy( - COIPROCESS in_Process, - int32_t in_WaitForMainTimeout, - uint8_t in_ForceDestroy, - int8_t *out_pProcessReturn, - uint32_t *out_pTerminationCode); - - -#define COI_MAX_FUNCTION_NAME_LENGTH 256 - -////////////////////////////////////////////////////////////////////////////// -/// -/// Given a loaded native process, gets an array of function handles that can -/// be used to schedule run functions on a pipeline associated with that -/// process. See the documentation for COIPipelineRunFunction() for -/// additional information. All functions that are to be retrieved in this -/// fashion must have the define COINATIVEPROCESSEXPORT preceding their type -/// specification. For functions that are written in C++, either the entries -/// in in_pFunctionNameArray in must be pre-mangled, or the functions must be -/// declared as extern "C". It is also necessary to link the binary containing -/// the exported functions with the -rdynamic linker flag. -/// It is possible for this call to successfully find function handles for -/// some of the names passed in but not all of them. If this occurs -/// COI_DOES_NOT_EXIST will return and any handles not found will be returned -/// as NULL. -/// -/// @param in_Process -/// [in] Process handle previously returned via COIProcessCreate(). -/// -/// @param in_NumFunctions -/// [in] Number of function names passed in to the in_pFunctionNames -/// array. -/// -/// @param in_ppFunctionNameArray -/// [in] Pointer to an array of null-terminated strings that match -/// the name of functions present in the code of the binary -/// previously loaded via COIProcessCreate(). Note that if a C++ -/// function is used, then the string passed in must already be -/// properly name-mangled, or extern "C" must be used for where -/// the function is declared. -/// -/// @param out_pFunctionHandleArray -/// [in out] Pointer to a location created by the caller large -/// enough to hold an array of COIFUNCTION sized elements that has -/// in_numFunctions entries in the array. -/// -/// @return COI_SUCCESS if all function names indicated were found. -/// -/// @return COI_INVALID_HANDLE if the in_Process handle passed in was invalid. -/// -/// @return COI_OUT_OF_RANGE if in_NumFunctions is zero. -/// -/// @return COI_INVALID_POINTER if the in_ppFunctionNameArray or -/// out_pFunctionHandleArray pointers was NULL. -/// -/// @return COI_DOES_NOT_EXIST if one or more function names were not -/// found. To determine the function names that were not found, -/// check which elements in the out_pFunctionHandleArray -/// are set to NULL. -/// -/// @return COI_OUT_OF_RANGE if any of the null-terminated strings passed in -/// via in_ppFunctionNameArray were more than -/// COI_MAX_FUNCTION_NAME_LENGTH characters in length including -/// the null. -/// -/// @warning This operation can take several milliseconds so it is recommended -/// that it only be done at load time. -/// -COIACCESSAPI -COIRESULT -COIProcessGetFunctionHandles( - COIPROCESS in_Process, - uint32_t in_NumFunctions, - const char **in_ppFunctionNameArray, - COIFUNCTION *out_pFunctionHandleArray); - -#if COI_LIBRARY_VERSION >= 2 -/// @name COIProcessLoadLibrary* flags, named after the corresponding -/// RTLD flags that are passed into dlopen(). -/// Please consult a Linux manual for more information about these flags. -//@{ -#define COI_LOADLIBRARY_LOCAL 0x00000 -#define COI_LOADLIBRARY_GLOBAL 0x00100 - -#define COI_LOADLIBRARY_LAZY 0x00001 -#define COI_LOADLIBRARY_NOW 0x00002 -#define COI_LOADLIBRARY_NOLOAD 0x00004 -#define COI_LOADLIBRARY_DEEPBIND 0x00008 -#define COI_LOADLIBRARY_NODELETE 0x01000 - -/// Flags to replicate the behaviour of the original version of -/// COIProcessLoadLibrary* APIs. -#define COI_LOADLIBRARY_V1_FLAGS (COI_LOADLIBRARY_GLOBAL|COI_LOADLIBRARY_NOW) - -//@} - -#endif - -////////////////////////////////////////////////////////////////////////////// -/// -/// Loads a shared library into the specified remote process, akin to using -/// dlopen() on a local process in Linux or LoadLibrary() in Windows. -/// Dependencies for this library that are not listed with absolute paths -/// are searched for first in current working directory, then in the -/// colon-delimited paths in the environment variable SINK_LD_LIBRARY_PATH, -/// and finally on the sink in the standard search paths as defined by the -/// sink's operating system / dynamic loader. -/// -/// @param in_Process -/// [in] Process to load the library into. -/// -/// @param in_pLibraryBuffer -/// [in] The memory buffer containing the shared library to load. -/// -/// @param in_LibraryBufferLength -/// [in] The number of bytes in the memory buffer in_pLibraryBuffer. -/// -/// @param in_pLibraryName -/// [in] Name for the shared library. This optional parameter can -/// be specified in case the dynamic library doesn't have an -/// SO_NAME field. If specified, it will take precedence over -/// the SO_NAME if it exists. If it is not specified then -/// the library must have a valid SO_NAME field. -/// -///@param in_LibrarySearchPath -/// [in] A path to locate dynamic libraries dependencies for the -/// library being loaded. If not NULL, this path will override the -/// environment variable SINK_LD_LIBRARY_PATH. If NULL it will use -/// SINK_LD_LIBRARY_PATH to locate dependencies. -/// -///@param in_LibrarySearchPath -/// [in] A path to locate dynamic libraries dependencies for the sink -/// application. If not NULL, this path will override the environment -/// variable SINK_LD_LIBRARY_PATH. If NULL it will use -/// SINK_LD_LIBRARY_PATH to locate dependencies. -/// -/// @param in_FileOfOrigin -/// [in] If not NULL, this parameter indicates the file from which the -/// in_pBinaryBuffer was obtained. This parameter is optional. -/// -/// @param in_FileOfOriginOffset -/// [in] If in_FileOfOrigin is not NULL, this parameter indicates the -/// offset within that file where in_pBinaryBuffer begins. -/// -#if COI_LIBRARY_VERSION >= 2 -/// @param in_Flags -/// [in] Bitmask of the flags that will be passed in as the dlopen() -/// "flag" parameter on the sink. -/// -#endif -/// -/// @param out_pLibrary -/// [out] If COI_SUCCESS or COI_ALREADY_EXISTS is returned, the handle -/// that uniquely identifies the loaded library. -/// -/// @return COI_SUCCESS if the library was successfully loaded. -/// -/// @return COI_INVALID_HANDLE if the process handle passed in was invalid. -/// -/// @return COI_OUT_OF_RANGE if in_LibraryBufferLength is 0. -/// -/// @return COI_INVALID_FILE if in_pLibraryBuffer does not represent a valid -/// shared library file. -/// -/// @return COI_MISSING_DEPENDENCY if a dependent library is missing from -/// either SINK_LD_LIBRARY_PATH or the in_LibrarySearchPath parameter. -/// -/// @return COI_ARGUMENT_MISMATCH if the shared library is missing an SONAME -/// and in_pLibraryName is NULL. -/// -/// @return COI_ARGUMENT_MISMATCH if in_pLibraryName is the same as that of -/// any of the dependencies (recursive) of the library being loaded. -/// -/// @return COI_ALREADY_EXISTS if there is an existing COILIBRARY handle -/// that identifies this library, and this COILIBRARY hasn't been -/// unloaded yet. -/// -/// @return COI_BINARY_AND_HARDWARE_MISMATCH if the target machine of the -/// binary or any of its recursive dependencies does not match the -/// engine associated with in_Process. -/// -/// @return COI_UNDEFINED_SYMBOL if we are unable to load the library due to -/// an undefined symbol. -/// -/// @return COI_PROCESS_DIED if loading the library on the device caused -/// the remote process to terminate. -/// -/// @return COI_DOES_NOT_EXIST if in_FileOfOrigin is not NULL and does not -/// exist. -/// -/// @return COI_ARGUMENT_MISMATCH if in_FileOfOrigin is NULL and -/// in_FileOfOriginOffset is not 0. -/// -/// @return COI_INVALID_FILE if in_FileOfOrigin is not a "regular file" as -/// determined by stat or if its size is 0. -/// -/// @return COI_OUT_OF_RANGE if in_FileOfOrigin exists but its size is -/// less than in_FileOfOriginOffset + in_BinaryBufferLength. -/// -/// @return COI_INVALID_POINTER if out_pLibrary or in_pLibraryBuffer are NULL. -/// -#if COI_LIBRARY_VERSION >= 2 -COIACCESSAPI -COIRESULT -COIProcessLoadLibraryFromMemory( - COIPROCESS in_Process, - const void *in_pLibraryBuffer, - uint64_t in_LibraryBufferLength, - const char *in_pLibraryName, - const char *in_LibrarySearchPath, - const char *in_FileOfOrigin, - uint64_t in_FileOfOriginOffset, - uint32_t in_Flags, - COILIBRARY *out_pLibrary); -__asm__(".symver COIProcessLoadLibraryFromMemory," - "COIProcessLoadLibraryFromMemory@COI_2.0"); -#else - -COIRESULT -COIProcessLoadLibraryFromMemory( - COIPROCESS in_Process, - const void *in_pLibraryBuffer, - uint64_t in_LibraryBufferLength, - const char *in_pLibraryName, - const char *in_LibrarySearchPath, - const char *in_FileOfOrigin, - uint64_t in_FileOfOriginOffset, - COILIBRARY *out_pLibrary); -__asm__(".symver COIProcessLoadLibraryFromMemory," - "COIProcessLoadLibraryFromMemory@COI_1.0"); -#endif - - -////////////////////////////////////////////////////////////////////////////// -/// -/// Loads a shared library into the specified remote process, akin to using -/// dlopen() on a local process in Linux or LoadLibrary() in Windows. -/// -/// For more details, see COIProcessLoadLibraryFromMemory. -/// -/// @param in_Process -/// [in] Process to load the library into. -/// -/// @param in_pFileName -/// [in] The name of the shared library file on the source's file -/// system that is being loaded. If the file name is not an absolute -/// path, the file is searched for in the same manner as dependencies. -/// -/// @param in_pLibraryName -/// [in] Name for the shared library. This optional parameter can -/// be specified in case the dynamic library doesn't have an -/// SO_NAME field. If specified, it will take precedence over -/// the SO_NAME if it exists. If it is not specified then -/// the library must have a valid SO_NAME field. -/// -///@param in_LibrarySearchPath -/// [in] a path to locate dynamic libraries dependencies for the -/// library being loaded. If not NULL, this path will override the -/// environment variable SINK_LD_LIBRARY_PATH. If NULL it will use -/// SINK_LD_LIBRARY_PATH to locate dependencies. -/// -#if COI_LIBRARY_VERSION >= 2 -/// @param in_Flags -/// [in] Bitmask of the flags that will be passed in as the dlopen() -/// "flag" parameter on the sink. -/// -#endif -/// -/// @param out_pLibrary -/// [out] If COI_SUCCESS or COI_ALREADY_EXISTS is returned, the handle -/// that uniquely identifies the loaded library. -/// -/// @return COI_SUCCESS if the library was successfully loaded. -/// -/// @return COI_INVALID_POINTER if in_pFileName is NULL. -/// -/// @return COI_DOES_NOT_EXIST if in_pFileName cannot be found. -/// -/// @return COI_INVALID_FILE if the file is not a valid shared library. -/// -/// @return See COIProcessLoadLibraryFromMemory for additional errors. -/// -#if COI_LIBRARY_VERSION >= 2 - -COIACCESSAPI -COIRESULT -COIProcessLoadLibraryFromFile( - COIPROCESS in_Process, - const char *in_pFileName, - const char *in_pLibraryName, - const char *in_LibrarySearchPath, - uint32_t in_Flags, - COILIBRARY *out_pLibrary); -__asm__(".symver COIProcessLoadLibraryFromFile," - "COIProcessLoadLibraryFromFile@COI_2.0"); -#else - -COIRESULT -COIProcessLoadLibraryFromFile( - COIPROCESS in_Process, - const char *in_pFileName, - const char *in_pLibraryName, - const char *in_LibrarySearchPath, - COILIBRARY *out_pLibrary); -__asm__(".symver COIProcessLoadLibraryFromFile," - "COIProcessLoadLibraryFromFile@COI_1.0"); -#endif - -////////////////////////////////////////////////////////////////////////////// -/// -/// Unloads a a previously loaded shared library from the specified -/// remote process. -/// -/// @param in_Process -/// [in] Process that we are unloading a library from. -/// -/// @param in_Library -/// [in] Library that we want to unload. -/// -/// @return COI_SUCCESS if the library was successfully loaded. -/// -/// @return COI_INVALID_HANDLE if the process or library handle were invalid. -/// -COIACCESSAPI -COIRESULT -COIProcessUnloadLibrary( - COIPROCESS in_Process, - COILIBRARY in_Library); - - -////////////////////////////////////////////////////////////////////////////// -/// -/// Registers shared libraries that are already in the host process's memory -/// to be used during the shared library dependency resolution steps that take -/// place during subsequent calls to COIProcessCreate* and -/// COIProcessLoadLibrary*. If listed as a dependency, the registered library -/// will be used to satisfy the dependency, even if there is another library -/// on disk that also satisfies that dependency. -/// -/// Addresses registered must remain valid during subsequent calls to -/// COIProcessCreate* and COIProcessLoadLibrary*. -/// -/// If the Sink is Linux, the shared libraries must have a library name -/// (DT_SONAME field). On most compilers this means built with -soname. -/// -/// If successful, this API registers all the libraries. Otherwise none -/// are registered. -/// -/// @param in_NumLibraries -/// [in] The number of libraries that are being registered. -/// -/// @param in_ppLibraryArray -/// [in] An array of pointers that point to the starting addresses -/// of the libraries. -/// -/// @param in_pLibrarySizeArray -/// [in] An array of pointers that point to the number of bytes in -/// each of the libraries. -/// -/// @param in_ppFileOfOriginArray -/// [in] An array of strings indicating the file from which the -/// library was obtained. This parameter is optional. Elements -/// in the array may be set to NULL. -/// -/// @param in_pFileOfOriginOffSetArray -/// [in] If the corresponding entry in in_ppFileOfOriginArray is not -/// NULL, this parameter indicates the offsets within those files -/// where the corresponding libraries begin. -/// -/// @return COI_SUCCESS if the libraries were registered successfully. -/// -/// @return COI_OUT_OF_RANGE if in_NumLibraries is 0. -/// -/// @return COI_INVALID_POINTER if in_ppLibraryArray or in_pLibrarySizeArray -/// are NULL. -/// -/// @return COI_INVALID_POINTER if any of the pointers in in_ppLibraryArray -/// are NULL. -/// -/// @return COI_OUT_OF_RANGE if any of the values in in_pLibrarySizeArray is 0. -/// -/// @return COI_ARGUMENT_MISMATCH if either one of in_ppFileOfOriginArray -/// and in_pFileOfOriginOffSetArray is NULL and the other is not. -/// -/// @return COI_OUT_OF_RANGE if one of the addresses being registered does not -/// represent a valid library. -/// -COIACCESSAPI -COIRESULT -COIProcessRegisterLibraries( - uint32_t in_NumLibraries, - const void **in_ppLibraryArray, - const uint64_t *in_pLibrarySizeArray, - const char **in_ppFileOfOriginArray, - const uint64_t *in_pFileOfOriginOffSetArray); - - -////////////////////////////////////////////////////////////////////////////// -/// The user can choose to have notifications for these internal events -/// so that they can build their own profiling and performance layer on -/// top of Intel(R) Coprocessor Offload Infrastructure (Intel(R) COI). -/// -typedef enum COI_NOTIFICATIONS -{ - /// This event occurs when all explicit and implicit dependencies are - /// satisfied and Intel(R) Coprocessor Offload Infrastructure - /// (Intel(R) COI) schedules the run function to begin execution. - RUN_FUNCTION_READY = 0, - - /// This event occurs just before the run function actually starts - /// executing. There may be some latency between the ready and start - /// events if other run functions are already queued and ready to run. - RUN_FUNCTION_START, - - /// This event occurs when the run function finishes. This is when the - /// completion event for that run function would be signaled. - RUN_FUNCTION_COMPLETE, - - /// This event occurs when all explicit and implicit dependencies are - /// met for the pending buffer operation. Assuming buffer needs to be - /// moved, copied, read, etc... Will not be invoked if no actual memory - /// is moved, copied, read, etc. This means that COIBufferUnmap will - /// never result in a callback as it simply updates the status of the - /// buffer but doesn't initiate any data movement. COIBufferMap, - /// COIBufferSetState, COIBufferWrite, COIBufferRead and COIBufferCopy - /// do initiate data movement and therefore will invoke the callback. - BUFFER_OPERATION_READY, - - /// This event occurs when the buffer operation is completed. - BUFFER_OPERATION_COMPLETE, - - /// This event occurs when a user event is signaled from the remotely - /// a sink process. Local (source triggered) events do not trigger this. - USER_EVENT_SIGNALED -} COI_NOTIFICATIONS; - -////////////////////////////////////////////////////////////////////////////// -/// -/// A callback that will be invoked to notify the user of an internal -/// Intel(R) Coprocessor Offload Infrastructure (Intel(R) COI) -/// event. Note that the callback is registered per process so any of the -/// above notifications that happen on the registered process will receive -/// the callback. -/// As with any callback mechanism it is up to the user to make sure that -/// there are no possible deadlocks due to reentrancy (i.e. the callback being -/// invoked in the same context that triggered the notification) and also -/// that the callback does not slow down overall processing. If the user -/// performs too much work within the callback it could delay further -/// processing. The callback will be invoked prior to the signaling of -/// the corresponding COIEvent. For example, if a user is waiting -/// for a COIEvent associated with a run function completing they will -/// receive the callback before the COIEvent is marked as signaled. -/// -/// -/// @param in_Type -/// [in] The type of internal event that has occurred. -/// -/// @param in_Process -/// [in] The process associated with the operation. -/// -/// @param in_Event -/// [in] The completion event that is associated with the -/// operation that is being notified. -/// -/// @param in_UserData -/// [in] Opaque data that was provided when the callback was -/// registered. Intel(R) Coprocessor Offload Infrastructure (Intel(R) COI) -/// simply passes this back to the user so that -/// they can interpret it as they choose. -/// -typedef void (*COI_NOTIFICATION_CALLBACK)( - COI_NOTIFICATIONS in_Type, - COIPROCESS in_Process, - COIEVENT in_Event, - const void *in_UserData); - - -////////////////////////////////////////////////////////////////////////////// -/// -/// Register a callback to be invoked to notify that an internal -/// Intel(R) Coprocessor Offload Infrastructure (Intel(R) COI) event -/// has occured on the process that is associated with the callback. -/// Note that it is legal to have more than one callback registered with -/// a given process but those must all be unique callback pointers. -/// Note that setting a UserData value with COINotificationCallbackSetContext -/// will override a value set when registering the callback. -/// -/// @param in_Process -/// [in] Process that the callback is associated with. The callback -/// will only be invoked to notify an event for this specific process. -/// -/// @param in_Callback -/// [in] Pointer to a user function used to signal a notification. -/// -/// @param in_UserData -/// [in] Opaque data to pass to the callback when it is invoked. -/// -/// @return COI_SUCCESS if the callback was registered successfully. -/// -/// @return COI_INVALID_HANDLE if the in_Process parameter does not identify -/// a valid process. -/// -/// @return COI_INVALID_POINTER if the in_Callback parameter is NULL. -/// -/// @return COI_ALREADY_EXISTS if the user attempts to reregister the same -/// callback for a process. -/// -COIACCESSAPI -COIRESULT COIRegisterNotificationCallback( - COIPROCESS in_Process, - COI_NOTIFICATION_CALLBACK in_Callback, - const void *in_UserData); - - -////////////////////////////////////////////////////////////////////////////// -/// -/// Unregisters a callback, notifications will no longer be signaled. -/// -/// @param in_Process -/// [in] Process that we are unregistering. -/// -/// @param in_Callback -/// [in] The specific callback to unregister. -/// -/// @return COI_SUCCESS if the callback was unregistered. -/// -/// @return COI_INVALID_HANDLE if the in_Process parameter does not identify -/// a valid process. -/// -/// @return COI_INVALID_POINTER if the in_Callback parameter is NULL. -/// -/// @return COI_DOES_NOT_EXIST if in_Callback was not previously registered -/// for in_Process. -/// -COIACCESSAPI -COIRESULT COIUnregisterNotificationCallback( - COIPROCESS in_Process, - COI_NOTIFICATION_CALLBACK in_Callback); - - -////////////////////////////////////////////////////////////////////////////// -/// -/// Set the user data that will be returned in the notification callback. -/// This data is sticky and per thread so must be set prior to the -/// Intel(R) Coprocessor Offload Infrastructure (Intel(R) COI) -/// operation being invoked. If you wish to set the context to be returned -/// for a specific instance of a user event notification then the context -/// must be set using this API prior to registering that user event with -/// COIEventRegisterUserEvent. -/// The value may be set prior to each Intel(R) Coprocessor Offload -/// Infrastructure (Intel(R) COI) operation being called to -/// effectively have a unique UserData per callback. -/// Setting this value overrides any value that was set when the -/// callback was registered and will also override any future registrations -/// that occur. -/// -/// @param in_UserData -/// [in] Opaque data to pass to the callback when it is invoked. -/// Note that this data is set per thread. -/// -COIACCESSAPI -void COINotificationCallbackSetContext( - const void *in_UserData); - - -/// @name COIProcessSetCacheSize flags. -/// Flags are divided into two categories: _MODE_ and _ACTION_ -/// only one of each is valid with each call. -/// _ACTIONS_ and _MODES_ should be bitwised OR'ed together, i.e. | -//@{ - -/// Current set of DEFINED bits for _MODE_, can be used -/// to clear or check fields, not useful to pass into APIs. Used internally. -#define COI_CACHE_MODE_MASK 0x00000007 - -/// Flag to indicate to keep the previous mode of operation. By default -/// this would be COI_CACHE_MODE_ONDEMAND_SYNC. As of this release -/// This is the only mode available. This mode is valid with _ACTION_ -/// flags. -#define COI_CACHE_MODE_NOCHANGE 0x00000001 - -/// Mode of operation that indicates that COI will allocate physical -/// cache memory exactly when it is is needed. COIPipeline execution in -/// the given process will momentarily block until the allocation request -/// is completed. This is and has been the default mode. -#define COI_CACHE_MODE_ONDEMAND_SYNC 0x00000002 - -/// Not yet implemented. Future mode that will not stall a COIPipeline -/// but prefer eviction/paging if possible as to immediately execute pipeline. -/// At the same time, enqueue background requests to allocate extra cache -/// so as to provide optimze behavior on subsequent runs. -#define COI_CACHE_MODE_ONDEMAND_ASYNC 0x00000004 - - -/// Current set of DEFINED bits for _ACTION_ can be used -/// to clear fields, but not useful to pass into API's. Used internally. -#define COI_CACHE_ACTION_MASK 0x00070000 - -/// No action requested. With this flag specified -/// it is recommended to NOT provide a out_pCompletion event, -/// as with this flag, modes and values are immediately set. -/// This is valid with _MODE_ flags. -#define COI_CACHE_ACTION_NONE 0x00010000 - -/// This _ACTION_ flag will immediately attempt to increase the cache -/// physical memory size to the current set pool size(s). Used to -/// pre-allocate memory on remote processes, so that runfunction will -/// enqueue faster. Also may prevent unused buffer eviction from process -/// reducing overhead in trade for memory allocation cost. -#define COI_CACHE_ACTION_GROW_NOW 0x00020000 - -/// Not yet implemented. Future _ACTION_ that will attempt to find unused -/// allocated cache and free it, with the express goal of reducing the -/// footprint on the remote process down to the value of the currently set -/// pool size(s). -#define COI_CACHE_ACTION_FREE_UNUSED 0x00040000 - -//@} - -////////////////////////////////////////////////////////////////////////////// -/// -/// Set the minimum preferred COIProcess cache size. By default these values -/// are set to 1GB. With the default size of 1GB, Intel(R) COI will only -/// grow the cache with each new buffer up until the set limit is consumed, -/// after which, only required to accommodate additional buffers. -/// This means that after the cache preference is met, a process will act -/// as conservative as possible for memory consumption. -/// This API will allow users to adjust memory consumption aggressiveness. -/// -/// Additional performance may be gained if the user sets a value higher than -/// default. With high memory consumption user can choose to trade performance -/// between memory allocation cost and transfer speeds to and from the -/// remote process. A last consideration is that if buffers are used only -/// once, it may be best to keep a small cache size, or ensure buffers are -/// fully destroyed after their use. -/// -/// Adjusting this value to high may result in out of resource conditions. -/// -/// @param in_pProcess -/// [in] Handle to uniquely identify the process for which the cache -/// is to be adjusted. -/// -/// @param in_HugePagePoolSize -/// [in] The suggested size of the remote huge page cache in bytes. -/// This value defaults to 1GB. A process will only allocate cache -/// memory if the current cache is smaller than this limit, or it is -/// absolutely necessary to fulfill a request, but preferring to -/// re-use existing memory and paging unused buffers back to the host -/// Increasing this value will cause a process to -/// aggressively allocate memory on demand up to this value, before -/// evicting/paging memory from the remote process back to the host -/// process. -/// -/// The net result is that memory consumption is increased, but the -/// user can 'cache' more buffers on the remote process. More time -/// may be spent during first use of run functions as more memory -/// may be allocated, but subsequent run functions will likely -/// see an increase in queueing performance as the data is already -/// valid in the remote process. -/// -/// Users should tune this value for optimum performance balanced -/// against memory consumption. This value does not affect 4K page -/// cache. Please use in_SmallPagePoolSize for 4K pages. -/// -/// @param in_HugeFlags -/// [in] Flags to select mode or action for huge page cache. One _MODE_ -/// and one _ACTION_ flag are specified together. Default _MODE_ is -/// COI_CACHE_MODE_ONDEMAND_SYNC. See all COI_CACHE_MODE_* and -/// COI_CACHE_ACTION_* for other modes and actions. Default _ACTION_ -/// is COI_CACHE_ACTION_NONE. -/// -/// @param in_SmallPagePoolSize -/// [in] The suggested size of the remote 4K cache in bytes. Same -/// function as in_HugePagePoolSize but affecting only 4K page cache. -/// Defaults to 1GB. -/// -/// @param in_SmallFlags -/// [in] Flags to select mode or action for 4K page cache. One _MODE_ -/// and one _ACTION_ flag are be specified together. Default _MODE_ is -/// COI_CACHE_MODE_ONDEMAND_SYNC. See all COI_CACHE_MODE_* and -/// COI_CACHE_ACTION_* for other modes and actions. -/// -/// @param in_NumDependencies -/// [in] The number of dependencies specified in the in_pDependencies -/// array. This may be 0 if the caller does not want the call to -/// wait for any events to be signaled. -/// -/// @param in_pDependencies -/// [in] An optional array of handles to previously created COIEVENT -/// objects that this operation will wait for before starting. -/// This allows the user to create dependencies between asynchronous -/// calls and other operations such as run functions. The user may -/// pass in NULL if they do not wish to wait for any dependencies. -/// Only useful with _ACTION_ flags, otherwise there is no action -/// to wait on. All _MODE_ changes happen immediately. -/// -/// @param out_pCompletion -/// [out] An optional pointer to a COIEVENT object that will be -/// signaled when the operation is complete. The user may pass in -/// NULL if the user wants the operation to block until completed. -/// Note: This flag is not useful unless paired with a -/// valid _ACTION_ flag. -/// -/// @return COI_SUCCESS if the cache was successfully adjusted. In case of -/// valid flags including _ACTION_, if out_pCompletion was specified, -/// this does not indicate the operation succeeded, but rather only -/// it was successfully queued. For further information see -/// that COIEventWait() for getting return values. -/// -/// @return COI_INVALID_HANDLE if the in_Process handle passed in was invalid. -/// -/// @return COI_RESOURCE_EXHAUSTED if no more cache can be created, -/// possibly, but not necessarily because a pool size was set to large -/// and COI_CACHE_ACTION_GROW_NOW was specified. -/// -/// @return COI_NOT_SUPPORTED if more than one _MODE_ or _ACTION_ was -/// specified. -/// -/// @return COI_NOT_SUPPORTED if an invalid _MODE_ or _ACTION_ was -/// specified. -/// -/// @return COI_ARGUMENT_MISMATCH if in_NumDependencies is non-zero while -/// in_pDependencies was passed in as NULL. -/// -/// @return COI_OUT_OF_RANGE if one of the pool sizes was invalid. -/// -/// @return COI_PROCESS_DIED if at some point during the mode or action the -/// remote process terminated abnormally. Possible due to an out of -/// memory condition. -/// -COIACCESSAPI -COIRESULT COIProcessSetCacheSize( - const COIPROCESS in_Process, - const uint64_t in_HugePagePoolSize, - const uint32_t in_HugeFlags, - const uint64_t in_SmallPagePoolSize, - const uint32_t in_SmallFlags, - uint32_t in_NumDependencies, - const COIEVENT *in_pDependencies, - COIEVENT *out_pCompletion); - - -////////////////////////////////////////////////////////////////////////////// -/// These are the different modes of operation that can be selected for -/// the COI_DMA_MODE by the API COIProcessConfigureDMA. They allow the user -/// to customize the DMA layer behaviour. -/// -typedef enum COI_DMA_MODE -{ - /// This mode will use one common logical channel for all DMA operations. - /// Using this mode requires a channel count of one. - COI_DMA_MODE_SINGLE = 0, - - /// This mode will dedicate on logical channel for write operations - /// and one logical channel for read operations. Requires a minimum of - /// two logical channels, if more than two are used they are ignored - /// in the current implementation. - COI_DMA_MODE_READ_WRITE, - - /// This mode is not yet implemented and is a placeholder for future - /// releases. Check here for updates when it is implemented. - /// Will require a minimum of two logical channels and a maximum - /// of four channels. - COI_DMA_MODE_ROUND_ROBIN, - - /// Reserved for internal use. - COI_DMA_RESERVED -} COI_DMA_MODE; - - -////////////////////////////////////////////////////////////////////////////// -/// -/// Set the number and mode of the physical DMA channels that each COIProcess -/// will establish during COIProcess creation. -/// -/// By default the runtime will operate in COI_DMA_MODE_SINGLE mode. -/// This API is intended to be called before COIProcessCreateFromFile() or -/// COIProcessCreateFromMemory(). The values are stored globally and will -/// be used by the creation API's. It is possible to call this API once -/// before each new COIPROCESS is created and thus have each COIPROCESS -/// run in different modes. It is not possible to change the mode on an -/// existing COIPROCESS. -/// -/// The larger number of logical connections requested will impose a -/// performance penalty on the COIBUFFER creation API's, but unlock better -/// parallelism for DMA transfers during runtime. -/// -/// A maximum value of four (4) channels is available today, but current -/// implementation will only take advantage of two DMA channels. The option -/// is left available for programmers to use in case future implementations -/// provide performance advantages. -/// -/// It is important to note that for some operations that enabling this -/// options may increase parallelism and require the user to enforce -/// explicit dependencies for operations on the same buffers. See documentation -/// for COIBufferRead/Write/Copy operations for more details. -/// -/// @param in_Channels -/// [in] Number of logical connections to the remote COIProcess that -/// the runtime will establish and use for DMA transfer requests. -/// Will be ignored if in_Mode is set to COI_DMA_MODE_SINGLE. -/// -/// @param in_Mode -/// [in] The mode of operation in which the runtime will use the -/// logical connections to the remote COIProcess. -/// -/// @return COI_SUCCESS if the mode and number of DMA channels requested -/// is valid. The actual create creation of channels and modes is -/// done during COIProcessCreateFromFile() and -/// COIProcessCreateFromMemory(). -/// -/// @return COI_NOT_SUPPORTED if an invalid value for in_Channels or -/// in_Mode was requested. -/// -/// @return COI_ARGUMENT_MISMATCH if an invalid combination of in_Channels and -/// in_Mode was requested. Example could be 2 channels with -/// COI_DMA_MODE_SINGLE, or 1 channel with COI_DMA_MODE_READ_WRITE. -/// -COIACCESSAPI -COIRESULT COIProcessConfigureDMA( - const uint64_t in_Channels, - const COI_DMA_MODE in_Mode); - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* _COIPROCESS_SOURCE_H */ - -/*! @} */ diff --git a/liboffloadmic/liboffloadmic_host.spec.in b/liboffloadmic/liboffloadmic_host.spec.in deleted file mode 100644 index 3fd12e4..0000000 --- a/liboffloadmic/liboffloadmic_host.spec.in +++ /dev/null @@ -1,3 +0,0 @@ -# This spec file is read by gcc when linking. It is used to specify the -# standard libraries we need in order to link with liboffloadmic_host. -*link_offloadmic_host: @link_offloadmic_host@ diff --git a/liboffloadmic/liboffloadmic_target.spec.in b/liboffloadmic/liboffloadmic_target.spec.in deleted file mode 100644 index d679686..0000000 --- a/liboffloadmic/liboffloadmic_target.spec.in +++ /dev/null @@ -1,3 +0,0 @@ -# This spec file is read by gcc when linking. It is used to specify the -# standard libraries we need in order to link with liboffloadmic_target. -*link_offloadmic_target: @link_offloadmic_target@ diff --git a/liboffloadmic/plugin/Makefile.am b/liboffloadmic/plugin/Makefile.am deleted file mode 100644 index 7caea78..0000000 --- a/liboffloadmic/plugin/Makefile.am +++ /dev/null @@ -1,125 +0,0 @@ -# Plugin for offload execution on Intel MIC devices. -# -# Copyright (C) 2014-2017 Free Software Foundation, Inc. -# -# Contributed by Ilya Verbin <ilya.verbin@intel.com> and -# Andrey Turetskiy <andrey.turetskiy@intel.com>. -# -# This file is part of the GNU Offloading and Multi Processing Library -# (libgomp). -# -# Libgomp 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, or (at your option) -# any later version. -# -# Libgomp 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. -# -# Under Section 7 of GPL version 3, you are granted additional -# permissions described in the GCC Runtime Library Exception, version -# 3.1, as published by the Free Software Foundation. -# -# You should have received a copy of the GNU General Public License and -# a copy of the GCC Runtime Library Exception along with this program; -# see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -# <http://www.gnu.org/licenses/>. - - -AUTOMAKE_OPTIONS = foreign -ACLOCAL_AMFLAGS = -I ../.. -I ../../config - -# Directories -build_dir = $(top_builddir) -source_dir = $(top_srcdir) -coi_inc_dir = $(top_srcdir)/../include/coi -include_src_dir = $(top_srcdir)/../../include -libgomp_src_dir = $(top_srcdir)/../../libgomp -libgomp_dir = $(build_dir)/../../libgomp -liboffload_src_dir = $(top_srcdir)/../runtime -liboffload_dir = $(top_builddir)/.. - -# May be used by toolexeclibdir. -gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../../gcc/BASE-VER) -libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/include -# Search for main_target_image.h in these directories -target_prefix_dir = $(libdir)/gcc/$(accel_target)/$(gcc_version)$(MULTISUBDIR) -target_build_dir = $(accel_search_dir)/$(accel_target)$(MULTISUBDIR)/liboffloadmic/plugin -target_install_dir = $(accel_search_dir)/lib/gcc/$(accel_target)/$(gcc_version)$(MULTISUBDIR) - -if PLUGIN_HOST - toolexeclib_LTLIBRARIES = libgomp-plugin-intelmic.la - libgomp_plugin_intelmic_la_SOURCES = libgomp-plugin-intelmic.cpp - libgomp_plugin_intelmic_la_CPPFLAGS = $(CPPFLAGS) -DLINUX -DCOI_LIBRARY_VERSION=2 -DOFFLOAD_DEBUG=1 -DSEP_SUPPORT -DTIMING_SUPPORT -DHOST_LIBRARY=1 -I$(coi_inc_dir) -I$(liboffload_src_dir) -I$(libgomp_src_dir) -I$(libgomp_dir) -I$(include_src_dir) -I$(target_prefix_dir)/include -I$(target_build_dir) -I$(target_install_dir)/include - libgomp_plugin_intelmic_la_LDFLAGS = -L$(liboffload_dir)/.libs -loffloadmic_host -version-info 1:0:0 -else # PLUGIN_TARGET - plugin_includedir = $(libsubincludedir) - plugin_include_HEADERS = main_target_image.h - AM_CPPFLAGS = $(CPPFLAGS) -DLINUX -DCOI_LIBRARY_VERSION=2 -DOFFLOAD_DEBUG=1 -DSEP_SUPPORT -DTIMING_SUPPORT -DHOST_LIBRARY=0 -I$(coi_inc_dir) -I$(liboffload_src_dir) -I$(libgomp_dir) - AM_CXXFLAGS = $(CXXFLAGS) - AM_LDFLAGS = -L$(liboffload_dir)/.libs -L$(libgomp_dir)/.libs -loffloadmic_target -lcoi_device -lgomp -rdynamic -endif - -main_target_image.h: offload_target_main - @echo -n "const int image_size = " > $@ - @stat -c '%s' $< >> $@ - @echo ";" >> $@ - @echo "struct MainTargetImage {" >> $@ - @echo " int64_t size;" >> $@ - @echo " char name[sizeof \"offload_target_main\"];" >> $@ - @echo " uint8_t data[image_size];" >> $@ - @echo "};" >> $@ - @echo "extern \"C\" const MainTargetImage main_target_image = {" >> $@ - @echo " image_size, \"offload_target_main\"," >> $@ - @cat $< | xxd -include >> $@ - @echo "};" >> $@ - -offload_target_main: $(liboffload_dir)/ofldbegin.o offload_target_main.o $(liboffload_dir)/ofldend.o - $(CXX) $(AM_LDFLAGS) $^ -o $@ - -offload_target_main.o: offload_target_main.cpp - $(CXX) $(AM_CXXFLAGS) $(AM_CPPFLAGS) -c $< -o $@ - -# Work around what appears to be a GNU make bug handling MAKEFLAGS -# values defined in terms of make variables, as is the case for CC and -# friends when we are called from the top level Makefile. -AM_MAKEFLAGS = \ - "AR_FLAGS=$(AR_FLAGS)" \ - "CC_FOR_BUILD=$(CC_FOR_BUILD)" \ - "CFLAGS=$(CFLAGS)" \ - "CXXFLAGS=$(CXXFLAGS)" \ - "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \ - "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \ - "INSTALL=$(INSTALL)" \ - "INSTALL_DATA=$(INSTALL_DATA)" \ - "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ - "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \ - "JC1FLAGS=$(JC1FLAGS)" \ - "LDFLAGS=$(LDFLAGS)" \ - "LIBCFLAGS=$(LIBCFLAGS)" \ - "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \ - "MAKE=$(MAKE)" \ - "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \ - "PICFLAG=$(PICFLAG)" \ - "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \ - "SHELL=$(SHELL)" \ - "RUNTESTFLAGS=$(RUNTESTFLAGS)" \ - "exec_prefix=$(exec_prefix)" \ - "infodir=$(infodir)" \ - "libdir=$(libdir)" \ - "prefix=$(prefix)" \ - "includedir=$(includedir)" \ - "AR=$(AR)" \ - "AS=$(AS)" \ - "LD=$(LD)" \ - "LIBCFLAGS=$(LIBCFLAGS)" \ - "NM=$(NM)" \ - "PICFLAG=$(PICFLAG)" \ - "RANLIB=$(RANLIB)" \ - "DESTDIR=$(DESTDIR)" - -MAKEOVERRIDES = - -include $(top_srcdir)/../../multilib.am diff --git a/liboffloadmic/plugin/Makefile.in b/liboffloadmic/plugin/Makefile.in deleted file mode 100644 index 8d5ad00..0000000 --- a/liboffloadmic/plugin/Makefile.in +++ /dev/null @@ -1,840 +0,0 @@ -# Makefile.in generated by automake 1.15.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2017 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@ - -# Plugin for offload execution on Intel MIC devices. -# -# Copyright (C) 2014-2017 Free Software Foundation, Inc. -# -# Contributed by Ilya Verbin <ilya.verbin@intel.com> and -# Andrey Turetskiy <andrey.turetskiy@intel.com>. -# -# This file is part of the GNU Offloading and Multi Processing Library -# (libgomp). -# -# Libgomp 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, or (at your option) -# any later version. -# -# Libgomp 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. -# -# Under Section 7 of GPL version 3, you are granted additional -# permissions described in the GCC Runtime Library Exception, version -# 3.1, as published by the Free Software Foundation. -# -# You should have received a copy of the GNU General Public License and -# a copy of the GCC Runtime Library Exception along with this program; -# see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -# <http://www.gnu.org/licenses/>. - - -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 = . -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/../../config/acx.m4 \ - $(top_srcdir)/../../config/depstand.m4 \ - $(top_srcdir)/../../config/toolexeclibdir.m4 \ - $(top_srcdir)/../../config/lead-dot.m4 \ - $(top_srcdir)/../../config/multi.m4 \ - $(top_srcdir)/../../config/override.m4 \ - $(top_srcdir)/../../libtool.m4 \ - $(top_srcdir)/../../ltoptions.m4 \ - $(top_srcdir)/../../ltsugar.m4 \ - $(top_srcdir)/../../ltversion.m4 \ - $(top_srcdir)/../../lt~obsolete.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) $(am__plugin_include_HEADERS_DIST) -am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ - configure.lineno config.status.lineno -mkinstalldirs = $(SHELL) $(top_srcdir)/../../mkinstalldirs -CONFIG_CLEAN_FILES = -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)$(plugin_includedir)" -LTLIBRARIES = $(toolexeclib_LTLIBRARIES) -libgomp_plugin_intelmic_la_LIBADD = -@PLUGIN_HOST_TRUE@am_libgomp_plugin_intelmic_la_OBJECTS = libgomp_plugin_intelmic_la-libgomp-plugin-intelmic.lo -libgomp_plugin_intelmic_la_OBJECTS = \ - $(am_libgomp_plugin_intelmic_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 = -libgomp_plugin_intelmic_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ - $(AM_CXXFLAGS) $(CXXFLAGS) \ - $(libgomp_plugin_intelmic_la_LDFLAGS) $(LDFLAGS) -o $@ -@PLUGIN_HOST_TRUE@am_libgomp_plugin_intelmic_la_rpath = -rpath \ -@PLUGIN_HOST_TRUE@ $(toolexeclibdir) -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__depfiles_maybe = depfiles -am__mv = mv -f -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) -AM_V_CXX = $(am__v_CXX_@AM_V@) -am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) -am__v_CXX_0 = @echo " CXX " $@; -am__v_CXX_1 = -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) -am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) -am__v_CXXLD_0 = @echo " CXXLD " $@; -am__v_CXXLD_1 = -SOURCES = $(libgomp_plugin_intelmic_la_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__plugin_include_HEADERS_DIST = main_target_image.h -HEADERS = $(plugin_include_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 -CSCOPE = cscope -AM_RECURSIVE_TARGETS = cscope -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -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@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -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@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -accel_search_dir = @accel_search_dir@ -accel_target = @accel_target@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -get_gcc_base_ver = @get_gcc_base_ver@ -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@ -multi_basedir = @multi_basedir@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -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 -ACLOCAL_AMFLAGS = -I ../.. -I ../../config - -# Directories -build_dir = $(top_builddir) -source_dir = $(top_srcdir) -coi_inc_dir = $(top_srcdir)/../include/coi -include_src_dir = $(top_srcdir)/../../include -libgomp_src_dir = $(top_srcdir)/../../libgomp -libgomp_dir = $(build_dir)/../../libgomp -liboffload_src_dir = $(top_srcdir)/../runtime -liboffload_dir = $(top_builddir)/.. - -# May be used by toolexeclibdir. -gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../../gcc/BASE-VER) -libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/include -# Search for main_target_image.h in these directories -target_prefix_dir = $(libdir)/gcc/$(accel_target)/$(gcc_version)$(MULTISUBDIR) -target_build_dir = $(accel_search_dir)/$(accel_target)$(MULTISUBDIR)/liboffloadmic/plugin -target_install_dir = $(accel_search_dir)/lib/gcc/$(accel_target)/$(gcc_version)$(MULTISUBDIR) -@PLUGIN_HOST_TRUE@toolexeclib_LTLIBRARIES = libgomp-plugin-intelmic.la -@PLUGIN_HOST_TRUE@libgomp_plugin_intelmic_la_SOURCES = libgomp-plugin-intelmic.cpp -@PLUGIN_HOST_TRUE@libgomp_plugin_intelmic_la_CPPFLAGS = $(CPPFLAGS) -DLINUX -DCOI_LIBRARY_VERSION=2 -DOFFLOAD_DEBUG=1 -DSEP_SUPPORT -DTIMING_SUPPORT -DHOST_LIBRARY=1 -I$(coi_inc_dir) -I$(liboffload_src_dir) -I$(libgomp_src_dir) -I$(libgomp_dir) -I$(include_src_dir) -I$(target_prefix_dir)/include -I$(target_build_dir) -I$(target_install_dir)/include -@PLUGIN_HOST_TRUE@libgomp_plugin_intelmic_la_LDFLAGS = -L$(liboffload_dir)/.libs -loffloadmic_host -version-info 1:0:0 -@PLUGIN_HOST_FALSE@plugin_includedir = $(libsubincludedir) -@PLUGIN_HOST_FALSE@plugin_include_HEADERS = main_target_image.h -@PLUGIN_HOST_FALSE@AM_CPPFLAGS = $(CPPFLAGS) -DLINUX -DCOI_LIBRARY_VERSION=2 -DOFFLOAD_DEBUG=1 -DSEP_SUPPORT -DTIMING_SUPPORT -DHOST_LIBRARY=0 -I$(coi_inc_dir) -I$(liboffload_src_dir) -I$(libgomp_dir) -@PLUGIN_HOST_FALSE@AM_CXXFLAGS = $(CXXFLAGS) -@PLUGIN_HOST_FALSE@AM_LDFLAGS = -L$(liboffload_dir)/.libs -L$(libgomp_dir)/.libs -loffloadmic_target -lcoi_device -lgomp -rdynamic - -# Work around what appears to be a GNU make bug handling MAKEFLAGS -# values defined in terms of make variables, as is the case for CC and -# friends when we are called from the top level Makefile. -AM_MAKEFLAGS = \ - "AR_FLAGS=$(AR_FLAGS)" \ - "CC_FOR_BUILD=$(CC_FOR_BUILD)" \ - "CFLAGS=$(CFLAGS)" \ - "CXXFLAGS=$(CXXFLAGS)" \ - "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \ - "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \ - "INSTALL=$(INSTALL)" \ - "INSTALL_DATA=$(INSTALL_DATA)" \ - "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ - "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \ - "JC1FLAGS=$(JC1FLAGS)" \ - "LDFLAGS=$(LDFLAGS)" \ - "LIBCFLAGS=$(LIBCFLAGS)" \ - "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \ - "MAKE=$(MAKE)" \ - "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \ - "PICFLAG=$(PICFLAG)" \ - "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \ - "SHELL=$(SHELL)" \ - "RUNTESTFLAGS=$(RUNTESTFLAGS)" \ - "exec_prefix=$(exec_prefix)" \ - "infodir=$(infodir)" \ - "libdir=$(libdir)" \ - "prefix=$(prefix)" \ - "includedir=$(includedir)" \ - "AR=$(AR)" \ - "AS=$(AS)" \ - "LD=$(LD)" \ - "LIBCFLAGS=$(LIBCFLAGS)" \ - "NM=$(NM)" \ - "PICFLAG=$(PICFLAG)" \ - "RANLIB=$(RANLIB)" \ - "DESTDIR=$(DESTDIR)" - -MAKEOVERRIDES = -MULTISRCTOP = -MULTIBUILDTOP = -MULTIDIRS = -MULTISUBDIR = -MULTIDO = true -MULTICLEAN = true -all: all-am - -.SUFFIXES: -.SUFFIXES: .cpp .lo .o .obj -am--refresh: Makefile - @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../../multilib.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__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ - esac; -$(top_srcdir)/../../multilib.am $(am__empty): - -$(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): - -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}; \ - } - -libgomp-plugin-intelmic.la: $(libgomp_plugin_intelmic_la_OBJECTS) $(libgomp_plugin_intelmic_la_DEPENDENCIES) $(EXTRA_libgomp_plugin_intelmic_la_DEPENDENCIES) - $(AM_V_CXXLD)$(libgomp_plugin_intelmic_la_LINK) $(am_libgomp_plugin_intelmic_la_rpath) $(libgomp_plugin_intelmic_la_OBJECTS) $(libgomp_plugin_intelmic_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgomp_plugin_intelmic_la-libgomp-plugin-intelmic.Plo@am__quote@ - -.cpp.o: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< - -.cpp.obj: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cpp.lo: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< - -libgomp_plugin_intelmic_la-libgomp-plugin-intelmic.lo: libgomp-plugin-intelmic.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgomp_plugin_intelmic_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libgomp_plugin_intelmic_la-libgomp-plugin-intelmic.lo -MD -MP -MF $(DEPDIR)/libgomp_plugin_intelmic_la-libgomp-plugin-intelmic.Tpo -c -o libgomp_plugin_intelmic_la-libgomp-plugin-intelmic.lo `test -f 'libgomp-plugin-intelmic.cpp' || echo '$(srcdir)/'`libgomp-plugin-intelmic.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgomp_plugin_intelmic_la-libgomp-plugin-intelmic.Tpo $(DEPDIR)/libgomp_plugin_intelmic_la-libgomp-plugin-intelmic.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='libgomp-plugin-intelmic.cpp' object='libgomp_plugin_intelmic_la-libgomp-plugin-intelmic.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgomp_plugin_intelmic_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libgomp_plugin_intelmic_la-libgomp-plugin-intelmic.lo `test -f 'libgomp-plugin-intelmic.cpp' || echo '$(srcdir)/'`libgomp-plugin-intelmic.cpp - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool config.lt -install-plugin_includeHEADERS: $(plugin_include_HEADERS) - @$(NORMAL_INSTALL) - @list='$(plugin_include_HEADERS)'; test -n "$(plugin_includedir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(plugin_includedir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(plugin_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)$(plugin_includedir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(plugin_includedir)" || exit $$?; \ - done - -uninstall-plugin_includeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(plugin_include_HEADERS)'; test -n "$(plugin_includedir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(plugin_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" -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-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 - -rm -f cscope.out cscope.in.out cscope.po.out cscope.files -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) $(HEADERS) all-local -installdirs: - for dir in "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(plugin_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) - -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 clean-local \ - clean-toolexeclibLTLIBRARIES mostlyclean-am - -distclean: distclean-am - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-local distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: install-plugin_includeHEADERS - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: install-exec-local install-toolexeclibLTLIBRARIES - -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 $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic \ - maintainer-clean-local - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool mostlyclean-local - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-plugin_includeHEADERS \ - uninstall-toolexeclibLTLIBRARIES - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am all-local am--refresh check \ - check-am clean clean-cscope clean-generic clean-libtool \ - clean-local clean-toolexeclibLTLIBRARIES cscope cscopelist-am \ - ctags ctags-am distclean distclean-compile distclean-generic \ - distclean-libtool distclean-local distclean-tags 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-exec-local install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-plugin_includeHEADERS \ - install-ps install-ps-am install-strip \ - install-toolexeclibLTLIBRARIES installcheck installcheck-am \ - installdirs maintainer-clean maintainer-clean-generic \ - maintainer-clean-local mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \ - pdf-am ps ps-am tags tags-am uninstall uninstall-am \ - uninstall-plugin_includeHEADERS \ - uninstall-toolexeclibLTLIBRARIES - -.PRECIOUS: Makefile - - -main_target_image.h: offload_target_main - @echo -n "const int image_size = " > $@ - @stat -c '%s' $< >> $@ - @echo ";" >> $@ - @echo "struct MainTargetImage {" >> $@ - @echo " int64_t size;" >> $@ - @echo " char name[sizeof \"offload_target_main\"];" >> $@ - @echo " uint8_t data[image_size];" >> $@ - @echo "};" >> $@ - @echo "extern \"C\" const MainTargetImage main_target_image = {" >> $@ - @echo " image_size, \"offload_target_main\"," >> $@ - @cat $< | xxd -include >> $@ - @echo "};" >> $@ - -offload_target_main: $(liboffload_dir)/ofldbegin.o offload_target_main.o $(liboffload_dir)/ofldend.o - $(CXX) $(AM_LDFLAGS) $^ -o $@ - -offload_target_main.o: offload_target_main.cpp - $(CXX) $(AM_CXXFLAGS) $(AM_CPPFLAGS) -c $< -o $@ - -# GNU Make needs to see an explicit $(MAKE) variable in the command it -# runs to enable its job server during parallel builds. Hence the -# comments below. -all-multi: - $(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do # $(MAKE) -install-multi: - $(MULTIDO) $(AM_MAKEFLAGS) DO=install multi-do # $(MAKE) -mostlyclean-multi: - $(MULTICLEAN) $(AM_MAKEFLAGS) DO=mostlyclean multi-clean # $(MAKE) -clean-multi: - $(MULTICLEAN) $(AM_MAKEFLAGS) DO=clean multi-clean # $(MAKE) -distclean-multi: - $(MULTICLEAN) $(AM_MAKEFLAGS) DO=distclean multi-clean # $(MAKE) -maintainer-clean-multi: - $(MULTICLEAN) $(AM_MAKEFLAGS) DO=maintainer-clean multi-clean # $(MAKE) - -.MAKE .PHONY: all-multi clean-multi distclean-multi install-am \ - install-multi maintainer-clean-multi mostlyclean-multi - -install-exec-local: install-multi - -all-local: all-multi -mostlyclean-local: mostlyclean-multi -clean-local: clean-multi -distclean-local: distclean-multi -maintainer-clean-local: maintainer-clean-multi - -# 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/liboffloadmic/plugin/aclocal.m4 b/liboffloadmic/plugin/aclocal.m4 deleted file mode 100644 index 9fa1d12..0000000 --- a/liboffloadmic/plugin/aclocal.m4 +++ /dev/null @@ -1,1180 +0,0 @@ -# generated automatically by aclocal 1.15.1 -*- Autoconf -*- - -# Copyright (C) 1996-2017 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'.])]) - -# Copyright (C) 2002-2017 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.15' -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.15.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.15.1])dnl -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) - -# AM_AUX_DIR_EXPAND -*- Autoconf -*- - -# Copyright (C) 2001-2017 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-2017 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-2017 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-2017 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. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named 'Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running 'make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "$am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} -])# _AM_OUTPUT_DEPENDENCY_COMMANDS - - -# AM_OUTPUT_DEPENDENCY_COMMANDS -# ----------------------------- -# This macro should only be invoked once -- use via AC_REQUIRE. -# -# This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each '.P' file that we will -# need in order to bootstrap the dependency handling code. -AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], -[AC_CONFIG_COMMANDS([depfiles], - [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) -]) - -# Do all the work for Automake. -*- Autoconf -*- - -# Copyright (C) 1996-2017 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: -# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html> -# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html> -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: <http://austingroupbugs.net/view.php?id=542> - -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: <http://www.gnu.org/software/coreutils/>. - -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-2017 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])]) - -# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- -# From Jim Meyering - -# Copyright (C) 1996-2017 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-2017 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 to see how make treats includes. -AC_DEFUN([AM_MAKE_INCLUDE], -[am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -AC_MSG_CHECKING([for style of include used by $am_make]) -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from 'make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi -AC_SUBST([am__include]) -AC_SUBST([am__quote]) -AC_MSG_RESULT([$_am_result]) -rm -f confinc confmf -]) - -# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- - -# Copyright (C) 1997-2017 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-2017 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-2017 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-2017 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-2017 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-2017 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-2017 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-2017 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-2017 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 <conftest.tar]) - AM_RUN_LOG([cat conftest.dir/file]) - grep GrepMe conftest.dir/file >/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([../../config/acx.m4]) -m4_include([../../config/depstand.m4]) -m4_include([../../config/toolexeclibdir.m4]) -m4_include([../../config/lead-dot.m4]) -m4_include([../../config/multi.m4]) -m4_include([../../config/override.m4]) -m4_include([../../libtool.m4]) -m4_include([../../ltoptions.m4]) -m4_include([../../ltsugar.m4]) -m4_include([../../ltversion.m4]) -m4_include([../../lt~obsolete.m4]) diff --git a/liboffloadmic/plugin/configure b/liboffloadmic/plugin/configure deleted file mode 100755 index de58b93..0000000 --- a/liboffloadmic/plugin/configure +++ /dev/null @@ -1,17000 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for Intel MIC Offload Plugin 1.0. -# -# -# 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 about your system, -$0: 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 </dev/null -exec 6>&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='Intel MIC Offload Plugin' -PACKAGE_TARNAME='libgomp-plugin-intelmic' -PACKAGE_VERSION='1.0' -PACKAGE_STRING='Intel MIC Offload Plugin 1.0' -PACKAGE_BUGREPORT='' -PACKAGE_URL='' - -# Factoring default headers for most tests. -ac_includes_default="\ -#include <stdio.h> -#ifdef HAVE_SYS_TYPES_H -# include <sys/types.h> -#endif -#ifdef HAVE_SYS_STAT_H -# include <sys/stat.h> -#endif -#ifdef STDC_HEADERS -# include <stdlib.h> -# include <stddef.h> -#else -# ifdef HAVE_STDLIB_H -# include <stdlib.h> -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include <memory.h> -# endif -# include <string.h> -#endif -#ifdef HAVE_STRINGS_H -# include <strings.h> -#endif -#ifdef HAVE_INTTYPES_H -# include <inttypes.h> -#endif -#ifdef HAVE_STDINT_H -# include <stdint.h> -#endif -#ifdef HAVE_UNISTD_H -# include <unistd.h> -#endif" - -ac_subst_vars='am__EXEEXT_FALSE -am__EXEEXT_TRUE -LTLIBOBJS -LIBOBJS -get_gcc_base_ver -toolexeclibdir -toolexecdir -CXXCPP -CPP -OTOOL64 -OTOOL -LIPO -NMEDIT -DSYMUTIL -RANLIB -AR -OBJDUMP -LN_S -NM -ac_ct_DUMPBIN -DUMPBIN -LD -FGREP -EGREP -GREP -SED -LIBTOOL -accel_target -accel_search_dir -PLUGIN_HOST_FALSE -PLUGIN_HOST_TRUE -multi_basedir -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__quote -am__include -DEPDIR -OBJEXT -EXEEXT -ac_ct_CC -CPPFLAGS -LDFLAGS -CFLAGS -CC -MAINT -MAINTAINER_MODE_FALSE -MAINTAINER_MODE_TRUE -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 -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' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -enable_silent_rules -enable_maintainer_mode -enable_dependency_tracking -enable_multilib -enable_version_specific_runtime_libs -with_toolexeclibdir -enable_shared -enable_static -with_pic -enable_fast_install -with_gnu_ld -enable_libtool_lock -with_gcc_major_version_only -' - ac_precious_vars='build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -CXX -CXXFLAGS -CCC -CPP -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 Intel MIC Offload Plugin 1.0 to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking ...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -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/libgomp-plugin-intelmic] - --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 Intel MIC Offload Plugin 1.0:";; - 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] - --enable-silent-rules less verbose build output (undo: "make V=1") - --disable-silent-rules verbose build output (undo: "make V=0") - --enable-maintainer-mode - enable make rules and dependencies not useful (and - sometimes confusing) to the casual installer - --enable-dependency-tracking - do not reject slow dependency extractors - --disable-dependency-tracking - speeds up one-time build - --enable-multilib build many library versions (default) - --enable-version-specific-runtime-libs - Specify that runtime libraries should be installed - in a compiler-specific directory - --enable-shared[=PKGS] build shared libraries [default=yes] - --enable-static[=PKGS] build static libraries [default=yes] - --enable-fast-install[=PKGS] - optimize for fast installation [default=yes] - --disable-libtool-lock avoid locking (might break parallel builds) - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-toolexeclibdir=DIR - install libraries built with a cross compiler within - DIR - --with-pic try to use only PIC/non-PIC objects [default=use - both] - --with-gnu-ld assume the C compiler uses GNU ld [default=no] - --with-gcc-major-version-only - use only GCC major number in filesystem paths - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a - nonstandard directory <lib dir> - LIBS libraries to pass to the linker, e.g. -l<library> - CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if - you have headers in a nonstandard directory <include dir> - CXX C++ compiler command - CXXFLAGS C++ compiler flags - 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 the package provider. -_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 -Intel MIC Offload Plugin configure 1.0 -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 <limits.h> declares $2. - For example, HP-UX 11i <limits.h> declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#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 -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 Intel MIC Offload Plugin $as_me 1.0, 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_aux_dir= -for ac_dir in ../.. "$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\"/../.." "$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} - - -am__api_version='1.15' - -# 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"` - -# Expand $ac_aux_dir to an absolute path. -am_aux_dir=`cd "$ac_aux_dir" && pwd` - -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='libgomp-plugin-intelmic' - VERSION='1.0' - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE "$PACKAGE" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define VERSION "$VERSION" -_ACEOF - -# Some tools Automake needs. - -ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} - - -AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} - - -AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} - - -AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} - - -MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} - -# For better backward compatibility. To be removed once Automake 1.9.x -# dies out for good. For more background, see: -# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html> -# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html> -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: <http://austingroupbugs.net/view.php?id=542> - -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: <http://www.gnu.org/software/coreutils/>. - -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 - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&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 - - - -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 <stdio.h> -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 <stdarg.h> -#include <stdio.h> -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" - - -am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 -$as_echo_n "checking for style of include used by $am_make... " >&6; } -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from 'make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 -$as_echo "$_am_result" >&6; } -rm -f confinc confmf - -# 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 - - -ac_config_files="$ac_config_files Makefile" - -# Default to --enable-multilib -# Check whether --enable-multilib was given. -if test "${enable_multilib+set}" = set; then : - enableval=$enable_multilib; case "$enableval" in - yes) multilib=yes ;; - no) multilib=no ;; - *) as_fn_error $? "bad value $enableval for multilib option" "$LINENO" 5 ;; - esac -else - multilib=yes -fi - - -# We may get other options which we leave undocumented: -# --with-target-subdir, --with-multisrctop, --with-multisubdir -# See config-ml.in if you want the gory details. - -if test "$srcdir" = "."; then - if test "$with_target_subdir" != "."; then - multi_basedir="$srcdir/$with_multisrctop../../.." - else - multi_basedir="$srcdir/$with_multisrctop../.." - fi -else - multi_basedir="$srcdir/../.." -fi - - -# Even if the default multilib is not a cross compilation, -# it may be that some of the other multilibs are. -if test $cross_compiling = no && test $multilib = yes \ - && test "x${with_multisubdir}" != x ; then - cross_compiling=maybe -fi - -ac_config_commands="$ac_config_commands default-1" - - -if test "${multilib}" = "yes"; then - multilib_arg="--enable-multilib" -else - multilib_arg= -fi - -# Make sure liboffloadmic is enabled -case "$enable_liboffloadmic" in - host | target) - ;; - *) - as_fn_error $? "Liboffloadmic is disabled" "$LINENO" 5 ;; -esac - if test x"$enable_liboffloadmic" = xhost; then - PLUGIN_HOST_TRUE= - PLUGIN_HOST_FALSE='#' -else - PLUGIN_HOST_TRUE='#' - PLUGIN_HOST_FALSE= -fi - - -# Get accel target and path to build or install tree of accel compiler -accel_search_dir= -accel_target= -if test x"$enable_liboffloadmic" = xhost; then - for accel in `echo $enable_offload_targets | sed -e 's#,# #g'`; do - accel_name=`echo $accel | sed 's/=.*//'` - accel_dir=`echo $accel | grep '=' | sed 's/.*=//'` - case "$accel_name" in - *-intelmic-* | *-intelmicemul-*) - accel_target=$accel_name - accel_search_dir=$accel_dir - ;; - esac - done - if test x"$accel_target" = x; then - as_fn_error $? "--enable-offload-targets does not contain intelmic target" "$LINENO" 5 - fi -fi - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --enable-version-specific-runtime-libs" >&5 -$as_echo_n "checking for --enable-version-specific-runtime-libs... " >&6; } -# Check whether --enable-version-specific-runtime-libs was given. -if test "${enable_version_specific_runtime_libs+set}" = set; then : - enableval=$enable_version_specific_runtime_libs; case "$enableval" in - yes) enable_version_specific_runtime_libs=yes ;; - no) enable_version_specific_runtime_libs=no ;; - *) as_fn_error $? "Unknown argument to enable/disable version-specific libs" "$LINENO" 5;; - esac -else - enable_version_specific_runtime_libs=no -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_version_specific_runtime_libs" >&5 -$as_echo "$enable_version_specific_runtime_libs" >&6; } - - - -# Check whether --with-toolexeclibdir was given. -if test "${with_toolexeclibdir+set}" = set; then : - withval=$with_toolexeclibdir; case ${with_toolexeclibdir} in - /) - ;; - */) - with_toolexeclibdir=`echo $with_toolexeclibdir | sed 's,/$,,'` - ;; -esac -else - with_toolexeclibdir=no -fi - - - -# Calculate toolexeclibdir. -# Also toolexecdir, though it's only used in toolexeclibdir. -case ${enable_version_specific_runtime_libs} in - yes) - # Need the gcc compiler version to know where to install libraries - # and header files if --enable-version-specific-runtime-libs option - # is selected. - toolexecdir='$(libdir)/gcc/$(target_alias)' - toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)' - ;; - no) - if test -n "$with_cross_host" && - test x"$with_cross_host" != x"no"; then - # Install a library built with a cross compiler in tooldir, not libdir. - toolexecdir='$(exec_prefix)/$(target_alias)' - case ${with_toolexeclibdir} in - no) - toolexeclibdir='$(toolexecdir)/lib' - ;; - *) - toolexeclibdir=${with_toolexeclibdir} - ;; - esac - else - toolexecdir='$(libdir)/gcc-lib/$(target_alias)' - toolexeclibdir='$(libdir)' - fi - multi_os_directory=`$CC -print-multi-os-directory` - case $multi_os_directory in - .) ;; # Avoid trailing /. - *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; - esac - ;; -esac - -enable_dlopen=yes - - - -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.2.7a' -macro_revision='1.3134' - - - - - - - - - - - - - -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 "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { $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 "$with_gnu_ld" = yes; 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 </dev/null` in - *GNU* | *'with BFD'*) - test "$with_gnu_ld" != no && break - ;; - *) - test "$with_gnu_ld" != yes && break - ;; - esac - fi - done - IFS="$lt_save_ifs" -else - lt_cv_path_LD="$LD" # Let the user override the test with a path. -fi -fi - -LD="$lt_cv_path_LD" -if test -n "$LD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&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 </dev/null` in -*GNU* | *'with BFD'*) - lt_cv_prog_gnu_ld=yes - ;; -*) - lt_cv_prog_gnu_ld=no - ;; -esac -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&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 - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS="$lt_save_ifs" - 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 "$lt_cv_path_NM" != "no"; 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 /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols" - ;; - *) - 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; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for 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 - ;; - - 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"; 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"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 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"} - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 -$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 -$as_echo "$xsi_shell" >&6; } - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 -$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } -lt_shell_append=no -( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 -$as_echo "$lt_shell_append" >&6; } - - -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 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 - darwin*) - if test "$GCC" = yes; 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 -# which responds to the $file_magic_cmd with a given extended regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. - -case $host_os in -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. - # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. - if ( test "$lt_cv_nm_interface" = "BSD nm" && 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 - lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' - 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 - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -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 Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi) - 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*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -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 - ;; -vxworks*) - # Assume VxWorks cross toolchains are built on Linux, possibly - # as canadian for Windows hosts. - 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_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}ar", so it can be a program name with args. -set dummy ${ac_tool_prefix}ar; 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}ar" - $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 - - -fi -if test -z "$ac_cv_prog_AR"; then - ac_ct_AR=$AR - # Extract the first word of "ar", so it can be a program name with args. -set dummy ar; ac_word=$2 -{ $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="ar" - $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 - - 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 -else - AR="$ac_cv_prog_AR" -fi - -test -z "$AR" && AR=ar -test -z "$AR_FLAGS" && AR_FLAGS=cru - - - - - - - - - - - -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 - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$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 "$host_cpu" = ia64; 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 - -# 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 -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$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 -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/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 - # and D for any global 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};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print 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 - - # 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 -#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. */ -const struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$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_save_LIBS="$LIBS" - lt_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_save_LIBS" - CFLAGS="$lt_save_CFLAGS" - else - echo "cannot find nm_test_func in $nlist" >&5 - fi - else - echo "cannot find nm_test_var in $nlist" >&5 - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 - fi - else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done - -fi - -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { $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 - - - - - - - - - - - - - - - - - - - - - - - -# Check whether --enable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then : - enableval=$enable_libtool_lock; -fi - -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${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 which ABI we are using. - 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 "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - 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 x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -sparc*-*solaris*) - # Find out which ABI we are using. - 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*) LD="${LD-ld} -m elf64_sparc" ;; - *) - 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" - - - 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 test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; 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 - 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 -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; 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; } - # Allow for Darwin 4-7 (macOS 10.0-10.3) although these are not expect to - # build without first building modern cctools / linker. - case $host_cpu-$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 (macOS 10.1) onwards we only need to adjust when the - # deployment target is forced to an earlier version. - case ${MACOSX_DEPLOYMENT_TARGET-UNSET},$host in - UNSET,*-darwin[89]*|UNSET,*-darwin[12][0123456789]*) - ;; - 10.[012][,.]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' - ;; - *) - ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; 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 "$lt_cv_ld_force_load" = "no"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - 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 -{ $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 <limits.h> to <assert.h> if __STDC__ is defined, since - # <limits.h> 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 <limits.h> -#else -# include <assert.h> -#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 <ac_nonexistent.h> -_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 <limits.h> to <assert.h> if __STDC__ is defined, since - # <limits.h> 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 <limits.h> -#else -# include <assert.h> -#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 <ac_nonexistent.h> -_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 <stdlib.h> -#include <stdarg.h> -#include <string.h> -#include <float.h> - -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 <string.h> - -_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 <stdlib.h> - -_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 <ctype.h> -#include <stdlib.h> -#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 - - - - - - -# Set options - - - - - 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; pic_mode="$withval" -else - pic_mode=default -fi - - -test -z "$pic_mode" && pic_mode=default - - - - - - - - # 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 - - - - - - - - - - - -# 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 "X${COLLECT_NAMES+set}" != Xset; 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 - -for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` - - -# 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 "$GCC" = yes; 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" - # 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 x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then - lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" -else - : -fi - -fi - - - - - - - lt_prog_compiler_wl= -lt_prog_compiler_pic= -lt_prog_compiler_static= - -{ $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 test "$GCC" = yes; then - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_static='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - fi - 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' - ;; - - 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 ' - lt_prog_compiler_pic='-Xcompiler -fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - lt_prog_compiler_wl='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - else - lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - 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' - ;; - - 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) - 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' - ;; - 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\ F* | *Sun*Fortran*) - # 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\ C*) - # Sun C 5.9 - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Wl,' - ;; - 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*) - 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 which 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}: result: $lt_prog_compiler_pic" >&5 -$as_echo "$lt_prog_compiler_pic" >&6; } - - - - - - -# -# 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" - # 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 x"$lt_cv_prog_compiler_pic_works" = xyes; then - case $lt_prog_compiler_pic in - "" | " "*) ;; - *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; - esac -else - lt_prog_compiler_pic= - lt_prog_compiler_can_build_shared=no -fi - -fi - - - - - - -# -# 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 x"$lt_cv_prog_compiler_static_works" = xyes; 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 "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; 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 "$hard_links" = no; 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_flag_spec_ld= - 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 "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd*) - 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 "$with_gnu_ld" = yes; 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 "$lt_use_gnu_ld_interface" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec= - fi - supports_anon_versioning=no - case `$LD -v 2>&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 "$host_cpu" != ia64; 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 <jrb3@best.com> 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/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--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 - ;; - - 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 | uclinuxfdpiceabi) - tmp_diet=no - if test "$host_os" = linux-dietlibc; 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 "$tmp_diet" = no - 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' ;; - 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 "x$supports_anon_versioning" = xyes; 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 - 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= - hardcode_libdir_flag_spec_ld='-rpath $libdir' - archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; 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 $compiler_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 $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - 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 $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 - ;; - - 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 can not -*** 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 $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - - if test "$ld_shlibs" = no; then - runpath_var= - hardcode_libdir_flag_spec= - export_dynamic_flag_spec= - whole_archive_flag_spec= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - allow_undefined_flag=unsupported - always_export_symbols=yes - archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test "$GCC" = yes && test -z "$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 "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global - # defined symbols, whereas GNU nm marks them as "W". - 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) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds='' - hardcode_direct=yes - hardcode_direct_absolute=yes - hardcode_libdir_separator=':' - link_all_deplibs=yes - file_list_spec='${wl}-f,' - - if test "$GCC" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= - fi - ;; - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - 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_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - cat 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 - } - }' -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 "$aix_libpath"; then - 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 "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' - allow_undefined_flag="-z nodefs" - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${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. - 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 - } - }' -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 "$aix_libpath"; then - 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 "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag=' ${wl}-bernotok' - allow_undefined_flag=' ${wl}-berok' - if test "$with_gnu_ld" = yes; 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 - # This is similar to how AIX traditionally builds its shared libraries. - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - 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. - 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' - fix_srcfile_path='`cygpath -w "$srcfile"`' - enable_shared_with_static_runtimes=yes - ;; - - darwin* | rhapsody*) - - - archive_cmds_need_lc=no - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - if test "$lt_cv_ld_force_load" = "yes"; 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*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; 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 -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - hpux9*) - if test "$GCC" = yes; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - export_dynamic_flag_spec='${wl}-E' - ;; - - hpux10*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - archive_cmds='$CC -shared -fPIC ${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 "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_flag_spec_ld='+b $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 "$GCC" = yes && test "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -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 x"$lt_cv_prog_compiler__b" = xyes; 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 "$with_gnu_ld" = no; 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 "$GCC" = yes; then - archive_cmds='$CC -shared $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. - 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) {} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - archive_expsym_cmds='$CC -shared $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 -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" - 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 - ;; - - 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*) - 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__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - else - case $host_os in - openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-R$libdir' - ;; - *) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - ;; - esac - fi - else - ld_shlibs=no - fi - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && 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 "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && 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 "$GCC" = yes; then - wlarc='${wl}' - archive_cmds='$CC -shared ${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 ${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 "$GCC" = yes; 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 "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - sysv4) - case $host_vendor in - sni) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' - reload_cmds='$CC -r -o $output$reload_objs' - hardcode_direct=no - ;; - motorola) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - - sysv4.3*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs=yes - fi - ;; - - sysv4*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 "$GCC" = yes; 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 can NOT 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 "$GCC" = yes; 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 x$host_vendor = xsni; 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 "$ld_shlibs" = no && 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 "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $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 "$GCC" = yes; 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` - 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" - else - 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 - 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 - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib<name>.so - # instead of lib<name>.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - 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%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) - 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 - ;; - - *) - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' - ;; - esac - dynamic_linker='Win32 ld.exe' - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${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 - 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} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - 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 - 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=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/beos/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 "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - 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 "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. - -# uclinux* changes (here and below) have been submitted to the libtool -# project, but have not yet been accepted: they are GCC-local changes -# for the time being. (See -# https://lists.gnu.org/archive/html/libtool-patches/2018-05/msg00000.html) -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu* | uclinuxfdpiceabi) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # 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 - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/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="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=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*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - 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 "$with_gnu_ld" = yes; 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 - 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 - 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 - ;; - -# Shared libraries for VwWorks, >= 7 only at this stage -# and (fpic) still incompatible with "large" code models -# in a few configurations. Only for RTP mode in any case, -# and upon explicit request at configure time. -vxworks7*) - dynamic_linker=no - case ${with_multisubdir}-${enable_shared} in - *large*) - ;; - *mrtp*-yes) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker="$host_os module_loader" - ;; - esac - ;; -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $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 "X$hardcode_automatic" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$hardcode_direct" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && - test "$hardcode_minus_L" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 -$as_echo "$hardcode_action" >&6; } - -if test "$hardcode_action" = relink || - test "$inherit_rpath" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | 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 - - ;; - - *) - 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 "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - 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 "$cross_compiling" = yes; then : - lt_cv_dlopen_self=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line 11096 "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include <dlfcn.h> -#endif - -#include <stdio.h> - -#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 -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -void fnord () __attribute__((visibility("default"))); -#endif - -void fnord () { int i=42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - 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 "x$lt_cv_dlopen_self" = xyes; 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 "$cross_compiling" = yes; then : - lt_cv_dlopen_self_static=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line 11202 "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include <dlfcn.h> -#endif - -#include <stdio.h> - -#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 -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -void fnord () __attribute__((visibility("default"))); -#endif - -void fnord () { int i=42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - 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 which 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 "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[4-9]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - 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 "$enable_shared" = yes || 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 "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; 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 <limits.h> to <assert.h> if __STDC__ is defined, since - # <limits.h> 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 <limits.h> -#else -# include <assert.h> -#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 <ac_nonexistent.h> -_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 <limits.h> to <assert.h> if __STDC__ is defined, since - # <limits.h> 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 <limits.h> -#else -# include <assert.h> -#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 <ac_nonexistent.h> -_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_flag_spec_ld_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 "$_lt_caught_CXX_error" != yes; 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_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++"} - compiler=$CC - compiler_CXX=$CC - for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` - - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test "$GXX" = yes; then - lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' - else - lt_prog_compiler_no_builtin_flag_CXX= - fi - - if test "$GXX" = yes; then - # Set up default GNU C++ configuration - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { $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 "$with_gnu_ld" = yes; 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 </dev/null` in - *GNU* | *'with BFD'*) - test "$with_gnu_ld" != no && break - ;; - *) - test "$with_gnu_ld" != yes && break - ;; - esac - fi - done - IFS="$lt_save_ifs" -else - lt_cv_path_LD="$LD" # Let the user override the test with a path. -fi -fi - -LD="$lt_cv_path_LD" -if test -n "$LD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&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 </dev/null` in -*GNU* | *'with BFD'*) - lt_cv_prog_gnu_ld=yes - ;; -*) - lt_cv_prog_gnu_ld=no - ;; -esac -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&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 "$with_gnu_ld" = yes; 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 "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds_CXX='' - hardcode_direct_CXX=yes - hardcode_direct_absolute_CXX=yes - hardcode_libdir_separator_CXX=':' - link_all_deplibs_CXX=yes - file_list_spec_CXX='${wl}-f,' - - if test "$GXX" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct_CXX=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L_CXX=yes - hardcode_libdir_flag_spec_CXX='-L$libdir' - hardcode_libdir_separator_CXX= - fi - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - 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_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag_CXX='-berok' - # Determine the default libpath from the value encoded in an empty - # executable. - cat 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 - } - }' -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 "$aix_libpath"; then - 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 "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - - hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" - - archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' - allow_undefined_flag_CXX="-z nodefs" - archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${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. - 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 - } - }' -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 "$aix_libpath"; then - 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 "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - - hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag_CXX=' ${wl}-bernotok' - allow_undefined_flag_CXX=' ${wl}-berok' - if test "$with_gnu_ld" = yes; 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 - # This is similar to how AIX traditionally builds its shared - # libraries. - archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag_CXX=unsupported - # Joseph Beckenbach <jrb3@best.com> 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*) - # _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 (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs_CXX=no - fi - ;; - darwin* | rhapsody*) - - - archive_cmds_need_lc_CXX=no - hardcode_direct_CXX=no - hardcode_automatic_CXX=yes - hardcode_shlibpath_var_CXX=unsupported - if test "$lt_cv_ld_force_load" = "yes"; 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*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; 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 "$lt_cv_apple_cc_single_mod" != "yes"; 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 - - ;; - - 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 - ;; - - gnu*) - ;; - - 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 $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $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 "$GXX" = yes; then - archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - 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 ${wl}+nodefaultrpath -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 "$GXX" = yes; then - if test $with_gnu_ld = no; then - case $host_cpu in - hppa*64*) - archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - 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 "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && 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) - 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 "x$supports_anon_versioning" = xyes; 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 - ;; - - openbsd2*) - # C++ shared libraries are fairly broken - ld_shlibs_CXX=no - ;; - - openbsd*) - 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__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - export_dynamic_flag_spec_CXX='${wl}-E' - whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - fi - output_verbose_link_cmd=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 "$GXX" = yes && test "$with_gnu_ld" = no; 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 -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*) - # 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 "$GXX" = yes && test "$with_gnu_ld" = no; then - no_undefined_flag_CXX=' ${wl}-z ${wl}defs' - if $CC --version | $GREP -v '^2\.7' > /dev/null; then - archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -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 can NOT 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*) - # For VxWorks ports, we assume the use of a GNU linker with - # standard elf conventions. - ld_shlibs_CXX=yes - ;; - - *) - # 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 "$ld_shlibs_CXX" = no && 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 - -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 $p in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test $p = "-L" || - test $p = "-R"; then - prev=$p - continue - else - prev= - fi - - if test "$pre_test_object_deps_done" = no; then - case $p in - -L* | -R*) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$compiler_lib_search_path_CXX"; then - compiler_lib_search_path_CXX="${prev}${p}" - else - compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$postdeps_CXX"; then - postdeps_CXX="${prev}${p}" - else - postdeps_CXX="${postdeps_CXX} ${prev}${p}" - fi - fi - ;; - - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test "$pre_test_object_deps_done" = no; then - if test -z "$predep_objects_CXX"; then - predep_objects_CXX="$p" - else - predep_objects_CXX="$predep_objects_CXX $p" - fi - else - if test -z "$postdep_objects_CXX"; then - postdep_objects_CXX="$p" - else - postdep_objects_CXX="$postdep_objects_CXX $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling CXX test program" -fi - -$RM -f confest.$objext - -# 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= - ;; - -linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - if test "$solaris_use_stlport4" != yes; then - postdeps_CXX='-library=Cstd -library=Crun' - fi - ;; - esac - ;; - -solaris*) - case $cc_basename in - CC*) - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - # Adding this requires a known-good setup of shared libraries for - # Sun compiler versions before 5.6, else PIC objects from an old - # archive will be linked into the output, leading to subtle bugs. - if test "$solaris_use_stlport4" != yes; then - postdeps_CXX='-library=Cstd -library=Crun' - fi - ;; - esac - ;; -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= - -{ $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; } - - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_CXX='-Bstatic' - fi - 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' - ;; - 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 "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_CXX='-Bstatic' - else - lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_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 - ;; - 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 "$host_cpu" != ia64; 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) - 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*) - # 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 which do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic_CXX= - ;; - *) - lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic_CXX" >&5 -$as_echo "$lt_prog_compiler_pic_CXX" >&6; } - - - -# -# 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" - # 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 x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then - case $lt_prog_compiler_pic_CXX in - "" | " "*) ;; - *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; - esac -else - lt_prog_compiler_pic_CXX= - lt_prog_compiler_can_build_shared_CXX=no -fi - -fi - - - -# -# 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 x"$lt_cv_prog_compiler_static_works_CXX" = xyes; 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 "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - { $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 "$hard_links" = no; 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' - 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 AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global defined - # symbols, whereas GNU nm marks them as "W". - 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) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - export_symbols_cmds_CXX="$ltdll_cmds" - ;; - cygwin* | mingw* | cegcc*) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - ;; - *) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac - exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 -$as_echo "$ld_shlibs_CXX" >&6; } -test "$ld_shlibs_CXX" = no && 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 "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds_CXX in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $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 - 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 - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib<name>.so - # instead of lib<name>.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - 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%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) - 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 - ;; - - *) - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' - ;; - esac - dynamic_linker='Win32 ld.exe' - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${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 - 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} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - 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 - 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=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/beos/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 "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - 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 "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. - -# uclinux* changes (here and below) have been submitted to the libtool -# project, but have not yet been accepted: they are GCC-local changes -# for the time being. (See -# https://lists.gnu.org/archive/html/libtool-patches/2018-05/msg00000.html) -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu* | uclinuxfdpiceabi) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # 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 - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/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="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=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*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - 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 "$with_gnu_ld" = yes; 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 - 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 - 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 - ;; - -# Shared libraries for VwWorks, >= 7 only at this stage -# and (fpic) still incompatible with "large" code models -# in a few configurations. Only for RTP mode in any case, -# and upon explicit request at configure time. -vxworks7*) - dynamic_linker=no - case ${with_multisubdir}-${enable_shared} in - *large*) - ;; - *mrtp*-yes) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker="$host_os module_loader" - ;; - esac - ;; -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $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 "X$hardcode_automatic_CXX" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$hardcode_direct_CXX" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no && - test "$hardcode_minus_L_CXX" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action_CXX=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action_CXX=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action_CXX=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 -$as_echo "$hardcode_action_CXX" >&6; } - -if test "$hardcode_action_CXX" = relink || - test "$inherit_rpath_CXX" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - - fi # test -n "$compiler" - - CC=$lt_save_CC - 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 "$_lt_caught_CXX_error" != yes - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - - - - - - - - - ac_config_commands="$ac_config_commands libtool" - - - - -# Only expand once: - - -# Forbid libtool to hardcode RPATH, because we want to be able to specify -# library search directory using LD_LIBRARY_PATH -hardcode_into_libs=no - - - -# Determine what GCC version number to use in filesystem paths. - - get_gcc_base_ver="cat" - -# Check whether --with-gcc-major-version-only was given. -if test "${with_gcc_major_version_only+set}" = set; then : - withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then - get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'" - fi - -fi - - - - -# Must be last -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}' - -# Transform confdefs.h into DEFS. -# Protect against shell expansion while executing Makefile rules. -# Protect against Makefile macro expansion. -# -# If the first sed substitution is executed (which looks for macros that -# take arguments), then branch to the quote section. Otherwise, -# look for a macro that doesn't take arguments. -ac_script=' -:mline -/\\$/{ - N - s,\\\n,, - b mline -} -t clear -:clear -s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g -t quote -s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g -t quote -b any -:quote -s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g -s/\[/\\&/g -s/\]/\\&/g -s/\$/$$/g -H -:any -${ - g - s/^\n// - s/\n/ /g - p -} -' -DEFS=`sed -n "$ac_script" confdefs.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 "${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 "${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 "${PLUGIN_HOST_TRUE}" && test -z "${PLUGIN_HOST_FALSE}"; then - as_fn_error $? "conditional \"PLUGIN_HOST\" 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 Intel MIC Offload Plugin $as_me 1.0, 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 - - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -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 - -Configuration files: -$config_files - -Configuration commands: -$config_commands - -Report bugs to the package provider." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" -ac_cs_version="\\ -Intel MIC Offload Plugin config.status 1.0 -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;; - --he | --h | --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 -# -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" - -srcdir="$srcdir" -host="$host" -target="$target" -with_multisubdir="$with_multisubdir" -with_multisrctop="$with_multisrctop" -with_target_subdir="$with_target_subdir" -ac_configure_args="${multilib_arg} ${ac_configure_args}" -multi_basedir="$multi_basedir" -CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} -CC="$CC" -CXX="$CXX" -GFORTRAN="$GFORTRAN" -GDC="$GDC" - - -# 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"`' -SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' -ECHO='`$ECHO "$ECHO" | $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"`' -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"`' -AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' -AR_FLAGS='`$ECHO "$AR_FLAGS" | $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_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"`' -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_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $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"`' -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_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $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"`' -fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $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"`' -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"`' -sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $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_wl_CXX='`$ECHO "$lt_prog_compiler_wl_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_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_flag_spec_ld_CXX='`$ECHO "$hardcode_libdir_flag_spec_ld_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"`' -fix_srcfile_path_CXX='`$ECHO "$fix_srcfile_path_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"`' -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 \ -SED \ -GREP \ -EGREP \ -FGREP \ -LD \ -NM \ -LN_S \ -lt_SP2NL \ -lt_NL2SP \ -reload_flag \ -OBJDUMP \ -deplibs_check_method \ -file_magic_cmd \ -AR \ -AR_FLAGS \ -STRIP \ -RANLIB \ -CC \ -CFLAGS \ -compiler \ -lt_cv_sys_global_symbol_pipe \ -lt_cv_sys_global_symbol_to_cdecl \ -lt_cv_sys_global_symbol_to_c_name_address \ -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ -lt_prog_compiler_no_builtin_flag \ -lt_prog_compiler_wl \ -lt_prog_compiler_pic \ -lt_prog_compiler_static \ -lt_cv_prog_compiler_c_o \ -need_locks \ -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_flag_spec_ld \ -hardcode_libdir_separator \ -fix_srcfile_path \ -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_wl_CXX \ -lt_prog_compiler_pic_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_flag_spec_ld_CXX \ -hardcode_libdir_separator_CXX \ -fix_srcfile_path_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\\"\\\`\\\\\\"" - ;; - *) - 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 \ -postinstall_cmds \ -postuninstall_cmds \ -finish_cmds \ -sys_lib_search_path_spec \ -sys_lib_dlsearch_path_spec \ -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; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -ac_aux_dir='$ac_aux_dir' -xsi_shell='$xsi_shell' -lt_shell_append='$lt_shell_append' - -# See if we are running on zsh, and set the options which 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' - TIMESTAMP='$TIMESTAMP' - RM='$RM' - ofile='$ofile' - - - - - - -_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 - "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; - "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; - - *) 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_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 2>/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 -' <conf$$subs.awk | sed ' -/^[^""]/{ - N - s/\n// -} -' >>$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" - - -eval set X " :F $CONFIG_FILES :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 - ;; - - - :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 - "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. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named 'Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`$as_dirname -- "$mf" || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running 'make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "$am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`$as_dirname -- "$file" || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir=$dirpart/$fdir; as_fn_mkdir_p - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} - ;; - "default-1":C) -# Only add multilib support code if we just rebuilt the top-level -# Makefile. -case " $CONFIG_FILES " in - *" Makefile "*) - ac_file=Makefile . ${multi_basedir}/config-ml.in - ;; -esac ;; - "libtool":C) - - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $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. -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009 Free Software Foundation, Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# 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 -# 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 GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - -# The names of the tagged configurations supported by this script. -available_tags="CXX " - -# ### 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 - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# An echo program that protects backslashes. -ECHO=$lt_ECHO - -# 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 - -# 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 - -# The archiver. -AR=$lt_AR -AR_FLAGS=$lt_AR_FLAGS - -# 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 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 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 - -# 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 - -# Run-time system search path for libraries. -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec - -# 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 - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic - -# 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 - -# If ld is used when linking, flag to hardcode \$libdir into a binary -# during linking. This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct - -# Set to "yes" if using 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 - -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path=$lt_fix_srcfile_path - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds - -# 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 - -# 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 - - 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 "X${COLLECT_NAMES+set}" != Xset; 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 '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - case $xsi_shell in - yes) - cat << \_LT_EOF >> "$cfgfile" - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac -} - -# func_basename file -func_basename () -{ - func_basename_result="${1##*/}" -} - -# func_dirname_and_basename file append nondir_replacement -# perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# Implementation must be kept synchronized with func_dirname -# and func_basename. For efficiency, we do not delegate to -# those functions but instead duplicate the functionality here. -func_dirname_and_basename () -{ - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac - func_basename_result="${1##*/}" -} - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -func_stripname () -{ - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary parameter first. - func_stripname_result=${3} - func_stripname_result=${func_stripname_result#"${1}"} - func_stripname_result=${func_stripname_result%"${2}"} -} - -# func_opt_split -func_opt_split () -{ - func_opt_split_opt=${1%%=*} - func_opt_split_arg=${1#*=} -} - -# func_lo2o object -func_lo2o () -{ - case ${1} in - *.lo) func_lo2o_result=${1%.lo}.${objext} ;; - *) func_lo2o_result=${1} ;; - esac -} - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=${1%.*}.lo -} - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=$(( $* )) -} - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=${#1} -} - -_LT_EOF - ;; - *) # Bourne compatible functions. - cat << \_LT_EOF >> "$cfgfile" - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - # Extract subdirectory from the argument. - func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi -} - -# func_basename file -func_basename () -{ - func_basename_result=`$ECHO "${1}" | $SED "$basename"` -} - - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# func_strip_suffix prefix name -func_stripname () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} - -# sed scripts: -my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' -my_sed_long_arg='1s/^-[^=]*=//' - -# func_opt_split -func_opt_split () -{ - func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"` - func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"` -} - -# func_lo2o object -func_lo2o () -{ - func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` -} - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` -} - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=`expr "$@"` -} - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` -} - -_LT_EOF -esac - -case $lt_shell_append in - yes) - cat << \_LT_EOF >> "$cfgfile" - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "$1+=\$2" -} -_LT_EOF - ;; - *) - cat << \_LT_EOF >> "$cfgfile" - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "$1=\$$1\$2" -} - -_LT_EOF - ;; - esac - - - sed -n '/^# Generated shell functions inserted here/,$p' "$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 - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl_CXX - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic_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 - -# If ld is used when linking, flag to hardcode \$libdir into a binary -# during linking. This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct_CXX - -# Set to "yes" if using 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 - -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path=$lt_fix_srcfile_path_CXX - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols_CXX - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds_CXX - -# 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 - -# 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 - - ;; - - 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 - diff --git a/liboffloadmic/plugin/configure.ac b/liboffloadmic/plugin/configure.ac deleted file mode 100644 index cbcd013..0000000 --- a/liboffloadmic/plugin/configure.ac +++ /dev/null @@ -1,147 +0,0 @@ -# Plugin for offload execution on Intel MIC devices. -# -# Copyright (C) 2014 Free Software Foundation, Inc. -# -# Contributed by Andrey Turetskiy <andrey.turetskiy@intel.com>. -# -# This file is part of the GNU Offloading and Multi Processing Library -# (libgomp). -# -# Libgomp 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, or (at your option) -# any later version. -# -# Libgomp 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. -# -# Under Section 7 of GPL version 3, you are granted additional -# permissions described in the GCC Runtime Library Exception, version -# 3.1, as published by the Free Software Foundation. -# -# You should have received a copy of the GNU General Public License and -# a copy of the GCC Runtime Library Exception along with this program; -# see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -# <http://www.gnu.org/licenses/>. - -# Process this file with autoconf to produce a configure script, like so: -# aclocal -I ../.. -I ../../config && autoconf && automake - -AC_INIT([Intel MIC Offload Plugin], [1.0], ,[libgomp-plugin-intelmic]) - -AC_CONFIG_AUX_DIR(../..) - -AC_CANONICAL_SYSTEM -target_alias=${target_alias-$host_alias} -AC_SUBST(target_alias) - -AM_INIT_AUTOMAKE([1.9.0 foreign no-dist]) - -AM_MAINTAINER_MODE - -AC_PROG_CC -AC_PROG_CXX -AC_CONFIG_FILES([Makefile]) -AM_ENABLE_MULTILIB(, ../..) - -if test "${multilib}" = "yes"; then - multilib_arg="--enable-multilib" -else - multilib_arg= -fi - -# Make sure liboffloadmic is enabled -case "$enable_liboffloadmic" in - host | target) - ;; - *) - AC_MSG_ERROR([Liboffloadmic is disabled]) ;; -esac -AM_CONDITIONAL(PLUGIN_HOST, [test x"$enable_liboffloadmic" = xhost]) - -# Get accel target and path to build or install tree of accel compiler -accel_search_dir= -accel_target= -if test x"$enable_liboffloadmic" = xhost; then - for accel in `echo $enable_offload_targets | sed -e 's#,# #g'`; do - accel_name=`echo $accel | sed 's/=.*//'` - accel_dir=`echo $accel | grep '=' | sed 's/.*=//'` - case "$accel_name" in - *-intelmic-* | *-intelmicemul-*) - accel_target=$accel_name - accel_search_dir=$accel_dir - ;; - esac - done - if test x"$accel_target" = x; then - AC_MSG_ERROR([--enable-offload-targets does not contain intelmic target]) - fi -fi -AC_SUBST(accel_search_dir) -AC_SUBST(accel_target) - -AC_MSG_CHECKING([for --enable-version-specific-runtime-libs]) -AC_ARG_ENABLE([version-specific-runtime-libs], - AC_HELP_STRING([--enable-version-specific-runtime-libs], - [Specify that runtime libraries should be installed in a compiler-specific directory]), - [case "$enableval" in - yes) enable_version_specific_runtime_libs=yes ;; - no) enable_version_specific_runtime_libs=no ;; - *) AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);; - esac], - [enable_version_specific_runtime_libs=no]) -AC_MSG_RESULT($enable_version_specific_runtime_libs) - - -GCC_WITH_TOOLEXECLIBDIR - -# Calculate toolexeclibdir. -# Also toolexecdir, though it's only used in toolexeclibdir. -case ${enable_version_specific_runtime_libs} in - yes) - # Need the gcc compiler version to know where to install libraries - # and header files if --enable-version-specific-runtime-libs option - # is selected. - toolexecdir='$(libdir)/gcc/$(target_alias)' - toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)' - ;; - no) - if test -n "$with_cross_host" && - test x"$with_cross_host" != x"no"; then - # Install a library built with a cross compiler in tooldir, not libdir. - toolexecdir='$(exec_prefix)/$(target_alias)' - case ${with_toolexeclibdir} in - no) - toolexeclibdir='$(toolexecdir)/lib' - ;; - *) - toolexeclibdir=${with_toolexeclibdir} - ;; - esac - else - toolexecdir='$(libdir)/gcc-lib/$(target_alias)' - toolexeclibdir='$(libdir)' - fi - multi_os_directory=`$CC -print-multi-os-directory` - case $multi_os_directory in - .) ;; # Avoid trailing /. - *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; - esac - ;; -esac - -AC_LIBTOOL_DLOPEN -AM_PROG_LIBTOOL -# Forbid libtool to hardcode RPATH, because we want to be able to specify -# library search directory using LD_LIBRARY_PATH -hardcode_into_libs=no -AC_SUBST(toolexecdir) -AC_SUBST(toolexeclibdir) - -# Determine what GCC version number to use in filesystem paths. -GCC_BASE_VER - -# Must be last -AC_OUTPUT diff --git a/liboffloadmic/plugin/libgomp-plugin-intelmic.cpp b/liboffloadmic/plugin/libgomp-plugin-intelmic.cpp deleted file mode 100644 index 7be27f0..0000000 --- a/liboffloadmic/plugin/libgomp-plugin-intelmic.cpp +++ /dev/null @@ -1,545 +0,0 @@ -/* Plugin for offload execution on Intel MIC devices. - - Copyright (C) 2014-2016 Free Software Foundation, Inc. - - Contributed by Ilya Verbin <ilya.verbin@intel.com>. - - This file is part of the GNU Offloading and Multi Processing Library - (libgomp). - - Libgomp 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, or (at your option) - any later version. - - Libgomp 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. - - Under Section 7 of GPL version 3, you are granted additional - permissions described in the GCC Runtime Library Exception, version - 3.1, as published by the Free Software Foundation. - - You should have received a copy of the GNU General Public License and - a copy of the GCC Runtime Library Exception along with this program; - see the files COPYING3 and COPYING.RUNTIME respectively. If not, see - <http://www.gnu.org/licenses/>. */ - -/* Host side part of a libgomp plugin. */ - -#include <stdint.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <utility> -#include <vector> -#include <map> -#include "libgomp-plugin.h" -#include "compiler_if_host.h" -#include "main_target_image.h" -#include "gomp-constants.h" - -#define OFFLOAD_ACTIVE_WAIT_ENV "OFFLOAD_ACTIVE_WAIT" - -#ifdef DEBUG -#define TRACE(...) \ -{ \ -fprintf (stderr, "HOST:\t%s:%s ", __FILE__, __FUNCTION__); \ -fprintf (stderr, __VA_ARGS__); \ -fprintf (stderr, "\n"); \ -} -#else -#define TRACE { } -#endif - - -/* Start/end addresses of functions and global variables on a device. */ -typedef std::vector<addr_pair> AddrVect; - -/* Addresses for one image and all devices. */ -typedef std::vector<AddrVect> DevAddrVect; - -/* Addresses for all images and all devices. */ -typedef std::map<const void *, DevAddrVect> ImgDevAddrMap; - -/* Image descriptor needed by __offload_[un]register_image. */ -struct TargetImageDesc { - int64_t size; - /* 10 characters is enough for max int value. */ - char name[sizeof ("lib0000000000.so")]; - char data[]; -}; - -/* Image descriptors, indexed by a pointer obtained from libgomp. */ -typedef std::map<const void *, TargetImageDesc *> ImgDescMap; - - -/* Total number of available devices. */ -static int num_devices; - -/* Total number of shared libraries with offloading to Intel MIC. */ -static int num_images; - -/* Two dimensional array: one key is a pointer to image, - second key is number of device. Contains a vector of pointer pairs. */ -static ImgDevAddrMap *address_table; - -/* Descriptors of all images, registered in liboffloadmic. */ -static ImgDescMap *image_descriptors; - -/* Thread-safe registration of the main image. */ -static pthread_once_t main_image_is_registered = PTHREAD_ONCE_INIT; - -static VarDesc vd_host2tgt = { - { 1, 1 }, /* dst, src */ - { 1, 0 }, /* in, out */ - 1, /* alloc_if */ - 1, /* free_if */ - 4, /* align */ - 0, /* mic_offset */ - { 0, 0, 0, 0, 0, 0, 0, 0 }, /* is_static, is_static_dstn, has_length, - is_stack_buf, sink_addr, alloc_disp, - is_noncont_src, is_noncont_dst */ - 0, /* offset */ - 0, /* size */ - 1, /* count */ - 0, /* alloc */ - 0, /* into */ - 0 /* ptr */ -}; - -static VarDesc vd_tgt2host = { - { 1, 1 }, /* dst, src */ - { 0, 1 }, /* in, out */ - 1, /* alloc_if */ - 1, /* free_if */ - 4, /* align */ - 0, /* mic_offset */ - { 0, 0, 0, 0, 0, 0, 0, 0 }, /* is_static, is_static_dstn, has_length, - is_stack_buf, sink_addr, alloc_disp, - is_noncont_src, is_noncont_dst */ - 0, /* offset */ - 0, /* size */ - 1, /* count */ - 0, /* alloc */ - 0, /* into */ - 0 /* ptr */ -}; - - -__attribute__((constructor)) -static void -init (void) -{ - const char *active_wait = getenv (OFFLOAD_ACTIVE_WAIT_ENV); - - /* Disable active wait by default to avoid useless CPU usage. */ - if (!active_wait) - setenv (OFFLOAD_ACTIVE_WAIT_ENV, "0", 0); - - address_table = new ImgDevAddrMap; - image_descriptors = new ImgDescMap; - num_devices = _Offload_number_of_devices (); -} - -extern "C" const char * -GOMP_OFFLOAD_get_name (void) -{ - const char *res = "intelmic"; - TRACE ("(): return %s", res); - return res; -} - -extern "C" unsigned int -GOMP_OFFLOAD_get_caps (void) -{ - unsigned int res = GOMP_OFFLOAD_CAP_OPENMP_400; - TRACE ("(): return %x", res); - return res; -} - -extern "C" int -GOMP_OFFLOAD_get_type (void) -{ - enum offload_target_type res = OFFLOAD_TARGET_TYPE_INTEL_MIC; - TRACE ("(): return %d", res); - return res; -} - -extern "C" int -GOMP_OFFLOAD_get_num_devices (unsigned int omp_requires_mask) -{ - /* Return -1 if no omp_requires_mask cannot be fulfilled but - devices were present. */ - if (num_devices > 0 && omp_requires_mask != 0) - return -1; - TRACE ("(): return %d", num_devices); - return num_devices; -} - -static bool -offload (const char *file, uint64_t line, int device, const char *name, - int num_vars, VarDesc *vars, const void **async_data) -{ - OFFLOAD ofld = __offload_target_acquire1 (&device, file, line); - if (ofld) - { - if (async_data == NULL) - return __offload_offload1 (ofld, name, 0, num_vars, vars, NULL, 0, - NULL, NULL); - else - { - OffloadFlags flags; - flags.flags = 0; - flags.bits.omp_async = 1; - return __offload_offload3 (ofld, name, 0, num_vars, vars, NULL, 0, - NULL, async_data, 0, NULL, flags, NULL); - } - } - else - { - GOMP_PLUGIN_error ("%s:%d: Offload target acquire failed\n", file, line); - return false; - } -} - -static void -register_main_image () -{ - /* Do not check the return value, because old versions of liboffloadmic did - not have return values. */ - __offload_register_image (&main_target_image); - - /* liboffloadmic will call GOMP_PLUGIN_target_task_completion when - asynchronous task on target is completed. */ - __offload_register_task_callback (GOMP_PLUGIN_target_task_completion); -} - -/* liboffloadmic loads and runs offload_target_main on all available devices - during a first call to offload (). */ -extern "C" bool -GOMP_OFFLOAD_init_device (int device) -{ - TRACE ("(device = %d)", device); - pthread_once (&main_image_is_registered, register_main_image); - return offload (__FILE__, __LINE__, device, "__offload_target_init_proc", 0, - NULL, NULL); -} - -extern "C" bool -GOMP_OFFLOAD_fini_device (int device) -{ - TRACE ("(device = %d)", device); - - /* liboffloadmic will finalize target processes on all available devices. */ - __offload_unregister_image (&main_target_image); - return true; -} - -static bool -get_target_table (int device, int &num_funcs, int &num_vars, void **&table) -{ - VarDesc vd1[2] = { vd_tgt2host, vd_tgt2host }; - vd1[0].ptr = &num_funcs; - vd1[0].size = sizeof (num_funcs); - vd1[1].ptr = &num_vars; - vd1[1].size = sizeof (num_vars); - - if (!offload (__FILE__, __LINE__, device, "__offload_target_table_p1", 2, - vd1, NULL)) - return false; - - int table_size = num_funcs + 2 * num_vars; - if (table_size > 0) - { - table = new void * [table_size]; - - VarDesc vd2; - vd2 = vd_tgt2host; - vd2.ptr = table; - vd2.size = table_size * sizeof (void *); - - return offload (__FILE__, __LINE__, device, "__offload_target_table_p2", - 1, &vd2, NULL); - } - return true; -} - -/* Offload TARGET_IMAGE to all available devices and fill address_table with - corresponding target addresses. */ - -static bool -offload_image (const void *target_image) -{ - void *image_start = ((void **) target_image)[0]; - void *image_end = ((void **) target_image)[1]; - - TRACE ("(target_image = %p { %p, %p })", - target_image, image_start, image_end); - - int64_t image_size = (uintptr_t) image_end - (uintptr_t) image_start; - TargetImageDesc *image = (TargetImageDesc *) malloc (offsetof (TargetImageDesc, data) - + image_size); - if (!image) - { - GOMP_PLUGIN_error ("%s: Can't allocate memory\n", __FILE__); - return false; - } - - image->size = image_size; - sprintf (image->name, "lib%010d.so", num_images++); - memcpy (image->data, image_start, image->size); - - TRACE ("() __offload_register_image %s { %p, %d }", - image->name, image_start, image->size); - /* Do not check the return value, because old versions of liboffloadmic did - not have return values. */ - __offload_register_image (image); - - /* Receive tables for target_image from all devices. */ - DevAddrVect dev_table; - bool ret = true; - for (int dev = 0; dev < num_devices; dev++) - { - int num_funcs = 0; - int num_vars = 0; - void **table = NULL; - - ret &= get_target_table (dev, num_funcs, num_vars, table); - - AddrVect curr_dev_table; - - for (int i = 0; i < num_funcs; i++) - { - addr_pair tgt_addr; - tgt_addr.start = (uintptr_t) table[i]; - tgt_addr.end = tgt_addr.start + 1; - TRACE ("() func %d:\t0x%llx..0x%llx", i, - tgt_addr.start, tgt_addr.end); - curr_dev_table.push_back (tgt_addr); - } - - for (int i = 0; i < num_vars; i++) - { - addr_pair tgt_addr; - tgt_addr.start = (uintptr_t) table[num_funcs+i*2]; - tgt_addr.end = tgt_addr.start + (uintptr_t) table[num_funcs+i*2+1]; - TRACE ("() var %d:\t0x%llx..0x%llx", i, tgt_addr.start, tgt_addr.end); - curr_dev_table.push_back (tgt_addr); - } - - dev_table.push_back (curr_dev_table); - delete [] table; - } - - address_table->insert (std::make_pair (target_image, dev_table)); - image_descriptors->insert (std::make_pair (target_image, image)); - return ret; -} - -/* Return the libgomp version number we're compatible with. There is - no requirement for cross-version compatibility. */ - -extern "C" unsigned -GOMP_OFFLOAD_version (void) -{ - return GOMP_VERSION; -} - -extern "C" int -GOMP_OFFLOAD_load_image (int device, const unsigned version, - const void *target_image, addr_pair **result, - uint64_t ** /* rev_fn_table */) -{ - TRACE ("(device = %d, target_image = %p)", device, target_image); - - if (GOMP_VERSION_DEV (version) > GOMP_VERSION_INTEL_MIC) - { - GOMP_PLUGIN_error ("Offload data incompatible with intelmic plugin" - " (expected %u, received %u)", - GOMP_VERSION_INTEL_MIC, GOMP_VERSION_DEV (version)); - return -1; - } - - /* If target_image is already present in address_table, then there is no need - to offload it. */ - if (address_table->count (target_image) == 0) - { - /* If fail, return -1 as error code. */ - if (!offload_image (target_image)) - return -1; - } - - AddrVect *curr_dev_table = &(*address_table)[target_image][device]; - int table_size = curr_dev_table->size (); - addr_pair *table = (addr_pair *) malloc (table_size * sizeof (addr_pair)); - if (table == NULL) - { - GOMP_PLUGIN_error ("%s: Can't allocate memory\n", __FILE__); - return -1; - } - - std::copy (curr_dev_table->begin (), curr_dev_table->end (), table); - *result = table; - return table_size; -} - -extern "C" bool -GOMP_OFFLOAD_unload_image (int device, unsigned version, - const void *target_image) -{ - if (GOMP_VERSION_DEV (version) > GOMP_VERSION_INTEL_MIC) - { - GOMP_PLUGIN_error ("Offload data incompatible with intelmic plugin" - " (expected %u, received %u)", - GOMP_VERSION_INTEL_MIC, GOMP_VERSION_DEV (version)); - return false; - } - - TRACE ("(device = %d, target_image = %p)", device, target_image); - - /* liboffloadmic unloads the image from all available devices. */ - if (image_descriptors->count (target_image) > 0) - { - TargetImageDesc *image_desc = (*image_descriptors)[target_image]; - __offload_unregister_image (image_desc); - free (image_desc); - - address_table->erase (target_image); - image_descriptors->erase (target_image); - } - return true; -} - -extern "C" void * -GOMP_OFFLOAD_alloc (int device, size_t size) -{ - TRACE ("(device = %d, size = %d)", device, size); - - void *tgt_ptr; - VarDesc vd[2] = { vd_host2tgt, vd_tgt2host }; - vd[0].ptr = &size; - vd[0].size = sizeof (size); - vd[1].ptr = &tgt_ptr; - vd[1].size = sizeof (void *); - - if (!offload (__FILE__, __LINE__, device, "__offload_target_alloc", 2, - vd, NULL)) - return NULL; - - return tgt_ptr; -} - -extern "C" bool -GOMP_OFFLOAD_free (int device, void *tgt_ptr) -{ - TRACE ("(device = %d, tgt_ptr = %p)", device, tgt_ptr); - - VarDesc vd = vd_host2tgt; - vd.ptr = &tgt_ptr; - vd.size = sizeof (void *); - - return offload (__FILE__, __LINE__, device, "__offload_target_free", 1, - &vd, NULL); -} - -extern "C" bool -GOMP_OFFLOAD_host2dev (int device, void *tgt_ptr, const void *host_ptr, - size_t size) -{ - TRACE ("(device = %d, tgt_ptr = %p, host_ptr = %p, size = %d)", - device, tgt_ptr, host_ptr, size); - if (!size) - return true; - - VarDesc vd1[2] = { vd_host2tgt, vd_host2tgt }; - vd1[0].ptr = &tgt_ptr; - vd1[0].size = sizeof (void *); - vd1[1].ptr = &size; - vd1[1].size = sizeof (size); - - if (!offload (__FILE__, __LINE__, device, "__offload_target_host2tgt_p1", 2, - vd1, NULL)) - return false; - - VarDesc vd2 = vd_host2tgt; - vd2.ptr = (void *) host_ptr; - vd2.size = size; - - return offload (__FILE__, __LINE__, device, "__offload_target_host2tgt_p2", 1, - &vd2, NULL); -} - -extern "C" bool -GOMP_OFFLOAD_dev2host (int device, void *host_ptr, const void *tgt_ptr, - size_t size) -{ - TRACE ("(device = %d, host_ptr = %p, tgt_ptr = %p, size = %d)", - device, host_ptr, tgt_ptr, size); - if (!size) - return true; - - VarDesc vd1[2] = { vd_host2tgt, vd_host2tgt }; - vd1[0].ptr = &tgt_ptr; - vd1[0].size = sizeof (void *); - vd1[1].ptr = &size; - vd1[1].size = sizeof (size); - - if (!offload (__FILE__, __LINE__, device, "__offload_target_tgt2host_p1", 2, - vd1, NULL)) - return false; - - VarDesc vd2 = vd_tgt2host; - vd2.ptr = (void *) host_ptr; - vd2.size = size; - - return offload (__FILE__, __LINE__, device, "__offload_target_tgt2host_p2", 1, - &vd2, NULL); -} - -extern "C" bool -GOMP_OFFLOAD_dev2dev (int device, void *dst_ptr, const void *src_ptr, - size_t size) -{ - TRACE ("(device = %d, dst_ptr = %p, src_ptr = %p, size = %d)", - device, dst_ptr, src_ptr, size); - if (!size) - return true; - - VarDesc vd[3] = { vd_host2tgt, vd_host2tgt, vd_host2tgt }; - vd[0].ptr = &dst_ptr; - vd[0].size = sizeof (void *); - vd[1].ptr = &src_ptr; - vd[1].size = sizeof (void *); - vd[2].ptr = &size; - vd[2].size = sizeof (size); - - return offload (__FILE__, __LINE__, device, "__offload_target_tgt2tgt", 3, - vd, NULL); -} - -extern "C" void -GOMP_OFFLOAD_async_run (int device, void *tgt_fn, void *tgt_vars, - void **, void *async_data) -{ - TRACE ("(device = %d, tgt_fn = %p, tgt_vars = %p, async_data = %p)", device, - tgt_fn, tgt_vars, async_data); - - VarDesc vd[2] = { vd_host2tgt, vd_host2tgt }; - vd[0].ptr = &tgt_fn; - vd[0].size = sizeof (void *); - vd[1].ptr = &tgt_vars; - vd[1].size = sizeof (void *); - - offload (__FILE__, __LINE__, device, "__offload_target_run", 2, vd, - (const void **) async_data); -} - -extern "C" void -GOMP_OFFLOAD_run (int device, void *tgt_fn, void *tgt_vars, void **) -{ - TRACE ("(device = %d, tgt_fn = %p, tgt_vars = %p)", device, tgt_fn, tgt_vars); - - GOMP_OFFLOAD_async_run (device, tgt_fn, tgt_vars, NULL, NULL); -} diff --git a/liboffloadmic/plugin/offload_target_main.cpp b/liboffloadmic/plugin/offload_target_main.cpp deleted file mode 100644 index ccf7240..0000000 --- a/liboffloadmic/plugin/offload_target_main.cpp +++ /dev/null @@ -1,380 +0,0 @@ -/* Plugin for offload execution on Intel MIC devices. - - Copyright (C) 2014-2016 Free Software Foundation, Inc. - - Contributed by Ilya Verbin <ilya.verbin@intel.com>. - - This file is part of the GNU Offloading and Multi Processing Library - (libgomp). - - Libgomp 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, or (at your option) - any later version. - - Libgomp 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. - - Under Section 7 of GPL version 3, you are granted additional - permissions described in the GCC Runtime Library Exception, version - 3.1, as published by the Free Software Foundation. - - You should have received a copy of the GNU General Public License and - a copy of the GCC Runtime Library Exception along with this program; - see the files COPYING3 and COPYING.RUNTIME respectively. If not, see - <http://www.gnu.org/licenses/>. */ - -/* Target side part of a libgomp plugin. */ - -#include <stdint.h> -#include <stdio.h> -#include <stdlib.h> -#include "compiler_if_target.h" - - -#ifdef DEBUG -#define TRACE(...) \ -{ \ -fprintf (stderr, "TARGET:\t%s:%s ", __FILE__, __FUNCTION__); \ -fprintf (stderr, __VA_ARGS__); \ -fprintf (stderr, "\n"); \ -} -#else -#define TRACE { } -#endif - - -static VarDesc vd_host2tgt = { - { 1, 1 }, /* dst, src */ - { 1, 0 }, /* in, out */ - 1, /* alloc_if */ - 1, /* free_if */ - 4, /* align */ - 0, /* mic_offset */ - { 0, 0, 0, 0, 0, 0, 0, 0 }, /* is_static, is_static_dstn, has_length, - is_stack_buf, sink_addr, alloc_disp, - is_noncont_src, is_noncont_dst */ - 0, /* offset */ - 0, /* size */ - 1, /* count */ - 0, /* alloc */ - 0, /* into */ - 0 /* ptr */ -}; - -static VarDesc vd_tgt2host = { - { 1, 1 }, /* dst, src */ - { 0, 1 }, /* in, out */ - 1, /* alloc_if */ - 1, /* free_if */ - 4, /* align */ - 0, /* mic_offset */ - { 0, 0, 0, 0, 0, 0, 0, 0 }, /* is_static, is_static_dstn, has_length, - is_stack_buf, sink_addr, alloc_disp, - is_noncont_src, is_noncont_dst */ - 0, /* offset */ - 0, /* size */ - 1, /* count */ - 0, /* alloc */ - 0, /* into */ - 0 /* ptr */ -}; - -/* Pointer to the descriptor of the last loaded shared library. */ -static void *last_loaded_library = NULL; - -/* Pointer and size of the variable, used in __offload_target_host2tgt_p[12] - and __offload_target_tgt2host_p[12]. */ -static void *last_var_ptr = NULL; -static int last_var_size = 0; - - -/* Override the corresponding functions from libgomp. */ -extern "C" int -omp_is_initial_device (void) __GOMP_NOTHROW -{ - return 0; -} - -extern "C" int32_t -omp_is_initial_device_ (void) -{ - return omp_is_initial_device (); -} - - -/* Dummy function needed for the initialization of target process during the - first call to __offload_offload1. */ -static void -__offload_target_init_proc (OFFLOAD ofldt) -{ - TRACE (""); -} - -/* Collect addresses of the offload functions and of the global variables from - the library descriptor and send them to host. - Part 1: Send num_funcs and num_vars to host. */ -static void -__offload_target_table_p1 (OFFLOAD ofldt) -{ - void ***lib_descr = (void ***) last_loaded_library; - - if (lib_descr == NULL) - { - TRACE (""); - fprintf (stderr, "Error! No shared libraries loaded on target.\n"); - return; - } - - void **func_table_begin = lib_descr[0]; - void **func_table_end = lib_descr[1]; - void **var_table_begin = lib_descr[2]; - void **var_table_end = lib_descr[3]; - - /* The func table contains only addresses, the var table contains addresses - and corresponding sizes. */ - int num_funcs = func_table_end - func_table_begin; - int num_vars = (var_table_end - var_table_begin) / 2; - TRACE ("(num_funcs = %d, num_vars = %d)", num_funcs, num_vars); - - VarDesc vd[2] = { vd_tgt2host, vd_tgt2host }; - vd[0].ptr = &num_funcs; - vd[0].size = sizeof (num_funcs); - vd[1].ptr = &num_vars; - vd[1].size = sizeof (num_vars); - - __offload_target_enter (ofldt, 2, vd, NULL); - __offload_target_leave (ofldt); -} - -/* Part 2: Send the table with addresses to host. */ -static void -__offload_target_table_p2 (OFFLOAD ofldt) -{ - void ***lib_descr = (void ***) last_loaded_library; - void **func_table_begin = lib_descr[0]; - void **func_table_end = lib_descr[1]; - void **var_table_begin = lib_descr[2]; - void **var_table_end = lib_descr[3]; - - int num_funcs = func_table_end - func_table_begin; - int num_vars = (var_table_end - var_table_begin) / 2; - int table_size = (num_funcs + 2 * num_vars) * sizeof (void *); - void **table = (void **) malloc (table_size); - TRACE ("(table_size = %d)", table_size); - - VarDesc vd = vd_tgt2host; - vd.ptr = table; - vd.size = table_size; - - __offload_target_enter (ofldt, 1, &vd, NULL); - - void **p; - int i = 0; - for (p = func_table_begin; p < func_table_end; p++, i++) - table[i] = *p; - - for (p = var_table_begin; p < var_table_end; p++, i++) - table[i] = *p; - - __offload_target_leave (ofldt); - free (table); -} - -/* Allocate size bytes and send a pointer to the allocated memory to host. */ -static void -__offload_target_alloc (OFFLOAD ofldt) -{ - size_t size = 0; - void *ptr = NULL; - - VarDesc vd[2] = { vd_host2tgt, vd_tgt2host }; - vd[0].ptr = &size; - vd[0].size = sizeof (size); - vd[1].ptr = &ptr; - vd[1].size = sizeof (void *); - - __offload_target_enter (ofldt, 2, vd, NULL); - ptr = malloc (size); - TRACE ("(size = %d): ptr = %p", size, ptr); - __offload_target_leave (ofldt); -} - -/* Free the memory space pointed to by ptr. */ -static void -__offload_target_free (OFFLOAD ofldt) -{ - void *ptr = 0; - - VarDesc vd = vd_host2tgt; - vd.ptr = &ptr; - vd.size = sizeof (void *); - - __offload_target_enter (ofldt, 1, &vd, NULL); - TRACE ("(ptr = %p)", ptr); - free (ptr); - __offload_target_leave (ofldt); -} - -/* Receive var_size bytes from host and store to var_ptr. - Part 1: Receive var_ptr and var_size from host. */ -static void -__offload_target_host2tgt_p1 (OFFLOAD ofldt) -{ - void *var_ptr = NULL; - size_t var_size = 0; - - VarDesc vd[2] = { vd_host2tgt, vd_host2tgt }; - vd[0].ptr = &var_ptr; - vd[0].size = sizeof (void *); - vd[1].ptr = &var_size; - vd[1].size = sizeof (var_size); - - __offload_target_enter (ofldt, 2, vd, NULL); - TRACE ("(var_ptr = %p, var_size = %d)", var_ptr, var_size); - last_var_ptr = var_ptr; - last_var_size = var_size; - __offload_target_leave (ofldt); -} - -/* Part 2: Receive the data from host. */ -static void -__offload_target_host2tgt_p2 (OFFLOAD ofldt) -{ - TRACE ("(last_var_ptr = %p, last_var_size = %d)", - last_var_ptr, last_var_size); - - VarDesc vd = vd_host2tgt; - vd.ptr = last_var_ptr; - vd.size = last_var_size; - - __offload_target_enter (ofldt, 1, &vd, NULL); - __offload_target_leave (ofldt); -} - -/* Send var_size bytes from var_ptr to host. - Part 1: Receive var_ptr and var_size from host. */ -static void -__offload_target_tgt2host_p1 (OFFLOAD ofldt) -{ - void *var_ptr = NULL; - size_t var_size = 0; - - VarDesc vd[2] = { vd_host2tgt, vd_host2tgt }; - vd[0].ptr = &var_ptr; - vd[0].size = sizeof (void *); - vd[1].ptr = &var_size; - vd[1].size = sizeof (var_size); - - __offload_target_enter (ofldt, 2, vd, NULL); - TRACE ("(var_ptr = %p, var_size = %d)", var_ptr, var_size); - last_var_ptr = var_ptr; - last_var_size = var_size; - __offload_target_leave (ofldt); -} - -/* Part 2: Send the data to host. */ -static void -__offload_target_tgt2host_p2 (OFFLOAD ofldt) -{ - TRACE ("(last_var_ptr = %p, last_var_size = %d)", - last_var_ptr, last_var_size); - - VarDesc vd = vd_tgt2host; - vd.ptr = last_var_ptr; - vd.size = last_var_size; - - __offload_target_enter (ofldt, 1, &vd, NULL); - __offload_target_leave (ofldt); -} - -/* Copy SIZE bytes from SRC_PTR to DST_PTR. */ -static void -__offload_target_tgt2tgt (OFFLOAD ofldt) -{ - void *src_ptr = NULL; - void *dst_ptr = NULL; - size_t size = 0; - - VarDesc vd[3] = { vd_host2tgt, vd_host2tgt, vd_host2tgt }; - vd[0].ptr = &dst_ptr; - vd[0].size = sizeof (void *); - vd[1].ptr = &src_ptr; - vd[1].size = sizeof (void *); - vd[2].ptr = &size; - vd[2].size = sizeof (size); - - __offload_target_enter (ofldt, 3, vd, NULL); - TRACE ("(dst_ptr = %p, src_ptr = %p, size = %d)", dst_ptr, src_ptr, size); - memcpy (dst_ptr, src_ptr, size); - __offload_target_leave (ofldt); -} - -/* Call offload function by the address fn_ptr and pass vars_ptr to it. */ -static void -__offload_target_run (OFFLOAD ofldt) -{ - void *fn_ptr; - void *vars_ptr; - - VarDesc vd[2] = { vd_host2tgt, vd_host2tgt }; - vd[0].ptr = &fn_ptr; - vd[0].size = sizeof (void *); - vd[1].ptr = &vars_ptr; - vd[1].size = sizeof (void *); - - __offload_target_enter (ofldt, 2, vd, NULL); - TRACE ("(fn_ptr = %p, vars_ptr = %p)", fn_ptr, vars_ptr); - void (*fn)(void *) = (void (*)(void *)) fn_ptr; - fn (vars_ptr); - __offload_target_leave (ofldt); -} - - -/* This should be called from every library with offloading. */ -extern "C" void -target_register_lib (const void *target_table) -{ - TRACE ("(target_table = %p { %p, %p, %p, %p })", target_table, - ((void **) target_table)[0], ((void **) target_table)[1], - ((void **) target_table)[2], ((void **) target_table)[3]); - - last_loaded_library = (void *) target_table; -} - -/* Use __offload_target_main from liboffload. */ -int -main (int argc, char **argv) -{ - __offload_target_main (); - return 0; -} - - -/* Register offload_target_main's functions in the liboffload. */ - -struct Entry { - const char *name; - void *func; -}; - -#define REGISTER(f) \ -extern "C" const Entry __offload_target_##f##_$entry \ -__attribute__ ((section(".OffloadEntryTable."))) = { \ - "__offload_target_"#f, \ - (void *) __offload_target_##f \ -} -REGISTER (init_proc); -REGISTER (table_p1); -REGISTER (table_p2); -REGISTER (alloc); -REGISTER (free); -REGISTER (host2tgt_p1); -REGISTER (host2tgt_p2); -REGISTER (tgt2host_p1); -REGISTER (tgt2host_p2); -REGISTER (tgt2tgt); -REGISTER (run); -#undef REGISTER diff --git a/liboffloadmic/runtime/cean_util.cpp b/liboffloadmic/runtime/cean_util.cpp deleted file mode 100644 index f2c3e48..0000000 --- a/liboffloadmic/runtime/cean_util.cpp +++ /dev/null @@ -1,421 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#include "cean_util.h" -#include "offload_common.h" - -// 1. allocate element of CeanReadRanges type -// 2. initialized it for reading consequently contiguous ranges -// described by "ap" argument -CeanReadRanges * init_read_ranges_arr_desc(const Arr_Desc *ap) -{ - CeanReadRanges * res; - - // find the max contiguous range - int64_t rank = ap->rank - 1; - int64_t length = ap->dim[rank].size; - for (; rank >= 0; rank--) { - if (ap->dim[rank].stride == 1) { - length *= (ap->dim[rank].upper - ap->dim[rank].lower + 1); - if (rank > 0 && length != ap->dim[rank - 1].size) { - break; - } - } - else { - break; - } - } - - res =(CeanReadRanges *)malloc(sizeof(CeanReadRanges) + - (ap->rank - rank) * sizeof(CeanReadDim)); - if (res == NULL) - LIBOFFLOAD_ERROR(c_malloc); - - res->arr_desc = const_cast<Arr_Desc*>(ap); - res->current_number = 0; - res->range_size = length; - res->last_noncont_ind = rank; - - // calculate number of contiguous ranges inside noncontiguous dimensions - int count = 1; - bool prev_is_cont = true; - int64_t offset = 0; - - for (; rank >= 0; rank--) { - res->Dim[rank].count = count; - res->Dim[rank].size = ap->dim[rank].stride * ap->dim[rank].size; - count *= (prev_is_cont && ap->dim[rank].stride == 1? 1 : - (ap->dim[rank].upper - ap->dim[rank].lower + - ap->dim[rank].stride) / ap->dim[rank].stride); - prev_is_cont = false; - offset +=(ap->dim[rank].lower - ap->dim[rank].lindex) * - ap->dim[rank].size; - } - res->range_max_number = count; - res -> ptr = (void*)ap->base; - res -> init_offset = offset; - return res; -} - -// check if ranges described by 1 argument could be transferred into ranges -// described by 2-nd one -bool cean_ranges_match( - CeanReadRanges * read_rng1, - CeanReadRanges * read_rng2 -) -{ - return ( read_rng1 == NULL || read_rng2 == NULL || - (read_rng1->range_size % read_rng2->range_size == 0 || - read_rng2->range_size % read_rng1->range_size == 0)); -} - -// Set next offset and length and returns true for next range. -// Returns false if the ranges are over. -bool get_next_range( - CeanReadRanges * read_rng, - int64_t *offset -) -{ - if (++read_rng->current_number > read_rng->range_max_number) { - read_rng->current_number = 0; - return false; - } - int rank = 0; - int num = read_rng->current_number - 1; - int64_t cur_offset = 0; - int num_loc; - for (; rank <= read_rng->last_noncont_ind; rank++) { - num_loc = num / read_rng->Dim[rank].count; - cur_offset += num_loc * read_rng->Dim[rank].size; - num = num % read_rng->Dim[rank].count; - } - *offset = cur_offset + read_rng->init_offset; - return true; -} - -bool is_arr_desc_contiguous(const Arr_Desc *ap) -{ - int64_t rank = ap->rank - 1; - int64_t length = ap->dim[rank].size; - for (; rank >= 0; rank--) { - if (ap->dim[rank].stride > 1 && - ap->dim[rank].upper - ap->dim[rank].lower != 0) { - return false; - } - else if (length != ap->dim[rank].size) { - for (; rank >= 0; rank--) { - if (ap->dim[rank].upper - ap->dim[rank].lower != 0) { - return false; - } - } - return true; - } - length *= (ap->dim[rank].upper - ap->dim[rank].lower + 1); - } - return true; -} - -int64_t cean_get_transf_size(CeanReadRanges * read_rng) -{ - return(read_rng->range_max_number * read_rng->range_size); -} - -static uint64_t last_left, last_right; - -typedef void (*fpp)( - const char *spaces, - uint64_t low, - uint64_t high, - int esize, - bool print_values -); - -static void generate_one_range( - const char *spaces, - uint64_t lrange, - uint64_t rrange, - fpp fp, - int esize, - bool print_values -) -{ - OFFLOAD_TRACE(3, - "%s generate_one_range(lrange=%p, rrange=%p, esize=%d)\n", - spaces, (void*)lrange, (void*)rrange, esize); - if (last_left == -1) { - // First range - last_left = lrange; - } - else { - if (lrange == last_right+1) { - // Extend previous range, don't print - } - else { - (*fp)(spaces, last_left, last_right, esize, print_values); - last_left = lrange; - } - } - last_right = rrange; -} - -static bool element_is_contiguous( - uint64_t rank, - const struct Dim_Desc *ddp -) -{ - if (rank == 1) { - return (ddp[0].lower == ddp[0].upper || ddp[0].stride == 1); - } - else { - return ((ddp[0].size == (ddp[1].upper-ddp[1].lower+1)*ddp[1].size) && - element_is_contiguous(rank-1, ddp++)); - } -} - -static void generate_mem_ranges_one_rank( - const char *spaces, - uint64_t base, - uint64_t rank, - const struct Dim_Desc *ddp, - fpp fp, - int esize, - bool print_values -) -{ - uint64_t lindex = ddp->lindex; - uint64_t lower = ddp->lower; - uint64_t upper = ddp->upper; - uint64_t stride = ddp->stride; - uint64_t size = ddp->size; - OFFLOAD_TRACE(3, - "%s " - "generate_mem_ranges_one_rank(base=%p, rank=%lld, lindex=%lld, " - "lower=%lld, upper=%lld, stride=%lld, size=%lld, esize=%d)\n", - spaces, (void*)base, rank, lindex, lower, upper, stride, size, esize); - - if (element_is_contiguous(rank, ddp)) { - uint64_t lrange, rrange; - lrange = base + (lower-lindex)*size; - rrange = lrange + (upper-lower+1)*size - 1; - generate_one_range(spaces, lrange, rrange, fp, esize, print_values); - } - else { - if (rank == 1) { - for (int i=lower-lindex; i<=upper-lindex; i+=stride) { - uint64_t lrange, rrange; - lrange = base + i*size; - rrange = lrange + size - 1; - generate_one_range(spaces, lrange, rrange, - fp, esize, print_values); - } - } - else { - for (int i=lower-lindex; i<=upper-lindex; i+=stride) { - generate_mem_ranges_one_rank( - spaces, base+i*size, rank-1, ddp+1, - fp, esize, print_values); - - } - } - } -} - -static void generate_mem_ranges( - const char *spaces, - const Arr_Desc *adp, - bool deref, - fpp fp, - bool print_values -) -{ - uint64_t esize; - - OFFLOAD_TRACE(3, - "%s " - "generate_mem_ranges(adp=%p, deref=%d, fp)\n", - spaces, adp, deref); - last_left = -1; - last_right = -2; - - // Element size is derived from last dimension - esize = adp->dim[adp->rank-1].size; - - generate_mem_ranges_one_rank( - // For c_cean_var the base addr is the address of the data - // For c_cean_var_ptr the base addr is dereferenced to get to the data - spaces, deref ? *((uint64_t*)(adp->base)) : adp->base, - adp->rank, &adp->dim[0], fp, esize, print_values); - (*fp)(spaces, last_left, last_right, esize, print_values); -} - -// returns offset and length of the data to be transferred -void __arr_data_offset_and_length( - const Arr_Desc *adp, - int64_t &offset, - int64_t &length -) -{ - int64_t rank = adp->rank - 1; - int64_t size = adp->dim[rank].size; - int64_t r_off = 0; // offset from right boundary - - // find the rightmost dimension which takes just part of its - // range. We define it if the size of left rank is not equal - // the range's length between upper and lower boungaries - while (rank > 0) { - size *= (adp->dim[rank].upper - adp->dim[rank].lower + 1); - if (size != adp->dim[rank - 1].size) { - break; - } - rank--; - } - - offset = (adp->dim[rank].lower - adp->dim[rank].lindex) * - adp->dim[rank].size; - - // find gaps both from the left - offset and from the right - r_off - for (rank--; rank >= 0; rank--) { - offset += (adp->dim[rank].lower - adp->dim[rank].lindex) * - adp->dim[rank].size; - r_off += adp->dim[rank].size - - (adp->dim[rank + 1].upper - adp->dim[rank + 1].lindex + 1) * - adp->dim[rank + 1].size; - } - length = (adp->dim[0].upper - adp->dim[0].lindex + 1) * - adp->dim[0].size - offset - r_off; -} - -#if OFFLOAD_DEBUG > 0 - -static void print_range( - const char *spaces, - uint64_t low, - uint64_t high, - int esize, - bool print_values -) -{ - char buffer[1024]; - char number[32]; - - OFFLOAD_TRACE(3, "%s print_range(low=%p, high=%p, esize=%d)\n", - spaces, (void*)low, (void*)high, esize); - - if (console_enabled < 4 || !print_values) { - return; - } - OFFLOAD_TRACE(4, "%s values:\n", spaces); - int count = 0; - buffer[0] = '\0'; - while (low <= high) - { - switch (esize) - { - case 1: - sprintf(number, "%d ", *((char *)low)); - low += 1; - break; - case 2: - sprintf(number, "%d ", *((short *)low)); - low += 2; - break; - case 4: - sprintf(number, "%d ", *((int *)low)); - low += 4; - break; - default: - sprintf(number, "0x%016x ", *((uint64_t *)low)); - low += 8; - break; - } - strcat(buffer, number); - count++; - if (count == 10) { - OFFLOAD_TRACE(4, "%s %s\n", spaces, buffer); - count = 0; - buffer[0] = '\0'; - } - } - if (count != 0) { - OFFLOAD_TRACE(4, "%s %s\n", spaces, buffer); - } -} - -void __arr_desc_dump( - const char *spaces, - const char *name, - const Arr_Desc *adp, - bool deref, - bool print_values -) -{ - OFFLOAD_TRACE(2, "%s%s CEAN expression %p\n", spaces, name, adp); - - if (adp != 0) { - OFFLOAD_TRACE(2, "%s base=%llx, rank=%lld\n", - spaces, adp->base, adp->rank); - - for (int i = 0; i < adp->rank; i++) { - OFFLOAD_TRACE(2, - "%s dimension %d: size=%lld, lindex=%lld, " - "lower=%lld, upper=%lld, stride=%lld\n", - spaces, i, adp->dim[i].size, adp->dim[i].lindex, - adp->dim[i].lower, adp->dim[i].upper, - adp->dim[i].stride); - } - // For c_cean_var the base addr is the address of the data - // For c_cean_var_ptr the base addr is dereferenced to get to the data - generate_mem_ranges(spaces, adp, deref, &print_range, print_values); - } -} - -void noncont_struct_dump( - const char *spaces, - const char *name, - struct NonContigDesc *desc_p) -{ - OFFLOAD_TRACE(2, "%s%s NonCont Struct expression %p\n", - spaces, name, desc_p->base); - if (desc_p) { - OFFLOAD_TRACE(2, "%s%s base=%p\n", spaces, name, desc_p->base); - for (int i = 0; i < desc_p->interval_cnt; i++) { - OFFLOAD_TRACE(2,"%s dimension %d: lower=%lld, size=%lld\n", - spaces, i, desc_p->interval[i].lower, desc_p->interval[i].size); - } - } -} - -int64_t get_noncont_struct_size(struct NonContigDesc *desc_p) -{ - int index = desc_p->interval_cnt - 1; - return(desc_p->interval[index].lower + desc_p->interval[index].size); -} - -#endif // OFFLOAD_DEBUG diff --git a/liboffloadmic/runtime/cean_util.h b/liboffloadmic/runtime/cean_util.h deleted file mode 100644 index 1ba8793..0000000 --- a/liboffloadmic/runtime/cean_util.h +++ /dev/null @@ -1,137 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#ifndef CEAN_UTIL_H_INCLUDED -#define CEAN_UTIL_H_INCLUDED - -#include <stdint.h> -#include "offload_util.h" - -// CEAN expression representation -struct Dim_Desc { - int64_t size; // Length of data type - int64_t lindex; // Lower index - int64_t lower; // Lower section bound - int64_t upper; // Upper section bound - int64_t stride; // Stride -}; - -struct Arr_Desc { - int64_t base; // Base address - int64_t rank; // Rank of array - Dim_Desc dim[1]; -}; - -struct CeanReadDim { - int64_t count; // The number of elements in this dimension - int64_t size; // The number of bytes between successive - // elements in this dimension. -}; - -struct CeanReadRanges { - Arr_Desc* arr_desc; - void * ptr; - int64_t current_number; // the number of ranges read - int64_t range_max_number; // number of contiguous ranges - int64_t range_size; // size of max contiguous range - int last_noncont_ind; // size of Dim array - int64_t init_offset; // offset of 1-st element from array left bound - CeanReadDim Dim[1]; -}; - -struct IntervalDesc { - int64_t lower; // Lower index - int64_t size; // Size of each element at this interval -}; - -struct NonContigDesc { - int64_t base; // Base address - int64_t interval_cnt; // Number of intervals - struct IntervalDesc interval[1]; -}; - -// array descriptor length -#define __arr_desc_length(rank) \ - (sizeof(int64_t) + sizeof(Dim_Desc) * (rank)) - -// returns offset and length of the data to be transferred -DLL_LOCAL void __arr_data_offset_and_length(const Arr_Desc *adp, - int64_t &offset, - int64_t &length); - -// define if data array described by argument is contiguous one -DLL_LOCAL bool is_arr_desc_contiguous(const Arr_Desc *ap); - -// allocate element of CeanReadRanges type initialized -// to read consequently contiguous ranges described by "ap" argument -DLL_LOCAL CeanReadRanges * init_read_ranges_arr_desc(const Arr_Desc *ap); - -// check if ranges described by 1 argument could be transferred into ranges -// described by 2-nd one -DLL_LOCAL bool cean_ranges_match( - CeanReadRanges * read_rng1, - CeanReadRanges * read_rng2 -); - -// first argument - returned value by call to init_read_ranges_arr_desc. -// returns true if offset and length of next range is set successfuly. -// returns false if the ranges is over. -DLL_LOCAL bool get_next_range( - CeanReadRanges * read_rng, - int64_t *offset -); - -// returns number of transferred bytes -DLL_LOCAL int64_t cean_get_transf_size(CeanReadRanges * read_rng); - -#if OFFLOAD_DEBUG > 0 -// prints array descriptor contents to stderr -DLL_LOCAL void __arr_desc_dump( - const char *spaces, - const char *name, - const Arr_Desc *adp, - bool dereference, - bool print_values); - -DLL_LOCAL void noncont_struct_dump( - const char *spaces, - const char *name, - struct NonContigDesc *desc_p); - -DLL_LOCAL int64_t get_noncont_struct_size(struct NonContigDesc *desc_p); - -#define ARRAY_DESC_DUMP(spaces, name, adp, dereference, print_values) \ - if (console_enabled >= 2) \ - __arr_desc_dump(spaces, name, adp, dereference, print_values); -#else -#define ARRAY_DESC_DUMP(spaces, name, adp, dereference, print_values) -#endif // OFFLOAD_DEBUG - -#endif // CEAN_UTIL_H_INCLUDED diff --git a/liboffloadmic/runtime/coi/coi_client.cpp b/liboffloadmic/runtime/coi/coi_client.cpp deleted file mode 100644 index 179a302..0000000 --- a/liboffloadmic/runtime/coi/coi_client.cpp +++ /dev/null @@ -1,494 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -// The COI host interface - -#include "coi_client.h" -#include "../offload_common.h" - -namespace COI { - -#define COI_VERSION1 "COI_1.0" -#define COI_VERSION2 "COI_2.0" - -bool is_available; -static void* lib_handle; - -// pointers to functions from COI library -COIRESULT (*EngineGetCount)(COI_ISA_TYPE, uint32_t*); -COIRESULT (*EngineGetHandle)(COI_ISA_TYPE, uint32_t, COIENGINE*); - -COIRESULT (*ProcessCreateFromMemory)(COIENGINE, const char*, const void*, - uint64_t, int, const char**, uint8_t, - const char**, uint8_t, const char*, - uint64_t, const char*, const char*, - uint64_t, COIPROCESS*); -COIRESULT (*ProcessCreateFromFile)(COIENGINE, const char*, - int, const char**, uint8_t, - const char**, uint8_t, const char*, - uint64_t, const char*,COIPROCESS*); -COIRESULT (*ProcessSetCacheSize)(COIPROCESS, uint64_t, uint32_t, - uint64_t, uint32_t, uint32_t, - const COIEVENT*, COIEVENT*); -COIRESULT (*ProcessDestroy)(COIPROCESS, int32_t, uint8_t, int8_t*, uint32_t*); -COIRESULT (*ProcessGetFunctionHandles)(COIPROCESS, uint32_t, const char**, - COIFUNCTION*); -COIRESULT (*ProcessLoadLibraryFromMemory)(COIPROCESS, const void*, uint64_t, - const char*, const char*, - const char*, uint64_t, uint32_t, - COILIBRARY*); -COIRESULT (*ProcessUnloadLibrary)(COIPROCESS, - COILIBRARY); -COIRESULT (*ProcessRegisterLibraries)(uint32_t, const void**, const uint64_t*, - const char**, const uint64_t*); - -COIRESULT (*PipelineCreate)(COIPROCESS, COI_CPU_MASK, uint32_t, COIPIPELINE*); -COIRESULT (*PipelineDestroy)(COIPIPELINE); -COIRESULT (*PipelineRunFunction)(COIPIPELINE, COIFUNCTION, uint32_t, - const COIBUFFER*, const COI_ACCESS_FLAGS*, - uint32_t, const COIEVENT*, const void*, - uint16_t, void*, uint16_t, COIEVENT*); - -COIRESULT (*BufferCreate)(uint64_t, COI_BUFFER_TYPE, uint32_t, const void*, - uint32_t, const COIPROCESS*, COIBUFFER*); -COIRESULT (*BufferCreateFromMemory)(uint64_t, COI_BUFFER_TYPE, uint32_t, - void*, uint32_t, const COIPROCESS*, - COIBUFFER*); -COIRESULT (*BufferDestroy)(COIBUFFER); -COIRESULT (*BufferMap)(COIBUFFER, uint64_t, uint64_t, COI_MAP_TYPE, uint32_t, - const COIEVENT*, COIEVENT*, COIMAPINSTANCE*, void**); -COIRESULT (*BufferUnmap)(COIMAPINSTANCE, uint32_t, const COIEVENT*, COIEVENT*); -COIRESULT (*BufferWrite)(COIBUFFER, uint64_t, const void*, uint64_t, - COI_COPY_TYPE, uint32_t, const COIEVENT*, COIEVENT*); -COIRESULT (*BufferRead)(COIBUFFER, uint64_t, void*, uint64_t, COI_COPY_TYPE, - uint32_t, const COIEVENT*, COIEVENT*); -COIRESULT (*BufferReadMultiD)(COIBUFFER, uint64_t, - void *, void *, COI_COPY_TYPE, - uint32_t, const COIEVENT*, COIEVENT*); -COIRESULT (*BufferWriteMultiD)(COIBUFFER, const COIPROCESS, - uint64_t, void *, void *, - COI_COPY_TYPE, uint32_t, const COIEVENT*, COIEVENT*); - -COIRESULT (*BufferCopy)(COIBUFFER, COIBUFFER, uint64_t, uint64_t, uint64_t, - COI_COPY_TYPE, uint32_t, const COIEVENT*, COIEVENT*); -COIRESULT (*BufferGetSinkAddress)(COIBUFFER, uint64_t*); -COIRESULT (*BufferSetState)(COIBUFFER, COIPROCESS, COI_BUFFER_STATE, - COI_BUFFER_MOVE_FLAG, uint32_t, - const COIEVENT*, COIEVENT*); - -COIRESULT (*EventWait)(uint16_t, const COIEVENT*, int32_t, uint8_t, uint32_t*, - uint32_t*); - -uint64_t (*PerfGetCycleFrequency)(void); - -COIRESULT (*PipelineClearCPUMask) (COI_CPU_MASK); - -COIRESULT (*PipelineSetCPUMask) (COIPROCESS, uint32_t, - uint8_t, COI_CPU_MASK); -COIRESULT (*EngineGetInfo)(COIENGINE, uint32_t, COI_ENGINE_INFO*); - -COIRESULT (*EventRegisterCallback)( - const COIEVENT, - void (*)(COIEVENT, const COIRESULT, const void*), - const void*, - const uint64_t); - -COIRESULT (*ProcessConfigureDMA)(const uint64_t, const int); - -bool init(void) -{ -#ifndef TARGET_WINNT - const char *lib_name = "libcoi_host.so.0"; -#else // TARGET_WINNT - const char *lib_name = "coi_host.dll"; -#endif // TARGET_WINNT - - OFFLOAD_DEBUG_TRACE(2, "Loading COI library %s ...\n", lib_name); - lib_handle = DL_open(lib_name); - if (lib_handle == 0) { - OFFLOAD_DEBUG_TRACE(2, "Failed to load the library\n"); - return false; - } - - EngineGetCount = - (COIRESULT (*)(COI_ISA_TYPE, uint32_t*)) - DL_sym(lib_handle, "COIEngineGetCount", COI_VERSION1); - if (EngineGetCount == 0) { - OFFLOAD_DEBUG_TRACE(2, "Failed to find %s in COI library\n", - "COIEngineGetCount"); - fini(); - return false; - } - - EngineGetHandle = - (COIRESULT (*)(COI_ISA_TYPE, uint32_t, COIENGINE*)) - DL_sym(lib_handle, "COIEngineGetHandle", COI_VERSION1); - if (EngineGetHandle == 0) { - OFFLOAD_DEBUG_TRACE(2, "Failed to find %s in COI library\n", - "COIEngineGetHandle"); - fini(); - return false; - } - - ProcessCreateFromMemory = - (COIRESULT (*)(COIENGINE, const char*, const void*, uint64_t, int, - const char**, uint8_t, const char**, uint8_t, - const char*, uint64_t, const char*, const char*, - uint64_t, COIPROCESS*)) - DL_sym(lib_handle, "COIProcessCreateFromMemory", COI_VERSION1); - if (ProcessCreateFromMemory == 0) { - OFFLOAD_DEBUG_TRACE(2, "Failed to find %s in COI library\n", - "COIProcessCreateFromMemory"); - fini(); - return false; - } - - ProcessSetCacheSize = - (COIRESULT (*)(COIPROCESS, uint64_t, uint32_t, - uint64_t, uint32_t, uint32_t, - const COIEVENT*, COIEVENT*)) - DL_sym(lib_handle, "COIProcessSetCacheSize", COI_VERSION1); - if (ProcessSetCacheSize == 0) { - OFFLOAD_DEBUG_TRACE(2, "Failed to find %s in COI library\n", - "COIProcessSetCacheSize"); -#if 0 // for now disable as ProcessSetCacheSize is not available on < MPSS 3.4 - fini(); - return false; -#endif - } - - ProcessCreateFromFile = - (COIRESULT (*)(COIENGINE, const char*, int, const char**, uint8_t, - const char**, uint8_t, const char*, uint64_t, - const char*, COIPROCESS*)) - DL_sym(lib_handle, "COIProcessCreateFromFile", COI_VERSION1); - if (ProcessCreateFromFile == 0) { - OFFLOAD_DEBUG_TRACE(2, "Failed to find %s in COI library\n", - "COIProcessCreateFromFile"); - fini(); - return false; - } - - ProcessDestroy = - (COIRESULT (*)(COIPROCESS, int32_t, uint8_t, int8_t*, - uint32_t*)) - DL_sym(lib_handle, "COIProcessDestroy", COI_VERSION1); - if (ProcessDestroy == 0) { - OFFLOAD_DEBUG_TRACE(2, "Failed to find %s in COI library\n", - "COIProcessDestroy"); - fini(); - return false; - } - - ProcessGetFunctionHandles = - (COIRESULT (*)(COIPROCESS, uint32_t, const char**, COIFUNCTION*)) - DL_sym(lib_handle, "COIProcessGetFunctionHandles", COI_VERSION1); - if (ProcessGetFunctionHandles == 0) { - OFFLOAD_DEBUG_TRACE(2, "Failed to find %s in COI library\n", - "COIProcessGetFunctionHandles"); - fini(); - return false; - } - - ProcessLoadLibraryFromMemory = - (COIRESULT (*)(COIPROCESS, const void*, uint64_t, const char*, - const char*, const char*, uint64_t, uint32_t, - COILIBRARY*)) - DL_sym(lib_handle, "COIProcessLoadLibraryFromMemory", COI_VERSION2); - if (ProcessLoadLibraryFromMemory == 0) { - OFFLOAD_DEBUG_TRACE(2, "Failed to find %s in COI library\n", - "COIProcessLoadLibraryFromMemory"); - fini(); - return false; - } - - ProcessUnloadLibrary = - (COIRESULT (*)(COIPROCESS, - COILIBRARY)) - DL_sym(lib_handle, "COIProcessUnloadLibrary", COI_VERSION1); - if (ProcessUnloadLibrary == 0) { - OFFLOAD_DEBUG_TRACE(2, "Failed to find %s in COI library\n", - "COIProcessUnloadLibrary"); - fini(); - return false; - } - - ProcessRegisterLibraries = - (COIRESULT (*)(uint32_t, const void**, const uint64_t*, const char**, - const uint64_t*)) - DL_sym(lib_handle, "COIProcessRegisterLibraries", COI_VERSION1); - if (ProcessRegisterLibraries == 0) { - OFFLOAD_DEBUG_TRACE(2, "Failed to find %s in COI library\n", - "COIProcessRegisterLibraries"); - fini(); - return false; - } - - PipelineCreate = - (COIRESULT (*)(COIPROCESS, COI_CPU_MASK, uint32_t, COIPIPELINE*)) - DL_sym(lib_handle, "COIPipelineCreate", COI_VERSION1); - if (PipelineCreate == 0) { - OFFLOAD_DEBUG_TRACE(2, "Failed to find %s in COI library\n", - "COIPipelineCreate"); - fini(); - return false; - } - - PipelineDestroy = - (COIRESULT (*)(COIPIPELINE)) - DL_sym(lib_handle, "COIPipelineDestroy", COI_VERSION1); - if (PipelineDestroy == 0) { - OFFLOAD_DEBUG_TRACE(2, "Failed to find %s in COI library\n", - "COIPipelineDestroy"); - fini(); - return false; - } - - PipelineRunFunction = - (COIRESULT (*)(COIPIPELINE, COIFUNCTION, uint32_t, const COIBUFFER*, - const COI_ACCESS_FLAGS*, uint32_t, const COIEVENT*, - const void*, uint16_t, void*, uint16_t, COIEVENT*)) - DL_sym(lib_handle, "COIPipelineRunFunction", COI_VERSION1); - if (PipelineRunFunction == 0) { - OFFLOAD_DEBUG_TRACE(2, "Failed to find %s in COI library\n", - "COIPipelineRunFunction"); - fini(); - return false; - } - - BufferCreate = - (COIRESULT (*)(uint64_t, COI_BUFFER_TYPE, uint32_t, const void*, - uint32_t, const COIPROCESS*, COIBUFFER*)) - DL_sym(lib_handle, "COIBufferCreate", COI_VERSION1); - if (BufferCreate == 0) { - OFFLOAD_DEBUG_TRACE(2, "Failed to find %s in COI library\n", - "COIBufferCreate"); - fini(); - return false; - } - - BufferCreateFromMemory = - (COIRESULT (*)(uint64_t, COI_BUFFER_TYPE, uint32_t, void*, - uint32_t, const COIPROCESS*, COIBUFFER*)) - DL_sym(lib_handle, "COIBufferCreateFromMemory", COI_VERSION1); - if (BufferCreateFromMemory == 0) { - OFFLOAD_DEBUG_TRACE(2, "Failed to find %s in COI library\n", - "COIBufferCreateFromMemory"); - fini(); - return false; - } - - BufferDestroy = - (COIRESULT (*)(COIBUFFER)) - DL_sym(lib_handle, "COIBufferDestroy", COI_VERSION1); - if (BufferDestroy == 0) { - OFFLOAD_DEBUG_TRACE(2, "Failed to find %s in COI library\n", - "COIBufferDestroy"); - fini(); - return false; - } - - BufferMap = - (COIRESULT (*)(COIBUFFER, uint64_t, uint64_t, COI_MAP_TYPE, uint32_t, - const COIEVENT*, COIEVENT*, COIMAPINSTANCE*, - void**)) - DL_sym(lib_handle, "COIBufferMap", COI_VERSION1); - if (BufferMap == 0) { - OFFLOAD_DEBUG_TRACE(2, "Failed to find %s in COI library\n", - "COIBufferMap"); - fini(); - return false; - } - - BufferUnmap = - (COIRESULT (*)(COIMAPINSTANCE, uint32_t, const COIEVENT*, - COIEVENT*)) - DL_sym(lib_handle, "COIBufferUnmap", COI_VERSION1); - if (BufferUnmap == 0) { - OFFLOAD_DEBUG_TRACE(2, "Failed to find %s in COI library\n", - "COIBufferUnmap"); - fini(); - return false; - } - - BufferWrite = - (COIRESULT (*)(COIBUFFER, uint64_t, const void*, uint64_t, - COI_COPY_TYPE, uint32_t, const COIEVENT*, - COIEVENT*)) - DL_sym(lib_handle, "COIBufferWrite", COI_VERSION1); - if (BufferWrite == 0) { - OFFLOAD_DEBUG_TRACE(2, "Failed to find %s in COI library\n", - "COIBufferWrite"); - fini(); - return false; - } - - BufferRead = - (COIRESULT (*)(COIBUFFER, uint64_t, void*, uint64_t, - COI_COPY_TYPE, uint32_t, - const COIEVENT*, COIEVENT*)) - DL_sym(lib_handle, "COIBufferRead", COI_VERSION1); - if (BufferRead == 0) { - OFFLOAD_DEBUG_TRACE(2, "Failed to find %s in COI library\n", - "COIBufferRead"); - fini(); - return false; - } - - BufferReadMultiD = - (COIRESULT (*)(COIBUFFER, uint64_t, - void *, void *, COI_COPY_TYPE, - uint32_t, const COIEVENT*, COIEVENT*)) - DL_sym(lib_handle, "COIBufferReadMultiD", COI_VERSION1); - // We accept that coi library has no COIBufferReadMultiD routine. - // So there is no check for zero value - - BufferWriteMultiD = - (COIRESULT (*)(COIBUFFER, const COIPROCESS, - uint64_t, void *, void *, - COI_COPY_TYPE, uint32_t, const COIEVENT*, COIEVENT*)) - DL_sym(lib_handle, "COIBufferWriteMultiD", COI_VERSION1); - // We accept that coi library has no COIBufferWriteMultiD routine. - // So there is no check for zero value - - BufferCopy = - (COIRESULT (*)(COIBUFFER, COIBUFFER, uint64_t, uint64_t, uint64_t, - COI_COPY_TYPE, uint32_t, const COIEVENT*, - COIEVENT*)) - DL_sym(lib_handle, "COIBufferCopy", COI_VERSION1); - if (BufferCopy == 0) { - OFFLOAD_DEBUG_TRACE(2, "Failed to find %s in COI library\n", - "COIBufferCopy"); - fini(); - return false; - } - - BufferGetSinkAddress = - (COIRESULT (*)(COIBUFFER, uint64_t*)) - DL_sym(lib_handle, "COIBufferGetSinkAddress", COI_VERSION1); - if (BufferGetSinkAddress == 0) { - OFFLOAD_DEBUG_TRACE(2, "Failed to find %s in COI library\n", - "COIBufferGetSinkAddress"); - fini(); - return false; - } - - BufferSetState = - (COIRESULT(*)(COIBUFFER, COIPROCESS, COI_BUFFER_STATE, - COI_BUFFER_MOVE_FLAG, uint32_t, const COIEVENT*, - COIEVENT*)) - DL_sym(lib_handle, "COIBufferSetState", COI_VERSION1); - if (BufferSetState == 0) { - OFFLOAD_DEBUG_TRACE(2, "Failed to find %s in COI library\n", - "COIBufferSetState"); - fini(); - return false; - } - - EventWait = - (COIRESULT (*)(uint16_t, const COIEVENT*, int32_t, uint8_t, - uint32_t*, uint32_t*)) - DL_sym(lib_handle, "COIEventWait", COI_VERSION1); - if (EventWait == 0) { - OFFLOAD_DEBUG_TRACE(2, "Failed to find %s in COI library\n", - "COIEventWait"); - fini(); - return false; - } - - PerfGetCycleFrequency = - (uint64_t (*)(void)) - DL_sym(lib_handle, "COIPerfGetCycleFrequency", COI_VERSION1); - if (PerfGetCycleFrequency == 0) { - OFFLOAD_DEBUG_TRACE(2, "Failed to find %s in COI library\n", - "COIPerfGetCycleFrequency"); - fini(); - return false; - } - - PipelineClearCPUMask = - (COIRESULT (*)(COI_CPU_MASK)) - DL_sym(lib_handle, "COIPipelineClearCPUMask", COI_VERSION1); - if (PipelineClearCPUMask == 0) { - OFFLOAD_DEBUG_TRACE(2, "Failed to find %s in COI library\n", - "COIPipelineClearCPUMask"); - fini(); - return false; - } - - PipelineSetCPUMask = - (COIRESULT (*)(COIPROCESS, uint32_t,uint8_t, COI_CPU_MASK)) - DL_sym(lib_handle, "COIPipelineSetCPUMask", COI_VERSION1); - if (PipelineSetCPUMask == 0) { - OFFLOAD_DEBUG_TRACE(2, "Failed to find %s in COI library\n", - "COIPipelineSetCPUMask"); - fini(); - return false; - } - - EngineGetInfo = - (COIRESULT (*)(COIENGINE, uint32_t, COI_ENGINE_INFO*)) - DL_sym(lib_handle, "COIEngineGetInfo", COI_VERSION1); - if (EngineGetInfo == 0) { - OFFLOAD_DEBUG_TRACE(2, "Failed to find %s in COI library\n", - "COIEngineGetInfo"); - fini(); - return false; - } - - EventRegisterCallback = - (COIRESULT (*)(COIEVENT, - void (*)(COIEVENT, const COIRESULT, const void*), - const void*, - const uint64_t)) - DL_sym(lib_handle, "COIEventRegisterCallback", COI_VERSION1); - - ProcessConfigureDMA = - (COIRESULT (*)(const uint64_t, const int)) - DL_sym(lib_handle, "COIProcessConfigureDMA", COI_VERSION1); - - is_available = true; - - return true; -} - -void fini(void) -{ - is_available = false; - - if (lib_handle != 0) { -#ifndef TARGET_WINNT - DL_close(lib_handle); -#endif // TARGET_WINNT - lib_handle = 0; - } -} - -} // namespace COI diff --git a/liboffloadmic/runtime/coi/coi_client.h b/liboffloadmic/runtime/coi/coi_client.h deleted file mode 100644 index b5b0efc..0000000 --- a/liboffloadmic/runtime/coi/coi_client.h +++ /dev/null @@ -1,176 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -// The interface between offload library and the COI API on the host - -#ifndef COI_CLIENT_H_INCLUDED -#define COI_CLIENT_H_INCLUDED - -#include <common/COIPerf_common.h> -#include <common/COIMacros_common.h> -#include <source/COIEngine_source.h> -#include <source/COIProcess_source.h> -#include <source/COIPipeline_source.h> -#include <source/COIBuffer_source.h> -#include <source/COIEvent_source.h> - -#include <string.h> - -#include "../liboffload_error_codes.h" -#include "../offload_util.h" - -#define MIC_ENGINES_MAX 128 - -#if MIC_ENGINES_MAX < COI_MAX_ISA_MIC_DEVICES -#error MIC_ENGINES_MAX need to be increased -#endif - -// COI library interface -namespace COI { - -DLL_LOCAL extern bool init(void); -DLL_LOCAL extern void fini(void); - -DLL_LOCAL extern bool is_available; - -// pointers to functions from COI library -DLL_LOCAL extern COIRESULT (*EngineGetCount)(COI_ISA_TYPE, uint32_t*); -DLL_LOCAL extern COIRESULT (*EngineGetHandle)(COI_ISA_TYPE, uint32_t, COIENGINE*); - -DLL_LOCAL extern COIRESULT (*ProcessCreateFromMemory)(COIENGINE, const char*, - const void*, uint64_t, int, - const char**, uint8_t, - const char**, uint8_t, - const char*, uint64_t, - const char*, - const char*, uint64_t, - COIPROCESS*); -DLL_LOCAL extern COIRESULT (*ProcessCreateFromFile)(COIENGINE, const char*, int, - const char**, uint8_t, - const char**, - uint8_t, - const char*, - uint64_t, - const char*, - COIPROCESS*); -DLL_LOCAL extern COIRESULT (*ProcessSetCacheSize)(COIPROCESS, uint64_t, uint32_t, - uint64_t, uint32_t, uint32_t, - const COIEVENT*, COIEVENT*); -DLL_LOCAL extern COIRESULT (*ProcessDestroy)(COIPROCESS, int32_t, uint8_t, - int8_t*, uint32_t*); -DLL_LOCAL extern COIRESULT (*ProcessGetFunctionHandles)(COIPROCESS, uint32_t, - const char**, - COIFUNCTION*); -DLL_LOCAL extern COIRESULT (*ProcessLoadLibraryFromMemory)(COIPROCESS, - const void*, - uint64_t, - const char*, - const char*, - const char*, - uint64_t, - uint32_t, - COILIBRARY*); - -DLL_LOCAL extern COIRESULT (*ProcessUnloadLibrary)(COIPROCESS, - COILIBRARY); - -DLL_LOCAL extern COIRESULT (*ProcessRegisterLibraries)(uint32_t, - const void**, - const uint64_t*, - const char**, - const uint64_t*); - -DLL_LOCAL extern COIRESULT (*PipelineCreate)(COIPROCESS, COI_CPU_MASK, uint32_t, - COIPIPELINE*); -DLL_LOCAL extern COIRESULT (*PipelineDestroy)(COIPIPELINE); -DLL_LOCAL extern COIRESULT (*PipelineRunFunction)(COIPIPELINE, COIFUNCTION, - uint32_t, const COIBUFFER*, - const COI_ACCESS_FLAGS*, - uint32_t, const COIEVENT*, - const void*, uint16_t, void*, - uint16_t, COIEVENT*); - -DLL_LOCAL extern COIRESULT (*BufferCreate)(uint64_t, COI_BUFFER_TYPE, uint32_t, - const void*, uint32_t, - const COIPROCESS*, COIBUFFER*); -DLL_LOCAL extern COIRESULT (*BufferCreateFromMemory)(uint64_t, COI_BUFFER_TYPE, - uint32_t, void*, - uint32_t, const COIPROCESS*, - COIBUFFER*); -DLL_LOCAL extern COIRESULT (*BufferDestroy)(COIBUFFER); -DLL_LOCAL extern COIRESULT (*BufferMap)(COIBUFFER, uint64_t, uint64_t, - COI_MAP_TYPE, uint32_t, const COIEVENT*, - COIEVENT*, COIMAPINSTANCE*, void**); -DLL_LOCAL extern COIRESULT (*BufferUnmap)(COIMAPINSTANCE, uint32_t, - const COIEVENT*, COIEVENT*); -DLL_LOCAL extern COIRESULT (*BufferWrite)(COIBUFFER, uint64_t, const void*, - uint64_t, COI_COPY_TYPE, uint32_t, - const COIEVENT*, COIEVENT*); -DLL_LOCAL extern COIRESULT (*BufferRead)(COIBUFFER, uint64_t, void*, uint64_t, - COI_COPY_TYPE, uint32_t, - const COIEVENT*, COIEVENT*); -DLL_LOCAL extern COIRESULT (*BufferReadMultiD)(COIBUFFER, uint64_t, - void *, void *, COI_COPY_TYPE, - uint32_t, const COIEVENT*, COIEVENT*); -DLL_LOCAL extern COIRESULT (*BufferWriteMultiD)(COIBUFFER, const COIPROCESS, - uint64_t, void *, void *, - COI_COPY_TYPE, uint32_t, const COIEVENT*, COIEVENT*); - -DLL_LOCAL extern COIRESULT (*BufferCopy)(COIBUFFER, COIBUFFER, uint64_t, uint64_t, - uint64_t, COI_COPY_TYPE, uint32_t, - const COIEVENT*, COIEVENT*); -DLL_LOCAL extern COIRESULT (*BufferGetSinkAddress)(COIBUFFER, uint64_t*); -DLL_LOCAL extern COIRESULT (*BufferSetState)(COIBUFFER, COIPROCESS, COI_BUFFER_STATE, - COI_BUFFER_MOVE_FLAG, uint32_t, - const COIEVENT*, COIEVENT*); - -DLL_LOCAL extern COIRESULT (*EventWait)(uint16_t, const COIEVENT*, int32_t, - uint8_t, uint32_t*, uint32_t*); - -DLL_LOCAL extern uint64_t (*PerfGetCycleFrequency)(void); - -DLL_LOCAL extern COIRESULT (*ProcessConfigureDMA)(const uint64_t, const int); - -extern COIRESULT (*PipelineClearCPUMask)(COI_CPU_MASK); - -extern COIRESULT (*PipelineSetCPUMask)(COIPROCESS, uint32_t, - uint8_t, COI_CPU_MASK); -extern COIRESULT (*EngineGetInfo)(COIENGINE, uint32_t, COI_ENGINE_INFO*); - -extern COIRESULT (*EventRegisterCallback)( - const COIEVENT, - void (*)(COIEVENT, const COIRESULT, const void*), - const void*, - const uint64_t); - -const int DMA_MODE_READ_WRITE = 1; -} // namespace COI - -#endif // COI_CLIENT_H_INCLUDED diff --git a/liboffloadmic/runtime/coi/coi_server.cpp b/liboffloadmic/runtime/coi/coi_server.cpp deleted file mode 100644 index 67aa991..0000000 --- a/liboffloadmic/runtime/coi/coi_server.cpp +++ /dev/null @@ -1,180 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -// The COI interface on the target - -#include "coi_server.h" - -#include "../offload_target.h" -#include "../offload_timer.h" -#ifdef MYO_SUPPORT -#include "../offload_myo_target.h" // for __offload_myoLibInit/Fini -#endif // MYO_SUPPORT - -#if !defined(CPU_COUNT) -// if CPU_COUNT is not defined count number of CPUs manually -static -int my_cpu_count(cpu_set_t const *cpu_set) -{ - int res = 0; - for (int i = 0; i < sizeof(cpu_set_t) / sizeof(__cpu_mask); ++i) { - res += __builtin_popcountl(cpu_set->__bits[i]); - } - return res; -} -// Map CPU_COUNT to our function -#define CPU_COUNT(x) my_cpu_count(x) - -#endif - -COINATIVELIBEXPORT -void server_compute( - uint32_t buffer_count, - void** buffers, - uint64_t* buffers_len, - void* misc_data, - uint16_t misc_data_len, - void* return_data, - uint16_t return_data_len -) -{ - OffloadDescriptor::offload(buffer_count, buffers, - misc_data, misc_data_len, - return_data, return_data_len); -} - -COINATIVELIBEXPORT -void server_init( - uint32_t buffer_count, - void** buffers, - uint64_t* buffers_len, - void* misc_data, - uint16_t misc_data_len, - void* return_data, - uint16_t return_data_len -) -{ - struct init_data { - int device_index; - int devices_total; - int console_level; - int offload_report_level; - } *data = (struct init_data*) misc_data; - - // set device index and number of total devices - mic_index = data->device_index; - mic_engines_total = data->devices_total; - - // initialize trace level - console_enabled = data->console_level; - offload_report_level = data->offload_report_level; - - // return back the process id - *((pid_t*) return_data) = getpid(); -} - -COINATIVELIBEXPORT -void server_var_table_size( - uint32_t buffer_count, - void** buffers, - uint64_t* buffers_len, - void* misc_data, - uint16_t misc_data_len, - void* return_data, - uint16_t return_data_len -) -{ - struct Params { - int64_t nelems; - int64_t length; - } *params; - - params = static_cast<Params*>(return_data); - params->length = __offload_vars.table_size(params->nelems); -} - -COINATIVELIBEXPORT -void server_var_table_copy( - uint32_t buffer_count, - void** buffers, - uint64_t* buffers_len, - void* misc_data, - uint16_t misc_data_len, - void* return_data, - uint16_t return_data_len -) -{ - __offload_vars.table_copy(buffers[0], *static_cast<int64_t*>(misc_data)); -} - -COINATIVELIBEXPORT -void server_set_stream_affinity( - uint32_t buffer_count, - void** buffers, - uint64_t* buffers_len, - void* misc_data, - uint16_t misc_data_len, - void* return_data, - uint16_t return_data_len -) -{ - /* kmp affinity is not supported by GCC. */ -} - -#ifdef MYO_SUPPORT -// temporary workaround for blocking behavior of myoiLibInit/Fini calls -COINATIVELIBEXPORT -void server_myoinit( - uint32_t buffer_count, - void** buffers, - uint64_t* buffers_len, - void* misc_data, - uint16_t misc_data_len, - void* return_data, - uint16_t return_data_len -) -{ - __offload_myoLibInit(); -} - -COINATIVELIBEXPORT -void server_myofini( - uint32_t buffer_count, - void** buffers, - uint64_t* buffers_len, - void* misc_data, - uint16_t misc_data_len, - void* return_data, - uint16_t return_data_len -) -{ - __offload_myoLibFini(); -} -#endif // MYO_SUPPORT diff --git a/liboffloadmic/runtime/coi/coi_server.h b/liboffloadmic/runtime/coi/coi_server.h deleted file mode 100644 index 1afaa3b..0000000 --- a/liboffloadmic/runtime/coi/coi_server.h +++ /dev/null @@ -1,94 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -// The interface between offload library and the COI API on the target - -#ifndef COI_SERVER_H_INCLUDED -#define COI_SERVER_H_INCLUDED - -#include <common/COIEngine_common.h> -#include <common/COIPerf_common.h> -#include <sink/COIProcess_sink.h> -#include <sink/COIPipeline_sink.h> -#include <sink/COIBuffer_sink.h> -#include <list> -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include "../liboffload_error_codes.h" - -// wrappers for COI API -#define PipelineStartExecutingRunFunctions() \ - { \ - COIRESULT res = COIPipelineStartExecutingRunFunctions(); \ - if (res != COI_SUCCESS) { \ - LIBOFFLOAD_ERROR(c_pipeline_start_run_funcs, mic_index, res); \ - exit(1); \ - } \ - } - -#define ProcessWaitForShutdown() \ - { \ - COIRESULT res = COIProcessWaitForShutdown(); \ - if (res != COI_SUCCESS) { \ - LIBOFFLOAD_ERROR(c_process_wait_shutdown, mic_index, res); \ - exit(1); \ - } \ - } - -#define BufferAddRef(buf) \ - { \ - COIRESULT res = COIBufferAddRef(buf); \ - if (res != COI_SUCCESS) { \ - LIBOFFLOAD_ERROR(c_buf_add_ref, mic_index, res); \ - exit(1); \ - } \ - } - -#define BufferReleaseRef(buf) \ - { \ - COIRESULT res = COIBufferReleaseRef(buf); \ - if (res != COI_SUCCESS) { \ - LIBOFFLOAD_ERROR(c_buf_release_ref, mic_index, res); \ - exit(1); \ - } \ - } - -#define EngineGetIndex(index) \ - { \ - COI_ISA_TYPE isa_type; \ - COIRESULT res = COIEngineGetIndex(&isa_type, index); \ - if (res != COI_SUCCESS) { \ - LIBOFFLOAD_ERROR(c_get_engine_index, mic_index, res); \ - exit(1); \ - } \ - } - -#endif // COI_SERVER_H_INCLUDED diff --git a/liboffloadmic/runtime/compiler_if_host.cpp b/liboffloadmic/runtime/compiler_if_host.cpp deleted file mode 100644 index 4d8feb4..0000000 --- a/liboffloadmic/runtime/compiler_if_host.cpp +++ /dev/null @@ -1,501 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#include "compiler_if_host.h" - -#include <malloc.h> -#ifndef TARGET_WINNT -#include <alloca.h> -#endif // TARGET_WINNT - -// Global counter on host. -// This variable is used if P2OPT_offload_do_data_persistence == 2. -// The variable used to identify offload constructs contained in one procedure. -// Increment of OFFLOAD_CALL_COUNT is inserted at entries of HOST routines with -// offload constructs. -static int offload_call_count = 0; - -extern "C" OFFLOAD OFFLOAD_TARGET_ACQUIRE( - TARGET_TYPE target_type, - int target_number, - int is_optional, - _Offload_status* status, - const char* file, - uint64_t line -) -{ - bool retval; - OFFLOAD ofld; - - // initialize status - if (status != 0) { - status->result = OFFLOAD_UNAVAILABLE; - status->device_number = -1; - status->data_sent = 0; - status->data_received = 0; - } - - // make sure libray is initialized - retval = __offload_init_library(); - - // OFFLOAD_TIMER_INIT must follow call to __offload_init_library - OffloadHostTimerData * timer_data = OFFLOAD_TIMER_INIT(file, line); - - OFFLOAD_TIMER_START(timer_data, c_offload_host_total_offload); - - OFFLOAD_TIMER_START(timer_data, c_offload_host_initialize); - - // initialize all devices is init_type is on_offload_all - if (retval && __offload_init_type == c_init_on_offload_all) { - for (int i = 0; i < mic_engines_total; i++) { - mic_engines[i].init(); - } - } - OFFLOAD_TIMER_STOP(timer_data, c_offload_host_initialize); - - OFFLOAD_TIMER_START(timer_data, c_offload_host_target_acquire); - - if (target_type == TARGET_HOST) { - // Host always available - retval = true; - } - else if (target_type == TARGET_MIC) { - if (target_number >= -1) { - if (retval) { - if (target_number >= 0) { - // User provided the device number - target_number = target_number % mic_engines_total; - } - else { - // use device 0 - target_number = 0; - } - - // reserve device in ORSL - if (is_optional) { - if (!ORSL::try_reserve(target_number)) { - target_number = -1; - } - } - else { - if (!ORSL::reserve(target_number)) { - target_number = -1; - } - } - - // initialize device - if (target_number >= 0 && - __offload_init_type == c_init_on_offload) { - OFFLOAD_TIMER_START(timer_data, c_offload_host_initialize); - mic_engines[target_number].init(); - OFFLOAD_TIMER_STOP(timer_data, c_offload_host_initialize); - } - } - else { - // fallback to CPU - target_number = -1; - } - - if (target_number < 0 || !retval) { - if (!is_optional && status == 0) { - LIBOFFLOAD_ERROR(c_device_is_not_available); - exit(1); - } - - retval = false; - } - } - else { - LIBOFFLOAD_ERROR(c_invalid_device_number); - exit(1); - } - } - - if (retval) { - ofld = new OffloadDescriptor(target_number, status, - !is_optional, false, timer_data); - OFFLOAD_TIMER_HOST_MIC_NUM(timer_data, target_number); - Offload_Report_Prolog(timer_data); - OFFLOAD_DEBUG_TRACE_1(2, timer_data->offload_number, c_offload_start, - "Starting offload: target_type = %d, " - "number = %d, is_optional = %d\n", - target_type, target_number, is_optional); - - OFFLOAD_TIMER_STOP(timer_data, c_offload_host_target_acquire); - } - else { - ofld = NULL; - - OFFLOAD_TIMER_STOP(timer_data, c_offload_host_target_acquire); - OFFLOAD_TIMER_STOP(timer_data, c_offload_host_total_offload); - offload_report_free_data(timer_data); - } - - return ofld; -} - -// This routine is called for OpenMP4.5 offload calls -// OpenMP 4.5 offload is always optional. -extern "C" OFFLOAD OFFLOAD_TARGET_ACQUIRE1( - const int* device_num, - const char* file, - uint64_t line -) -{ - int target_number; - - // make sure libray is initialized and at least one device is available - if (!__offload_init_library()) { - OFFLOAD_DEBUG_TRACE(2, "No device available, fall back to host\n"); - return NULL; - } - - // OFFLOAD_TIMER_INIT must follow call to __offload_init_library - - OffloadHostTimerData * timer_data = OFFLOAD_TIMER_INIT(file, line); - - OFFLOAD_TIMER_START(timer_data, c_offload_host_total_offload); - - OFFLOAD_TIMER_START(timer_data, c_offload_host_initialize); - - if (__offload_init_type == c_init_on_offload_all) { - for (int i = 0; i < mic_engines_total; i++) { - mic_engines[i].init(); - } - } - - OFFLOAD_TIMER_STOP(timer_data, c_offload_host_initialize); - - OFFLOAD_TIMER_START(timer_data, c_offload_host_target_acquire); - - // use default device number if it is not provided - if (device_num != 0) { - target_number = *device_num; - } - else { - target_number = __omp_device_num; - } - - // device number should be a non-negative integer value - if (target_number < 0) { - LIBOFFLOAD_ERROR(c_omp_invalid_device_num); - exit(1); - } - - // should we do this for OpenMP? - target_number %= mic_engines_total; - - // reserve device in ORSL - if (!ORSL::reserve(target_number)) { - LIBOFFLOAD_ERROR(c_device_is_not_available); - exit(1); - } - - // initialize device(s) - OFFLOAD_TIMER_START(timer_data, c_offload_host_initialize); - - if (__offload_init_type == c_init_on_offload) { - mic_engines[target_number].init(); - } - - OFFLOAD_TIMER_STOP(timer_data, c_offload_host_initialize); - - OFFLOAD ofld = - new OffloadDescriptor(target_number, 0, true, true, timer_data); - - OFFLOAD_TIMER_HOST_MIC_NUM(timer_data, target_number); - - Offload_Report_Prolog(timer_data); - - OFFLOAD_DEBUG_TRACE_1(2, timer_data->offload_number, c_offload_start, - "Starting OpenMP offload, device = %d\n", - target_number); - - OFFLOAD_TIMER_STOP(timer_data, c_offload_host_target_acquire); - - return ofld; -} - -extern "C" OFFLOAD OFFLOAD_TARGET_ACQUIRE2( - TARGET_TYPE target_type, - int target_number, - int is_optional, - _Offload_status* status, - const char* file, - uint64_t line, - const void** stream -) -{ - bool retval; - OFFLOAD ofld; - - // initialize status - if (status != 0) { - status->result = OFFLOAD_UNAVAILABLE; - status->device_number = -1; - status->data_sent = 0; - status->data_received = 0; - } - - // make sure libray is initialized - retval = __offload_init_library(); - // OFFLOAD_TIMER_INIT must follow call to __offload_init_library - OffloadHostTimerData * timer_data = OFFLOAD_TIMER_INIT(file, line); - - OFFLOAD_TIMER_START(timer_data, c_offload_host_total_offload); - - OFFLOAD_TIMER_START(timer_data, c_offload_host_initialize); - - // initalize all devices if init_type is on_offload_all - if (retval && __offload_init_type == c_init_on_offload_all) { - for (int i = 0; i < mic_engines_total; i++) { - mic_engines[i].init(); - } - } - OFFLOAD_TIMER_STOP(timer_data, c_offload_host_initialize); - - OFFLOAD_TIMER_START(timer_data, c_offload_host_target_acquire); - - if (target_type == TARGET_HOST) { - // Host always available - retval = true; - } - else if (target_type == TARGET_MIC) { - _Offload_stream handle = *(reinterpret_cast<_Offload_stream*>(stream)); - Stream * stream = handle ? Stream::find_stream(handle, false) : NULL; - if (target_number >= -1) { - if (retval) { - // device number is defined by stream - if (stream) { - target_number = stream->get_device(); - target_number = target_number % mic_engines_total; - } - - // reserve device in ORSL - if (target_number != -1) { - if (is_optional) { - if (!ORSL::try_reserve(target_number)) { - target_number = -1; - } - } - else { - if (!ORSL::reserve(target_number)) { - target_number = -1; - } - } - } - - // initialize device - if (target_number >= 0 && - __offload_init_type == c_init_on_offload) { - OFFLOAD_TIMER_START(timer_data, c_offload_host_initialize); - mic_engines[target_number].init(); - OFFLOAD_TIMER_STOP(timer_data, c_offload_host_initialize); - } - } - else { - // fallback to CPU - target_number = -1; - } - if (!(target_number == -1 && handle == 0)) { - if (target_number < 0 || !retval) { - if (!is_optional && status == 0) { - LIBOFFLOAD_ERROR(c_device_is_not_available); - exit(1); - } - - retval = false; - } - } - } - else { - LIBOFFLOAD_ERROR(c_invalid_device_number); - exit(1); - } - } - - if (retval) { - ofld = new OffloadDescriptor(target_number, status, - !is_optional, false, timer_data); - OFFLOAD_TIMER_HOST_MIC_NUM(timer_data, target_number); - Offload_Report_Prolog(timer_data); - OFFLOAD_DEBUG_TRACE_1(2, timer_data->offload_number, c_offload_start, - "Starting offload: target_type = %d, " - "number = %d, is_optional = %d\n", - target_type, target_number, is_optional); - - OFFLOAD_TIMER_STOP(timer_data, c_offload_host_target_acquire); - } - else { - ofld = NULL; - - OFFLOAD_TIMER_STOP(timer_data, c_offload_host_target_acquire); - OFFLOAD_TIMER_STOP(timer_data, c_offload_host_total_offload); - offload_report_free_data(timer_data); - } - - return ofld; -} - -static int offload_offload_wrap( - OFFLOAD ofld, - const char *name, - int is_empty, - int num_vars, - VarDesc *vars, - VarDesc2 *vars2, - int num_waits, - const void **waits, - const void **signal, - int entry_id, - const void *stack_addr, - OffloadFlags offload_flags -) -{ - if (signal) { - ofld->set_signal(*signal); - } - - bool ret = ofld->offload(name, is_empty, vars, vars2, num_vars, - waits, num_waits, signal, entry_id, - stack_addr, offload_flags); - if (!ret || (signal == 0 && ofld->get_stream() == 0 && - !offload_flags.bits.omp_async)) { - delete ofld; - } - return ret; -} - -extern "C" int OFFLOAD_OFFLOAD1( - OFFLOAD ofld, - const char *name, - int is_empty, - int num_vars, - VarDesc *vars, - VarDesc2 *vars2, - int num_waits, - const void **waits, - const void **signal -) -{ - return offload_offload_wrap(ofld, name, is_empty, - num_vars, vars, vars2, - num_waits, waits, - signal, 0, NULL, {0}); -} - -extern "C" int OFFLOAD_OFFLOAD2( - OFFLOAD ofld, - const char *name, - int is_empty, - int num_vars, - VarDesc *vars, - VarDesc2 *vars2, - int num_waits, - const void** waits, - const void** signal, - int entry_id, - const void *stack_addr -) -{ - return offload_offload_wrap(ofld, name, is_empty, - num_vars, vars, vars2, - num_waits, waits, - signal, entry_id, stack_addr, {0}); -} - -extern "C" int OFFLOAD_OFFLOAD3( - OFFLOAD ofld, - const char *name, - int is_empty, - int num_vars, - VarDesc *vars, - VarDesc2 *vars2, - int num_waits, - const void** waits, - const void** signal, - int entry_id, - const void *stack_addr, - OffloadFlags offload_flags, - const void** stream -) -{ - // 1. if the source is compiled with -traceback then stream is 0 - // 2. if offload has a stream clause then stream is address of stream value - if (stream) { - ofld->set_stream(*(reinterpret_cast<_Offload_stream *>(stream))); - } - - return offload_offload_wrap(ofld, name, is_empty, - num_vars, vars, vars2, - num_waits, waits, - signal, entry_id, stack_addr, offload_flags); -} - -extern "C" int OFFLOAD_OFFLOAD( - OFFLOAD ofld, - const char *name, - int is_empty, - int num_vars, - VarDesc *vars, - VarDesc2 *vars2, - int num_waits, - const void **waits, - const void *signal, - int entry_id, - const void *stack_addr -) -{ - // signal is passed by reference now - const void **signal_new = (signal != 0) ? &signal : 0; - const void **waits_new = 0; - int num_waits_new = 0; - - // remove NULL values from the list of signals to wait for - if (num_waits > 0) { - waits_new = (const void**) alloca(sizeof(void*) * num_waits); - for (int i = 0; i < num_waits; i++) { - if (waits[i] != 0) { - waits_new[num_waits_new++] = waits[i]; - } - } - } - - return OFFLOAD_OFFLOAD1(ofld, name, is_empty, - num_vars, vars, vars2, - num_waits_new, waits_new, - signal_new); -} - -extern "C" int OFFLOAD_CALL_COUNT() -{ - offload_call_count++; - return offload_call_count; -} diff --git a/liboffloadmic/runtime/compiler_if_host.h b/liboffloadmic/runtime/compiler_if_host.h deleted file mode 100644 index 025f6fb..0000000 --- a/liboffloadmic/runtime/compiler_if_host.h +++ /dev/null @@ -1,209 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/*! \file - \brief The interface between compiler-generated host code and runtime library -*/ - -#ifndef COMPILER_IF_HOST_H_INCLUDED -#define COMPILER_IF_HOST_H_INCLUDED - -#include "offload_host.h" - -#define OFFLOAD_TARGET_ACQUIRE OFFLOAD_PREFIX(target_acquire) -#define OFFLOAD_TARGET_ACQUIRE1 OFFLOAD_PREFIX(target_acquire1) -#define OFFLOAD_TARGET_ACQUIRE2 OFFLOAD_PREFIX(target_acquire2) -#define OFFLOAD_OFFLOAD OFFLOAD_PREFIX(offload) -#define OFFLOAD_OFFLOAD1 OFFLOAD_PREFIX(offload1) -#define OFFLOAD_OFFLOAD2 OFFLOAD_PREFIX(offload2) -#define OFFLOAD_OFFLOAD3 OFFLOAD_PREFIX(offload3) -#define OFFLOAD_CALL_COUNT OFFLOAD_PREFIX(offload_call_count) - - -/*! \fn OFFLOAD_TARGET_ACQUIRE - \brief Attempt to acquire the target. - \param target_type The type of target. - \param target_number The device number. - \param is_optional Whether CPU fall-back is allowed. - \param status Address of variable to hold offload status. - \param file Filename in which this offload occurred. - \param line Line number in the file where this offload occurred. -*/ -extern "C" OFFLOAD OFFLOAD_TARGET_ACQUIRE( - TARGET_TYPE target_type, - int target_number, - int is_optional, - _Offload_status* status, - const char* file, - uint64_t line -); - -/*! \fn OFFLOAD_TARGET_ACQUIRE1 - \brief Acquire the target for offload (OpenMP). - \param device_number Device number or null if not specified. - \param file Filename in which this offload occurred - \param line Line number in the file where this offload occurred. -*/ -extern "C" OFFLOAD OFFLOAD_TARGET_ACQUIRE1( - const int* device_number, - const char* file, - uint64_t line -); - -/*! \fn OFFLOAD_TARGET_ACQUIRE2 - \brief Attempt to acquire the target. - \param target_type The type of target. - \param target_number The device number. - \param is_optional Whether CPU fall-back is allowed. - \param status Address of variable to hold offload status. - \param file Filename in which this offload occurred. - \param line Line number in the file where this offload occurred. - \param stream Pointer to stream value. -*/ -extern "C" OFFLOAD OFFLOAD_TARGET_ACQUIRE2( - TARGET_TYPE target_type, - int target_number, - int is_optional, - _Offload_status* status, - const char* file, - uint64_t line, - const void** stream -); - -/*! \fn OFFLOAD_OFFLOAD1 - \brief Run function on target using interface for old data persistence. - \param o Offload descriptor created by OFFLOAD_TARGET_ACQUIRE. - \param name Name of offload entry point. - \param is_empty If no code to execute (e.g. offload_transfer) - \param num_vars Number of variable descriptors. - \param vars Pointer to VarDesc array. - \param vars2 Pointer to VarDesc2 array. - \param num_waits Number of "wait" values. - \param waits Pointer to array of wait values. - \param signal Pointer to signal value or NULL. -*/ -extern "C" int OFFLOAD_OFFLOAD1( - OFFLOAD o, - const char *name, - int is_empty, - int num_vars, - VarDesc *vars, - VarDesc2 *vars2, - int num_waits, - const void** waits, - const void** signal -); - -/*! \fn OFFLOAD_OFFLOAD2 - \brief Run function on target using interface for new data persistence. - \param o Offload descriptor created by OFFLOAD_TARGET_ACQUIRE. - \param name Name of offload entry point. - \param is_empty If no code to execute (e.g. offload_transfer) - \param num_vars Number of variable descriptors. - \param vars Pointer to VarDesc array. - \param vars2 Pointer to VarDesc2 array. - \param num_waits Number of "wait" values. - \param waits Pointer to array of wait values. - \param signal Pointer to signal value or NULL. - \param entry_id A signature for the function doing the offload. - \param stack_addr The stack frame address of the function doing offload. -*/ -extern "C" int OFFLOAD_OFFLOAD2( - OFFLOAD o, - const char *name, - int is_empty, - int num_vars, - VarDesc *vars, - VarDesc2 *vars2, - int num_waits, - const void** waits, - const void** signal, - int entry_id, - const void *stack_addr -); - - -/*! \fn OFFLOAD_OFFLOAD3 - \brief Run function on target, API introduced in 15.0 Update 1 - \brief when targetptr, preallocated feature was introduced. - \param o Offload descriptor created by OFFLOAD_TARGET_ACQUIRE. - \param name Name of offload entry point. - \param is_empty If no code to execute (e.g. offload_transfer) - \param num_vars Number of variable descriptors. - \param vars Pointer to VarDesc array. - \param vars2 Pointer to VarDesc2 array. - \param num_waits Number of "wait" values. - \param waits Pointer to array of wait values. - \param signal Pointer to signal value or NULL. - \param entry_id A signature for the function doing the offload. - \param stack_addr The stack frame address of the function doing offload. - \param offload_flags Flags to indicate Fortran traceback, OpenMP async. - \param stream Pointer to stream value or NULL. -*/ -extern "C" int OFFLOAD_OFFLOAD3( - OFFLOAD ofld, - const char *name, - int is_empty, - int num_vars, - VarDesc *vars, - VarDesc2 *vars2, - int num_waits, - const void** waits, - const void** signal, - int entry_id, - const void *stack_addr, - OffloadFlags offload_flags, - const void** stream -); - -// Run function on target (obsolete). -// @param o OFFLOAD object -// @param name function name -extern "C" int OFFLOAD_OFFLOAD( - OFFLOAD o, - const char *name, - int is_empty, - int num_vars, - VarDesc *vars, - VarDesc2 *vars2, - int num_waits, - const void** waits, - const void* signal, - int entry_id = 0, - const void *stack_addr = NULL -); - -// Global counter on host. -// This variable is used if P2OPT_offload_do_data_persistence == 2. -// The variable used to identify offload constructs contained in one procedure. -// Call to OFFLOAD_CALL_COUNT() is inserted at HOST on entry of the routine. -extern "C" int OFFLOAD_CALL_COUNT(); - -#endif // COMPILER_IF_HOST_H_INCLUDED diff --git a/liboffloadmic/runtime/compiler_if_target.cpp b/liboffloadmic/runtime/compiler_if_target.cpp deleted file mode 100644 index a44bd88..0000000 --- a/liboffloadmic/runtime/compiler_if_target.cpp +++ /dev/null @@ -1,64 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#include "compiler_if_target.h" - -extern "C" void OFFLOAD_TARGET_ENTER( - OFFLOAD ofld, - int vars_total, - VarDesc *vars, - VarDesc2 *vars2 -) -{ - OFFLOAD_DEBUG_TRACE(3, "%s(%p, %d, %p, %p)\n", __func__, ofld, - vars_total, vars, vars2); - ofld->merge_var_descs(vars, vars2, vars_total); - ofld->scatter_copyin_data(); -} - -extern "C" void OFFLOAD_TARGET_LEAVE( - OFFLOAD ofld -) -{ - OFFLOAD_DEBUG_TRACE(3, "%s(%p)\n", __func__, ofld); - ofld->gather_copyout_data(); -} - -extern "C" void OFFLOAD_TARGET_MAIN(void) -{ - // initialize target part - __offload_target_init(); - - // pass control to COI - PipelineStartExecutingRunFunctions(); - ProcessWaitForShutdown(); - - OFFLOAD_DEBUG_TRACE(2, "Exiting main...\n"); -} diff --git a/liboffloadmic/runtime/compiler_if_target.h b/liboffloadmic/runtime/compiler_if_target.h deleted file mode 100644 index ebb9b73..0000000 --- a/liboffloadmic/runtime/compiler_if_target.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/*! \file - \brief The interface between compiler-generated target code and runtime library -*/ - -#ifndef COMPILER_IF_TARGET_H_INCLUDED -#define COMPILER_IF_TARGET_H_INCLUDED - -#include "offload_target.h" - -#define OFFLOAD_TARGET_ENTER OFFLOAD_PREFIX(target_enter) -#define OFFLOAD_TARGET_LEAVE OFFLOAD_PREFIX(target_leave) -#define OFFLOAD_TARGET_MAIN OFFLOAD_PREFIX(target_main) - -/*! \fn OFFLOAD_TARGET_ENTER - \brief Fill in variable addresses using VarDesc array. - \brief Then call back the runtime library to fetch data. - \param ofld Offload descriptor created by runtime. - \param var_desc_num Number of variable descriptors. - \param var_desc Pointer to VarDesc array. - \param var_desc2 Pointer to VarDesc2 array. -*/ -extern "C" void OFFLOAD_TARGET_ENTER( - OFFLOAD ofld, - int var_desc_num, - VarDesc *var_desc, - VarDesc2 *var_desc2 -); - -/*! \fn OFFLOAD_TARGET_LEAVE - \brief Call back the runtime library to gather outputs using VarDesc array. - \param ofld Offload descriptor created by OFFLOAD_TARGET_ACQUIRE. -*/ -extern "C" void OFFLOAD_TARGET_LEAVE( - OFFLOAD ofld -); - -// Entry point for the target application. -extern "C" void OFFLOAD_TARGET_MAIN(void); - -#endif // COMPILER_IF_TARGET_H_INCLUDED diff --git a/liboffloadmic/runtime/dv_util.cpp b/liboffloadmic/runtime/dv_util.cpp deleted file mode 100644 index f79cf1f..0000000 --- a/liboffloadmic/runtime/dv_util.cpp +++ /dev/null @@ -1,153 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#include "offload_common.h" - -bool __dv_is_contiguous(const ArrDesc *dvp) -{ - if (dvp->Flags & ArrDescFlagsContiguous) { - return true; - } - - if (dvp->Rank != 0) { - if (dvp->Dim[0].Mult != dvp->Len) { - return false; - } - for (int i = 1; i < dvp->Rank; i++) { - if (dvp->Dim[i].Mult != - dvp->Dim[i-1].Extent * dvp->Dim[i-1].Mult) { - return false; - } - } - } - return true; -} - -bool __dv_is_allocated(const ArrDesc *dvp) -{ - return (dvp->Flags & ArrDescFlagsDefined); -} - -uint64_t __dv_data_length(const ArrDesc *dvp) -{ - uint64_t size; - - if (dvp->Rank == 0) { - size = dvp->Len; - return size; - } - - size = dvp->Len; - for (int i = 0; i < dvp->Rank; ++i) { - size += (dvp->Dim[i].Extent-1) * dvp->Dim[i].Mult; - } - return size; -} - -uint64_t __dv_data_length(const ArrDesc *dvp, int64_t count) -{ - if (dvp->Rank == 0) { - return count; - } - - return count * dvp->Dim[0].Mult; -} - -// Create CeanReadRanges data for reading contiguous ranges of -// noncontiguous array defined by the argument -CeanReadRanges * init_read_ranges_dv(const ArrDesc *dvp) -{ - int64_t len; - int count; - int rank = dvp->Rank; - CeanReadRanges *res = NULL; - - if (rank != 0) { - int i = 0; - len = dvp->Len; - if (dvp->Dim[0].Mult == len) { - for (i = 1; i < rank; i++) { - len *= dvp->Dim[i-1].Extent; - if (dvp->Dim[i].Mult != len) { - break; - } - } - } - res = (CeanReadRanges *)malloc( - sizeof(CeanReadRanges) + (rank - i) * sizeof(CeanReadDim)); - if (res == NULL) - LIBOFFLOAD_ERROR(c_malloc); - res -> last_noncont_ind = rank - i - 1; - count = 1; - for (; i < rank; i++) { - res->Dim[rank - i - 1].count = count; - res->Dim[rank - i - 1].size = dvp->Dim[i].Mult; - count *= dvp->Dim[i].Extent; - } - res -> range_max_number = count; - res -> range_size = len; - res -> ptr = (void*)dvp->Base; - res -> current_number = 0; - res -> init_offset = 0; - } - return res; -} - -#if OFFLOAD_DEBUG > 0 -void __dv_desc_dump(const char *name, const ArrDesc *dvp) -{ - OFFLOAD_TRACE(3, "%s DV %p\n", name, dvp); - - if (dvp != 0) { - OFFLOAD_TRACE(3, - " dv->Base = 0x%lx\n" - " dv->Len = 0x%lx\n" - " dv->Offset = 0x%lx\n" - " dv->Flags = 0x%lx\n" - " dv->Rank = 0x%lx\n" - " dv->Resrvd = 0x%lx\n", - dvp->Base, - dvp->Len, - dvp->Offset, - dvp->Flags, - dvp->Rank, - dvp->Reserved); - - for (int i = 0 ; i < dvp->Rank; i++) { - OFFLOAD_TRACE(3, - " (%d) Extent=%ld, Multiplier=%ld, LowerBound=%ld\n", - i, - dvp->Dim[i].Extent, - dvp->Dim[i].Mult, - dvp->Dim[i].LowerBound); - } - } -} -#endif // OFFLOAD_DEBUG > 0 diff --git a/liboffloadmic/runtime/dv_util.h b/liboffloadmic/runtime/dv_util.h deleted file mode 100644 index 370ff01..0000000 --- a/liboffloadmic/runtime/dv_util.h +++ /dev/null @@ -1,84 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#ifndef DV_UTIL_H_INCLUDED -#define DV_UTIL_H_INCLUDED - -#include <stdint.h> -#include "offload_util.h" - -// Dope vector declarations -#define ArrDescMaxArrayRank 31 - -// Dope vector flags -#define ArrDescFlagsDefined 1 -#define ArrDescFlagsNodealloc 2 -#define ArrDescFlagsContiguous 4 - -typedef int64_t dv_size; - -typedef struct DimDesc { - dv_size Extent; // Number of elements in this dimension - dv_size Mult; // Multiplier for this dimension. - // The number of bytes between successive - // elements in this dimension. - dv_size LowerBound; // LowerBound of this dimension -} DimDesc ; - -typedef struct ArrDesc { - dv_size Base; // Base address - dv_size Len; // Length of data type, used only for - // character strings. - dv_size Offset; - dv_size Flags; // Flags - dv_size Rank; // Rank of pointer - dv_size Reserved; // reserved for openmp requests - DimDesc Dim[ArrDescMaxArrayRank]; -} ArrDesc ; - -typedef ArrDesc* pArrDesc; - -DLL_LOCAL bool __dv_is_contiguous(const ArrDesc *dvp); - -DLL_LOCAL bool __dv_is_allocated(const ArrDesc *dvp); - -DLL_LOCAL uint64_t __dv_data_length(const ArrDesc *dvp); - -DLL_LOCAL uint64_t __dv_data_length(const ArrDesc *dvp, int64_t nelems); - -DLL_LOCAL CeanReadRanges * init_read_ranges_dv(const ArrDesc *dvp); - -#if OFFLOAD_DEBUG > 0 -DLL_LOCAL void __dv_desc_dump(const char *name, const ArrDesc *dvp); -#else // OFFLOAD_DEBUG -#define __dv_desc_dump(name, dvp) -#endif // OFFLOAD_DEBUG - -#endif // DV_UTIL_H_INCLUDED diff --git a/liboffloadmic/runtime/emulator/coi_common.h b/liboffloadmic/runtime/emulator/coi_common.h deleted file mode 100644 index 085a92d..0000000 --- a/liboffloadmic/runtime/emulator/coi_common.h +++ /dev/null @@ -1,168 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#ifndef COI_COMMON_H_INCLUDED -#define COI_COMMON_H_INCLUDED - -#include <common/COIMacros_common.h> -#include <common/COIPerf_common.h> -#include <source/COIEngine_source.h> -#include <source/COIProcess_source.h> -#include <source/COIPipeline_source.h> -#include <source/COIBuffer_source.h> -#include <source/COIEvent_source.h> - -#include <assert.h> -#include <dirent.h> -#include <dlfcn.h> -#include <errno.h> -#include <fcntl.h> -#include <pthread.h> -#include <signal.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <sys/mman.h> -#include <sys/stat.h> -#include <unistd.h> - - -/* Environment variable for path to 'target' files. */ -#define MIC_DIR_ENV "OFFLOAD_MIC_DIR" - -/* Environment variable for engine index. */ -#define MIC_INDEX_ENV "OFFLOAD_MIC_INDEX" - -/* Environment variable for target executable run command. */ -#define OFFLOAD_EMUL_RUN_ENV "OFFLOAD_EMUL_RUN" - -/* Environment variable for number of emulated devices. */ -#define OFFLOAD_EMUL_NUM_ENV "OFFLOAD_EMUL_NUM" - - -/* Path to engine directory. */ -#define ENGINE_PATH "/tmp/offload_XXXXXX" - -/* Relative path to directory with pipes. */ -#define PIPES_PATH "/pipes" - -/* Non-numerical part of host-to-target pipe file name. */ -#define PIPE_HOST2TGT_NAME PIPES_PATH "/host2tgt_" - -/* Non-numerical part of target-to-host pipe file name. */ -#define PIPE_TGT2HOST_NAME PIPES_PATH "/tgt2host_" - -/* Non-numerical part of shared memory file name. */ -#define SHM_NAME "/offload_shm_" - - -/* Use secure getenv if it's supported. */ -#ifdef HAVE_SECURE_GETENV - #define getenv(x) secure_getenv(x) -#elif HAVE___SECURE_GETENV - #define getenv(x) __secure_getenv(x) -#endif - - -/* Wrapper for malloc. */ -#define MALLOC(type, ptr, size) \ -{ \ - type p = (type) malloc (size); \ - if (p == NULL) \ - COIERROR ("Cannot allocate memory."); \ - ptr = p; \ -} - -/* Like MALLOC, but return NULL instead of COIRESULT. */ -#define MALLOCN(type, ptr, size) \ -{ \ - type p = (type) malloc (size); \ - if (p == NULL) \ - COIERRORN ("Cannot allocate memory."); \ - ptr = p; \ -} - -/* Wrapper for strdup. */ -#define STRDUP(ptr, str) \ -{ \ - char *p = strdup (str); \ - if (p == NULL) \ - COIERROR ("Cannot allocate memory."); \ - ptr = p; \ -} - -/* Wrapper for pipe reading. */ -#define READ(pipe, ptr, size) \ -{ \ - int s = (int) size; \ - if (read (pipe, ptr, s) != s) \ - COIERROR ("Cannot read from pipe."); \ -} - -/* Like READ, but return NULL instead of COIRESULT. */ -#define READN(pipe, ptr, size) \ -{ \ - int s = (int) size; \ - if (read (pipe, ptr, s) != s) \ - COIERRORN ("Cannot read from pipe."); \ -} - -/* Wrapper for pipe writing. */ -#define WRITE(pipe, ptr, size) \ -{ \ - int s = (int) size; \ - if (write (pipe, ptr, s) != s) \ - COIERROR ("Cannot write in pipe."); \ -} - -/* Like WRITE, but return NULL instead of COIRESULT. */ -#define WRITEN(pipe, ptr, size) \ -{ \ - int s = (int) size; \ - if (write (pipe, ptr, s) != s) \ - COIERRORN ("Cannot write in pipe."); \ -} - - -/* Command codes enum. */ -typedef enum -{ - CMD_BUFFER_COPY, - CMD_BUFFER_MAP, - CMD_BUFFER_UNMAP, - CMD_GET_FUNCTION_HANDLE, - CMD_OPEN_LIBRARY, - CMD_CLOSE_LIBRARY, - CMD_PIPELINE_CREATE, - CMD_PIPELINE_DESTROY, - CMD_PIPELINE_RUN_FUNCTION, - CMD_SHUTDOWN -} cmd_t; - -#endif // COI_COMMON_H_INCLUDED diff --git a/liboffloadmic/runtime/emulator/coi_device.cpp b/liboffloadmic/runtime/emulator/coi_device.cpp deleted file mode 100644 index c112147..0000000 --- a/liboffloadmic/runtime/emulator/coi_device.cpp +++ /dev/null @@ -1,401 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#include "coi_device.h" - -#include "coi_version_asm.h" - -#define CYCLE_FREQUENCY 1000000000 - - -static uint32_t engine_index; -static char *engine_dir; - - -extern "C" -{ - -COIRESULT -SYMBOL_VERSION (COIBufferAddRef, 1) (void *ptr) -{ - COITRACE ("COIBufferAddRef"); - - /* Looks like we have nothing to do here. */ - - return COI_SUCCESS; -} - - -COIRESULT -SYMBOL_VERSION (COIBufferReleaseRef, 1) (void *ptr) -{ - COITRACE ("COIBufferReleaseRef"); - - /* Looks like we have nothing to do here. */ - - return COI_SUCCESS; -} - - -COIRESULT -SYMBOL_VERSION (COIEngineGetIndex, 1) (COI_ISA_TYPE *type, - uint32_t *index) -{ - COITRACE ("COIEngineGetIndex"); - - /* type is not used in liboffloadmic. */ - *index = engine_index; - - return COI_SUCCESS; -} - - -COIRESULT -SYMBOL_VERSION (COIPipelineStartExecutingRunFunctions, 1) () -{ - COITRACE ("COIPipelineStartExecutingRunFunctions"); - - /* Looks like we have nothing to do here. */ - - return COI_SUCCESS; -} - - -/* The start routine for the COI pipeline thread. */ - -static void * -pipeline_thread_routine (void *in_pipeline_num) -{ - uint32_t pipeline_num = *(uint32_t *) in_pipeline_num; - free (in_pipeline_num); - - /* Open pipes. */ - char *pipe_host2tgt_path, *pipe_tgt2host_path; - MALLOCN (char *, pipe_host2tgt_path, - strlen (engine_dir) + sizeof (PIPE_HOST2TGT_NAME "0000000000")); - MALLOCN (char *, pipe_tgt2host_path, - strlen (engine_dir) + sizeof (PIPE_TGT2HOST_NAME "0000000000")); - sprintf (pipe_host2tgt_path, "%s" PIPE_HOST2TGT_NAME "%010d", engine_dir, - pipeline_num); - sprintf (pipe_tgt2host_path, "%s" PIPE_TGT2HOST_NAME "%010d", engine_dir, - pipeline_num); - int pipe_host2tgt = open (pipe_host2tgt_path, O_CLOEXEC | O_RDONLY); - if (pipe_host2tgt < 0) - COIERRORN ("Cannot open host-to-target pipe."); - int pipe_tgt2host = open (pipe_tgt2host_path, O_CLOEXEC | O_WRONLY); - if (pipe_tgt2host < 0) - COIERRORN ("Cannot open target-to-host pipe."); - - free (pipe_host2tgt_path); - free (pipe_tgt2host_path); - - while (1) - { - /* Read and execute command. */ - cmd_t cmd = CMD_PIPELINE_DESTROY; - int cmd_len = read (pipe_host2tgt, &cmd, sizeof (cmd_t)); - if (cmd_len != sizeof (cmd_t) && cmd_len != 0) - COIERRORN ("Cannot read from pipe."); - - if (cmd == CMD_PIPELINE_DESTROY) - break; - else if (cmd == CMD_PIPELINE_RUN_FUNCTION) - { - /* Receive data from host. */ - void (*func) (uint32_t, void **, uint64_t *, void *, uint16_t, void *, - uint16_t); - uint32_t buffer_count; - READN (pipe_host2tgt, &func, sizeof (void *)); - READN (pipe_host2tgt, &buffer_count, sizeof (uint32_t)); - void **buffers; - uint64_t *buffers_len; - MALLOCN (void **, buffers, buffer_count * sizeof (void *)); - MALLOCN (uint64_t *, buffers_len, buffer_count * sizeof (uint64_t)); - for (uint32_t i = 0; i < buffer_count; i++) - { - READN (pipe_host2tgt, &buffers_len[i], sizeof (uint64_t)); - READN (pipe_host2tgt, &buffers[i], sizeof (void *)); - } - uint16_t misc_data_len; - READN (pipe_host2tgt, &misc_data_len, sizeof (uint16_t)); - void *misc_data = NULL; - if (misc_data_len > 0) - { - MALLOCN (void *, misc_data, misc_data_len); - READN (pipe_host2tgt, misc_data, misc_data_len); - } - uint16_t return_data_len; - READN (pipe_host2tgt, &return_data_len, sizeof (uint16_t)); - void *return_data; - if (return_data_len > 0) - MALLOCN (void *, return_data, return_data_len); - - /* Run function. */ - func (buffer_count, buffers, buffers_len, misc_data, - misc_data_len, return_data, return_data_len); - - /* Send data to host if any or just send notification. */ - WRITEN (pipe_tgt2host, return_data_len > 0 ? return_data : &cmd, - return_data_len > 0 ? return_data_len : sizeof (cmd_t)); - - /* Clean up. */ - free (buffers); - free (buffers_len); - if (misc_data_len > 0) - free (misc_data); - if (return_data_len > 0) - free (return_data); - } - else - COIERRORN ("Unrecognizable command from host."); - } - - /* Close pipes. */ - if (close (pipe_host2tgt) < 0) - COIERRORN ("Cannot close host-to-target pipe."); - if (close (pipe_tgt2host) < 0) - COIERRORN ("Cannot close target-to-host pipe."); - - return NULL; -} - - -COIRESULT -SYMBOL_VERSION (COIProcessWaitForShutdown, 1) () -{ - COITRACE ("COIProcessWaitForShutdown"); - - engine_dir = getenv (MIC_DIR_ENV); - char *mic_index = getenv (MIC_INDEX_ENV); - assert (engine_dir != NULL && mic_index != NULL); - - /* Get engine index. */ - engine_index = atoi (mic_index); - - /* Open main pipes. */ - char *pipe_host2tgt_path, *pipe_tgt2host_path; - MALLOC (char *, pipe_host2tgt_path, - strlen (engine_dir) + sizeof (PIPE_HOST2TGT_NAME "mainpipe")); - MALLOC (char *, pipe_tgt2host_path, - strlen (engine_dir) + sizeof (PIPE_TGT2HOST_NAME "mainpipe")); - sprintf (pipe_host2tgt_path, "%s" PIPE_HOST2TGT_NAME "mainpipe", engine_dir); - sprintf (pipe_tgt2host_path, "%s" PIPE_TGT2HOST_NAME "mainpipe", engine_dir); - int pipe_host2tgt = open (pipe_host2tgt_path, O_CLOEXEC | O_RDONLY); - if (pipe_host2tgt < 0) - COIERROR ("Cannot open host-to-target main pipe."); - int pipe_tgt2host = open (pipe_tgt2host_path, O_CLOEXEC | O_WRONLY); - if (pipe_tgt2host < 0) - COIERROR ("Cannot open target-to-host main pipe."); - - /* Clean up. */ - free (pipe_host2tgt_path); - free (pipe_tgt2host_path); - - /* Handler. */ - while (1) - { - /* Read and execute command. */ - cmd_t cmd = CMD_SHUTDOWN; - int cmd_len = read (pipe_host2tgt, &cmd, sizeof (cmd_t)); - if (cmd_len != sizeof (cmd_t) && cmd_len != 0) - COIERROR ("Cannot read from main pipe."); - - switch (cmd) - { - case CMD_BUFFER_COPY: - { - uint64_t len; - void *dest, *source; - - /* Receive data from host. */ - READ (pipe_host2tgt, &dest, sizeof (void *)); - READ (pipe_host2tgt, &source, sizeof (void *)); - READ (pipe_host2tgt, &len, sizeof (uint64_t)); - - /* Copy. */ - memcpy (dest, source, len); - - /* Notify host about completion. */ - WRITE (pipe_tgt2host, &cmd, sizeof (cmd_t)); - - break; - } - case CMD_BUFFER_MAP: - { - char *name; - size_t len; - uint64_t buffer_len; - void *buffer; - - /* Receive data from host. */ - READ (pipe_host2tgt, &len, sizeof (size_t)); - MALLOC (char *, name, len); - READ (pipe_host2tgt, name, len); - READ (pipe_host2tgt, &buffer_len, sizeof (uint64_t)); - - /* Open shared memory. */ - int fd = shm_open (name, O_CLOEXEC | O_RDWR, S_IRUSR | S_IWUSR); - if (fd < 0) - COIERROR ("Cannot open shared memory."); - - /* Map shared memory. */ - buffer = mmap (NULL, buffer_len, PROT_READ | PROT_WRITE, - MAP_SHARED, fd, 0); - if (buffer == NULL) - COIERROR ("Cannot map shared memory."); - - /* Send data to host. */ - WRITE (pipe_tgt2host, &fd, sizeof (int)); - WRITE (pipe_tgt2host, &buffer, sizeof (void *)); - - /* Clean up. */ - free (name); - - break; - } - case CMD_BUFFER_UNMAP: - { - int fd; - uint64_t buffer_len; - void *buffer; - - /* Receive data from host. */ - READ (pipe_host2tgt, &fd, sizeof (int)); - READ (pipe_host2tgt, &buffer, sizeof (void *)); - READ (pipe_host2tgt, &buffer_len, sizeof (uint64_t)); - - /* Unmap buffer. */ - if (munmap (buffer, buffer_len) < 0) - COIERROR ("Cannot unmap shared memory."); - - /* Close shared memory. */ - if (close (fd) < 0) - COIERROR ("Cannot close shared memory file."); - - /* Notify host about completion. */ - WRITE (pipe_tgt2host, &cmd, sizeof (cmd_t)); - - break; - } - case CMD_GET_FUNCTION_HANDLE: - { - char *name; - size_t len; - - /* Receive data from host. */ - READ (pipe_host2tgt, &len, sizeof (size_t)); - MALLOC (char *, name, len); - READ (pipe_host2tgt, name, len); - - /* Find function. */ - void *ptr = dlsym (RTLD_DEFAULT, name); - if (ptr == NULL) - COIERROR ("Cannot find symbol %s.", name); - - /* Send data to host. */ - WRITE (pipe_tgt2host, &ptr, sizeof (void *)); - - /* Clean up. */ - free (name); - - break; - } - case CMD_OPEN_LIBRARY: - { - char *lib_path; - size_t len; - - /* Receive data from host. */ - READ (pipe_host2tgt, &len, sizeof (size_t)); - MALLOC (char *, lib_path, len); - READ (pipe_host2tgt, lib_path, len); - - /* Open library. */ - void *handle = dlopen (lib_path, RTLD_LAZY | RTLD_GLOBAL); - if (handle == NULL) - COIERROR ("Cannot load %s: %s", lib_path, dlerror ()); - - /* Send data to host. */ - WRITE (pipe_tgt2host, &handle, sizeof (void *)); - - /* Clean up. */ - free (lib_path); - - break; - } - case CMD_CLOSE_LIBRARY: - { - /* Receive data from host. */ - void *handle; - READ (pipe_host2tgt, &handle, sizeof (void *)); - - dlclose (handle); - - break; - } - case CMD_PIPELINE_CREATE: - { - /* Receive data from host. */ - uint32_t *pipeline_num; - MALLOC (uint32_t *, pipeline_num, sizeof (uint32_t)); - READ (pipe_host2tgt, pipeline_num, sizeof (*pipeline_num)); - - /* Create a new thread for the pipeline. */ - pthread_t thread; - if (pthread_create (&thread, NULL, pipeline_thread_routine, - pipeline_num)) - COIERROR ("Cannot create new thread."); - break; - } - case CMD_SHUTDOWN: - if (close (pipe_host2tgt) < 0) - COIERROR ("Cannot close host-to-target main pipe."); - if (close (pipe_tgt2host) < 0) - COIERROR ("Cannot close target-to-host main pipe."); - return COI_SUCCESS; - default: - COIERROR ("Unrecognizable command from host."); - } - } - - return COI_ERROR; -} - - - -uint64_t -SYMBOL_VERSION (COIPerfGetCycleFrequency, 1) () -{ - COITRACE ("COIPerfGetCycleFrequency"); - - return (uint64_t) CYCLE_FREQUENCY; -} - -} // extern "C" - diff --git a/liboffloadmic/runtime/emulator/coi_device.h b/liboffloadmic/runtime/emulator/coi_device.h deleted file mode 100644 index a3778ba..0000000 --- a/liboffloadmic/runtime/emulator/coi_device.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#ifndef COI_DEVICE_H_INCLUDED -#define COI_DEVICE_H_INCLUDED - -#include "coi_common.h" - -#define COIERROR(...) \ -{ \ - fprintf (stderr, "COI ERROR - TARGET: "); \ - fprintf (stderr, __VA_ARGS__); \ - fprintf (stderr, "\n"); \ - perror (NULL); \ - return COI_ERROR; \ -} - -/* Like COIERROR, but return NULL instead of COIRESULT. */ -#define COIERRORN(...) \ -{ \ - fprintf (stderr, "COI ERROR - TARGET: "); \ - fprintf (stderr, __VA_ARGS__); \ - fprintf (stderr, "\n"); \ - perror (NULL); \ - return NULL; \ -} - -#ifdef DEBUG - #define COITRACE(...) \ - { \ - fprintf (stderr, "COI TRACE - TARGET: "); \ - fprintf (stderr, __VA_ARGS__); \ - fprintf (stderr, "\n"); \ - } -#else - #define COITRACE(...) {} -#endif - - -#endif // COI_DEVICE_H_INCLUDED diff --git a/liboffloadmic/runtime/emulator/coi_host.cpp b/liboffloadmic/runtime/emulator/coi_host.cpp deleted file mode 100644 index 6170d8d..0000000 --- a/liboffloadmic/runtime/emulator/coi_host.cpp +++ /dev/null @@ -1,1634 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#include <set> -#include <map> -#include <queue> - -#include "coi_host.h" - -#include "coi_version_asm.h" - -#define CYCLE_FREQUENCY 1000000000 - -enum buffer_t -{ - BUFFER_NORMAL, - BUFFER_MEMORY -}; - -struct Engine -{ - COI_ISA_TYPE type; - uint32_t index; - char *dir; -}; - -struct Function -{ - void *ptr; - uint32_t num_buffers; - uint64_t *bufs_size; - void * *bufs_data_target; - uint16_t misc_data_len; - void *misc_data; - uint16_t return_value_len; - void *return_value; - COIEVENT completion_event; -}; - -struct Callback -{ - COI_EVENT_CALLBACK ptr; - const void *data; -}; - -struct Process -{ - pid_t pid; - int pipe_host2tgt; - int pipe_tgt2host; - Engine *engine; - void **functions; -}; - -struct Pipeline -{ - pthread_t thread; - bool destroy; - bool is_destroyed; - char *pipe_host2tgt_path; - char *pipe_tgt2host_path; - int pipe_host2tgt; - int pipe_tgt2host; - std::queue<Function> queue; - Process *process; -}; - -struct Buffer -{ - buffer_t type; - char *name; - int fd; - int fd_target; - uint64_t size; - void *data; - void *data_target; - Process *process; -}; - - -/* Environment variables. */ -extern char **environ; - -/* List of directories for removing on exit. */ -static char **tmp_dirs; -static unsigned tmp_dirs_num; - -/* Number of emulated MIC engines. */ -static long num_engines; - -/* Number of the last COI pipeline. */ -static uint32_t max_pipeline_num; - -/* Set of undestroyed pipelines. */ -static std::set<Pipeline *> pipelines; - -/* Number of the last COI event, the event #0 is always signalled. */ -static uint64_t max_event_num = 1; - -/* Set of created COI events, which are not signalled. */ -static std::set<uint64_t> non_signalled_events; - -/* Set of COI events, which encountered errors. */ -static std::map<uint64_t, COIRESULT> errored_events; - -/* Set of registered callbacks, indexed by event number. */ -static std::map<uint64_t, Callback> callbacks; - -/* Mutex to sync parallel execution. */ -static pthread_mutex_t mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP; - - -static COIRESULT -read_long_env (const char *env_name, long *var, long var_default) -{ - char *str = getenv (env_name); - char *s; - - if (!str || *str == '\0') - *var = var_default; - else - { - errno = 0; - *var = strtol (str, &s, 0); - if (errno != 0 || s == str || *s != '\0') - COIERROR ("Variable %s has invalid value.", env_name); - } - - return COI_SUCCESS; -} - -__attribute__((constructor)) -static void -init () -{ - if (read_long_env (OFFLOAD_EMUL_NUM_ENV, &num_engines, 1) == COI_ERROR) - exit (0); -} - - -/* Helper function for directory removing. */ -static COIRESULT remove_directory (char *path) -{ - char *file; - struct dirent *entry; - struct stat statfile; - DIR *dir = opendir (path); - if (dir == NULL) - COIERROR ("Cannot open directory %s.", dir); - - while (entry = readdir (dir)) - { - if (!strcmp (entry->d_name, ".") || !strcmp (entry->d_name, "..")) - continue; - - MALLOC (char *, file, strlen (path) + strlen (entry->d_name) + 2); - sprintf (file, "%s/%s", path, entry->d_name); - - if (stat (file, &statfile) < 0) - COIERROR ("Cannot retrieve information about file %s.", file); - - if (S_ISDIR (statfile.st_mode)) - { - if (remove_directory (file) == COI_ERROR) - return COI_ERROR; - } - else - { - if (unlink (file) < 0) - COIERROR ("Cannot unlink file %s.", file); - } - - free (file); - } - - if (closedir (dir) < 0) - COIERROR ("Cannot close directory %s.", path); - if (rmdir (path) < 0) - COIERROR ("Cannot remove directory %s.", path); - - return COI_SUCCESS; -} - -__attribute__((destructor)) -static void -cleanup () -{ - for (unsigned i = 0; i < tmp_dirs_num; i++) - { - remove_directory (tmp_dirs[i]); - free (tmp_dirs[i]); - } - free (tmp_dirs); -} - -static COIRESULT -start_critical_section () -{ - if (pthread_mutex_lock (&mutex) != 0) - COIERROR ("Cannot lock mutex."); - return COI_SUCCESS; -} - -static COIRESULT -finish_critical_section () -{ - if (pthread_mutex_unlock (&mutex) != 0) - COIERROR ("Cannot unlock mutex."); - return COI_SUCCESS; -} - -static bool -pipeline_is_destroyed (const Pipeline *pipeline) -{ - start_critical_section (); - bool res = pipeline->is_destroyed; - finish_critical_section (); - return res; -} - -static void -maybe_invoke_callback (const COIEVENT event, const COIRESULT result) -{ - std::map<uint64_t, Callback>::iterator cb = callbacks.find (event.opaque[0]); - - if (cb != callbacks.end ()) - { - Callback callback = cb->second; - callback.ptr (event, result, callback.data); - callbacks.erase (cb); - } -} - -static void -signal_event (const COIEVENT event, const COIRESULT result) -{ - if (result != COI_SUCCESS) - errored_events.insert (std::pair <uint64_t, COIRESULT> (event.opaque[0], - result)); - non_signalled_events.erase (event.opaque[0]); - - maybe_invoke_callback (event, result); -} - -static COIRESULT -get_event_result (const COIEVENT event) -{ - COIRESULT res = COI_SUCCESS; - - std::map<uint64_t, COIRESULT>::iterator ee - = errored_events.find (event.opaque[0]); - - if (ee != errored_events.end ()) - res = ee->second; - - return res; -} - - -extern "C" -{ - -COIRESULT -SYMBOL_VERSION (COIBufferCopy, 1) (COIBUFFER in_DestBuffer, - COIBUFFER in_SourceBuffer, - uint64_t in_DestOffset, - uint64_t in_SourceOffset, - uint64_t in_Length, - COI_COPY_TYPE in_Type, - uint32_t in_NumDependencies, - const COIEVENT *in_pDependencies, // Ignored - COIEVENT *out_pCompletion) -{ - COITRACE ("COIBufferCopy"); - - /* Features of liboffloadmic. */ - assert (in_DestBuffer != NULL); - assert (in_SourceBuffer != NULL); - assert (in_Type == COI_COPY_UNSPECIFIED); - assert (in_NumDependencies == 0); - - /* Convert input arguments. */ - Buffer *dest = (Buffer *) in_DestBuffer; - Buffer *source = (Buffer *) in_SourceBuffer; - - start_critical_section (); - - /* Map buffers if needed. */ - if (dest->data == 0 && dest->type == BUFFER_NORMAL) - if (COIBufferMap (in_DestBuffer, 0, dest->size, (COI_MAP_TYPE) 0, - 0, 0, 0, 0, 0) == COI_ERROR) - return COI_ERROR; - if (source->data == 0 && source->type == BUFFER_NORMAL) - if (COIBufferMap (in_SourceBuffer, 0, source->size, (COI_MAP_TYPE) 0, - 0, 0, 0, 0, 0) == COI_ERROR) - return COI_ERROR; - - /* Copy data. */ - if (source->data != 0 && dest->data != 0) - memcpy ((void *) ((uintptr_t) dest->data + in_DestOffset), - (void *) ((uintptr_t) source->data + in_SourceOffset), in_Length); - else - { - assert (dest->process == source->process); - - Buffer *buffer; - cmd_t cmd = CMD_BUFFER_COPY; - - /* Create intermediary buffer. */ - if (COIBufferCreate (in_Length, COI_BUFFER_NORMAL, 0, 0, 1, - (COIPROCESS*) &dest->process, - (COIBUFFER *) &buffer) == COI_ERROR) - return COI_ERROR; - - int pipe_host2tgt = dest->process->pipe_host2tgt; - int pipe_tgt2host = dest->process->pipe_tgt2host; - - /* Copy from source to intermediary buffer. */ - if (source->data == 0) - { - assert (source->data_target != 0); - - /* Send data to target. */ - WRITE (pipe_host2tgt, &cmd, sizeof (cmd_t)); - WRITE (pipe_host2tgt, &buffer->data_target, sizeof (void *)); - WRITE (pipe_host2tgt, &source->data_target, sizeof (void *)); - WRITE (pipe_host2tgt, &buffer->size, sizeof (uint64_t)); - - /* Receive data from target. */ - READ (pipe_tgt2host, &cmd, sizeof (cmd_t)); - } - else - { - if (COIBufferCopy ((COIBUFFER) buffer, in_SourceBuffer, 0, - in_SourceOffset, in_Length, in_Type, 0, 0, 0) - == COI_ERROR) - return COI_ERROR; - } - - /* Copy from intermediary buffer to dest. */ - if (dest->data == 0) - { - assert (dest->data_target != 0); - - /* Send data to target. */ - WRITE (pipe_host2tgt, &cmd, sizeof (cmd_t)); - WRITE (pipe_host2tgt, &dest->data_target, sizeof (void *)); - WRITE (pipe_host2tgt, &buffer->data_target, sizeof (void *)); - WRITE (pipe_host2tgt, &buffer->size, sizeof (uint64_t)); - - /* Receive data from target. */ - READ (pipe_tgt2host, &cmd, sizeof (cmd_t)); - } - else - { - if (COIBufferCopy (in_DestBuffer, (COIBUFFER) buffer, in_DestOffset, - 0, in_Length, in_Type, 0, 0, 0) == COI_ERROR) - return COI_ERROR; - } - - /* Unmap on target and destroy intermediary buffer. */ - if (COIBufferDestroy ((COIBUFFER) buffer) == COI_ERROR) - return COI_ERROR; - } - - /* Unmap buffers if needed. */ - if (dest->type == BUFFER_NORMAL) - if (COIBufferUnmap ((COIMAPINSTANCE) dest, 0, 0, 0) == COI_ERROR) - return COI_ERROR; - if (source->type == BUFFER_NORMAL) - if (COIBufferUnmap ((COIMAPINSTANCE) source, 0, 0, 0) == COI_ERROR) - return COI_ERROR; - - finish_critical_section (); - - if (out_pCompletion) - out_pCompletion->opaque[0] = 0; - - return COI_SUCCESS; -} - - -COIRESULT -SYMBOL_VERSION (COIBufferCreate, 1) (uint64_t in_Size, - COI_BUFFER_TYPE in_Type, - uint32_t in_Flags, - const void *in_pInitData, - uint32_t in_NumProcesses, - const COIPROCESS *in_pProcesses, - COIBUFFER *out_pBuffer) -{ - COITRACE ("COIBufferCreate"); - - char *shm_name; - int shm_fd; - const int ullong_max_len = 20; - - /* Features of liboffloadmic. */ - assert (in_Type == COI_BUFFER_NORMAL || in_Type == COI_BUFFER_OPENCL); - assert ((in_Flags & COI_SINK_MEMORY) == 0); - assert ((in_Flags & COI_SAME_ADDRESS_SINKS) == 0); - assert ((in_Flags & COI_SAME_ADDRESS_SINKS_AND_SOURCE) == 0); - assert (in_pInitData == NULL); - assert (in_NumProcesses == 1); - assert (in_pProcesses != NULL); - assert (out_pBuffer != NULL); - - /* Create shared memory with an unique name. */ - MALLOC (char *, shm_name, strlen (SHM_NAME) + ullong_max_len + 1); - for (unsigned long long i = 0; i >= 0; i++) - { - sprintf (shm_name, SHM_NAME "%lu", i); - shm_fd = shm_open (shm_name, O_CLOEXEC | O_CREAT | O_EXCL | O_RDWR, - S_IRUSR | S_IWUSR); - if (shm_fd > 0) - break; - } - if (ftruncate (shm_fd, in_Size) < 0) - COIERROR ("Cannot truncate shared memory file."); - - /* Create buffer. */ - Buffer *buf = new Buffer; - buf->data = 0; - buf->fd = shm_fd; - buf->process = (Process *) in_pProcesses[0]; - buf->size = in_Size; - buf->type = BUFFER_NORMAL; - STRDUP (buf->name, shm_name); - - /* Map buffer on target. */ - size_t len = strlen (buf->name) + 1; - - start_critical_section (); - - /* Send data to target. */ - const cmd_t cmd = CMD_BUFFER_MAP; - int pipe_host2tgt = buf->process->pipe_host2tgt; - WRITE (pipe_host2tgt, &cmd, sizeof (cmd_t)); - WRITE (pipe_host2tgt, &len, sizeof (size_t)); - WRITE (pipe_host2tgt, buf->name, len); - WRITE (pipe_host2tgt, &buf->size, sizeof (uint64_t)); - - /* Receive data from target. */ - int pipe_tgt2host = buf->process->pipe_tgt2host; - READ (pipe_tgt2host, &buf->fd_target, sizeof (int)); - READ (pipe_tgt2host, &buf->data_target, sizeof (void *)); - - finish_critical_section (); - - /* Prepare output arguments. */ - *out_pBuffer = (COIBUFFER) buf; - - /* Clean up. */ - free (shm_name); - - return COI_SUCCESS; -} - - -COIRESULT -SYMBOL_VERSION (COIBufferCreateFromMemory, 1) (uint64_t in_Size, - COI_BUFFER_TYPE in_Type, - uint32_t in_Flags, - void *in_Memory, - uint32_t in_NumProcesses, - const COIPROCESS *in_pProcesses, - COIBUFFER *out_pBuffer) -{ - COITRACE ("COIBufferCreateFromMemory"); - - /* Features of liboffloadmic. */ - assert (in_Type == COI_BUFFER_NORMAL); - assert ((in_Flags & COI_SAME_ADDRESS_SINKS) == 0); - assert ((in_Flags & COI_SAME_ADDRESS_SINKS_AND_SOURCE) == 0); - assert (in_NumProcesses == 1); - assert (in_pProcesses != NULL); - assert (out_pBuffer != NULL); - - /* Create buffer. */ - Buffer *buf = new Buffer; - buf->data = (in_Flags & COI_SINK_MEMORY) == 0 ? in_Memory : 0; - buf->data_target = (in_Flags & COI_SINK_MEMORY) != 0 ? in_Memory : 0; - buf->process = (Process *) in_pProcesses[0]; - buf->size = in_Size; - buf->type = BUFFER_MEMORY; - - /* Prepare output argument. */ - *out_pBuffer = (COIBUFFER) buf; - - return COI_SUCCESS; -} - - -COIRESULT -SYMBOL_VERSION (COIBufferDestroy, 1) (COIBUFFER in_Buffer) -{ - COITRACE ("COIBufferDestroy"); - - cmd_t cmd = CMD_BUFFER_UNMAP; - - assert (in_Buffer != NULL); - - /* Convert input arguments. */ - Buffer *buf = (Buffer *) in_Buffer; - - /* Unmap buffer on host. */ - if (buf->data != 0 && buf->type == BUFFER_NORMAL) - if (COIBufferUnmap ((COIMAPINSTANCE) in_Buffer, 0, 0, 0) == COI_ERROR) - return COI_ERROR; - - /* Unmap buffer on target. */ - if (buf->data_target != 0) - { - start_critical_section (); - - /* Send data to target. */ - int pipe_host2tgt = buf->process->pipe_host2tgt; - WRITE (pipe_host2tgt, &cmd, sizeof (cmd_t)); - WRITE (pipe_host2tgt, &buf->fd_target, sizeof (int)); - WRITE (pipe_host2tgt, &buf->data_target, sizeof (void *)); - WRITE (pipe_host2tgt, &buf->size, sizeof (uint64_t)); - - /* Receive data from target. */ - READ (buf->process->pipe_tgt2host, &cmd, sizeof (cmd_t)); - - finish_critical_section (); - } - - /* Unlink shared memory. */ - if (buf->type == BUFFER_NORMAL) - { - if (close (buf->fd) < 0) - COIERROR ("Cannot close shared memory file."); - if (shm_unlink (buf->name) < 0) - COIERROR ("Cannot unlink shared memory."); - free (buf->name); - } - - /* Clean up. */ - delete buf; - - return COI_SUCCESS; -} - - -COIRESULT -SYMBOL_VERSION (COIBufferGetSinkAddress, 1) (COIBUFFER in_Buffer, - uint64_t *out_pAddress) -{ - COITRACE ("COIBufferGetSinkAddress"); - - assert (in_Buffer != NULL); - assert (out_pAddress != NULL); - - /* Convert input arguments. */ - Buffer *buf = (Buffer *) in_Buffer; - - /* Here should come BUFFER_NORMAL buffer. */ - assert (buf->type == BUFFER_NORMAL); - - /* Prepare output argument. */ - *out_pAddress = (uint64_t) buf->data_target; - - return COI_SUCCESS; -} - - -COIRESULT -SYMBOL_VERSION (COIBufferMap, 1) (COIBUFFER in_Buffer, - uint64_t in_Offset, - uint64_t in_Length, // Ignored - COI_MAP_TYPE in_Type, // Ignored - uint32_t in_NumDependencies, - const COIEVENT *in_pDependencies, // Ignored - COIEVENT *out_pCompletion, - COIMAPINSTANCE *out_pMapInstance, - void **out_ppData) -{ - COITRACE ("COIBufferMap"); - - /* Features of liboffloadmic. */ - assert (in_Offset == 0); - assert (in_NumDependencies == 0); - - /* Convert input arguments. */ - Buffer *buf = (Buffer *) in_Buffer; - - /* Only BUFFER_NORMAL buffers should come here. */ - assert (buf->type == BUFFER_NORMAL); - - /* Map shared memory. */ - buf->data = mmap (NULL, buf->size, PROT_READ | PROT_WRITE, - MAP_SHARED, buf->fd, 0); - if (buf->data == NULL) - COIERROR ("Cannot map shared memory."); - - /* Prepare output arguments. */ - if (out_pMapInstance != 0) - *out_pMapInstance = (COIMAPINSTANCE) buf; - if (out_ppData != 0) - *out_ppData = buf->data; - - if (out_pCompletion) - out_pCompletion->opaque[0] = 0; - - return COI_SUCCESS; -} - - -COIRESULT -SYMBOL_VERSION (COIBufferRead, 1) (COIBUFFER in_SourceBuffer, - uint64_t in_Offset, - void *in_pDestData, - uint64_t in_Length, - COI_COPY_TYPE in_Type, - uint32_t in_NumDependencies, - const COIEVENT *in_pDependencies, // Ignored - COIEVENT *out_pCompletion) -{ - COITRACE ("COIBufferRead"); - - /* Features of liboffloadmic. */ - assert (in_pDestData != NULL); - assert (in_Type == COI_COPY_UNSPECIFIED); - assert (in_NumDependencies == 0); - - /* Convert input arguments. */ - Buffer *buf = (Buffer *) in_SourceBuffer; - - start_critical_section (); - - /* Map buffers if needed. */ - if (buf->data == 0 && buf->type == BUFFER_NORMAL) - if (COIBufferMap (in_SourceBuffer, 0, buf->size, (COI_MAP_TYPE) 0, 0, 0, 0, - 0, 0) == COI_ERROR) - return COI_ERROR; - - /* Copy data. */ - memcpy (in_pDestData, (void *) ((uintptr_t) buf->data + in_Offset), - in_Length); - - /* Unmap buffers if needed. */ - if (buf->type == BUFFER_NORMAL) - if (COIBufferUnmap ((COIMAPINSTANCE) buf, 0, 0, 0) == COI_ERROR) - return COI_ERROR; - - finish_critical_section (); - - if (out_pCompletion) - out_pCompletion->opaque[0] = 0; - - return COI_SUCCESS; -} - - -COIRESULT -SYMBOL_VERSION (COIBufferSetState, 1) (COIBUFFER in_Buffer, // Ignored - COIPROCESS in_Process, // Ignored - COI_BUFFER_STATE in_State, // Ignored - COI_BUFFER_MOVE_FLAG in_DataMove, - uint32_t in_NumDependencies, - const COIEVENT *in_pDependencies, // Ignored - COIEVENT *out_pCompletion) -{ - COITRACE ("COIBufferSetState"); - - /* Features of liboffloadmic. */ - assert (in_DataMove == COI_BUFFER_NO_MOVE); - assert (in_NumDependencies == 0); - - /* Looks like we have nothing to do here. */ - - if (out_pCompletion) - out_pCompletion->opaque[0] = 0; - - return COI_SUCCESS; -} - - -COIRESULT -SYMBOL_VERSION (COIBufferUnmap, 1) (COIMAPINSTANCE in_MapInstance, - uint32_t in_NumDependencies, - const COIEVENT *in_pDependencies, // Ignored - COIEVENT *out_pCompletion) -{ - COITRACE ("COIBufferUnmap"); - - /* Features of liboffloadmic. */ - assert (in_MapInstance != NULL); - assert (in_NumDependencies == 0); - - /* Convert input arguments. */ - Buffer *buffer = (Buffer *) in_MapInstance; - - /* Only BUFFER_NORMAL buffers should come here. */ - assert (buffer->type == BUFFER_NORMAL); - - /* Unmap shared memory. */ - if (munmap (buffer->data, buffer->size) < 0) - COIERROR ("Cannot unmap shared memory."); - - buffer->data = 0; - - if (out_pCompletion) - out_pCompletion->opaque[0] = 0; - - return COI_SUCCESS; -} - - -COIRESULT -SYMBOL_VERSION (COIBufferWrite, 1) (COIBUFFER in_DestBuffer, - uint64_t in_Offset, - const void *in_pSourceData, - uint64_t in_Length, - COI_COPY_TYPE in_Type, - uint32_t in_NumDependencies, - const COIEVENT *in_pDependencies, // Ignored - COIEVENT *out_pCompletion) -{ - COITRACE ("COIBufferWrite"); - - /* Features of liboffloadmic. */ - assert (in_DestBuffer != NULL); - assert (in_pSourceData != NULL); - assert (in_Type == COI_COPY_UNSPECIFIED); - assert (in_NumDependencies == 0); - - /* Convert input arguments. */ - Buffer *buf = (Buffer *) in_DestBuffer; - - start_critical_section (); - - /* Map buffers if needed. */ - if (buf->data == 0 && buf->type == BUFFER_NORMAL) - if (COIBufferMap (in_DestBuffer, 0, buf->size, (COI_MAP_TYPE) 0, 0, 0, 0, 0, - 0) == COI_ERROR) - return COI_ERROR; - - /* Copy data. */ - memcpy ((void *) ((uintptr_t) buf->data + in_Offset), in_pSourceData, - in_Length); - - /* Unmap buffers if needed. */ - if (buf->type == BUFFER_NORMAL) - if (COIBufferUnmap ((COIMAPINSTANCE) buf, 0, 0, 0) == COI_ERROR) - return COI_ERROR; - - finish_critical_section (); - - if (out_pCompletion) - out_pCompletion->opaque[0] = 0; - - return COI_SUCCESS; -} - - -COIRESULT -SYMBOL_VERSION (COIEngineGetCount, 1) (COI_ISA_TYPE isa, - uint32_t *count) -{ - COITRACE ("COIEngineGetCount"); - - /* Features of liboffloadmic. */ - assert (isa == COI_ISA_MIC); - assert (count != NULL); - - /* Prepare output arguments. */ - *count = num_engines; - - return COI_SUCCESS; -} - - -COIRESULT -SYMBOL_VERSION (COIEngineGetHandle, 1) (COI_ISA_TYPE in_ISA, - uint32_t in_EngineIndex, - COIENGINE *out_pEngineHandle) -{ - COITRACE ("COIEngineGetHandle"); - - /* Features of liboffloadmic. */ - assert (in_ISA == COI_ISA_MIC); - assert (out_pEngineHandle != NULL); - - /* Check engine index. */ - if (in_EngineIndex >= num_engines) - COIERROR ("Wrong engine index."); - - /* Create engine handle. */ - Engine *engine = new Engine; - engine->dir = NULL; - engine->index = in_EngineIndex; - engine->type = in_ISA; - - /* Prepare output argument. */ - *out_pEngineHandle = (COIENGINE) engine; - - return COI_SUCCESS; -} - - -COIRESULT -SYMBOL_VERSION (COIEventWait, 1) (uint16_t in_NumEvents, - const COIEVENT *in_pEvents, - int32_t in_TimeoutMilliseconds, - uint8_t in_WaitForAll, - uint32_t *out_pNumSignaled, - uint32_t *out_pSignaledIndices) -{ - COITRACE ("COIEventWait"); - - /* Features of liboffloadmic. */ - assert (in_pEvents != NULL); - assert (in_TimeoutMilliseconds == 0 || in_TimeoutMilliseconds == -1); - assert (in_WaitForAll == 1); - assert (out_pNumSignaled == NULL); - assert (out_pSignaledIndices == NULL); - - if (in_TimeoutMilliseconds == 0) - { - /* If some event is not signalled, return timeout error. */ - for (uint16_t i = 0; i < in_NumEvents; i++) - if (non_signalled_events.count (in_pEvents[i].opaque[0]) > 0) - return COI_TIME_OUT_REACHED; - else - { - /* If the event signalled with an error, return that error. */ - start_critical_section (); - COIRESULT res = get_event_result (in_pEvents[i]); - finish_critical_section (); - if (res != COI_SUCCESS) - return res; - } - } - else - { - /* Wait indefinitely for all events. */ - for (uint16_t i = 0; i < in_NumEvents; i++) - { - while (non_signalled_events.count (in_pEvents[i].opaque[0]) > 0) - usleep (1000); - - /* If the event signalled with an error, return that error. */ - start_critical_section (); - COIRESULT res = get_event_result (in_pEvents[i]); - finish_critical_section (); - if (res != COI_SUCCESS) - return res; - } - } - - return COI_SUCCESS; -} - - -COIRESULT -SYMBOL_VERSION (COIEventRegisterCallback, 1) (const COIEVENT in_Event, - COI_EVENT_CALLBACK in_Callback, - const void *in_UserData, - const uint64_t in_Flags) -{ - COITRACE ("COIEventRegisterCallback"); - - /* Features of liboffloadmic. */ - assert (in_Callback != NULL); - assert (in_UserData != NULL); - assert (in_Flags == 0); - - start_critical_section (); - if (non_signalled_events.count (in_Event.opaque[0]) == 0) - { - /* If the event is already signalled, invoke the callback immediately. */ - COIRESULT res = get_event_result (in_Event); - in_Callback (in_Event, res, in_UserData); - } - else - { - Callback callback; - callback.ptr = in_Callback; - callback.data = in_UserData; - callbacks.insert (std::pair <uint64_t, Callback> (in_Event.opaque[0], - callback)); - } - finish_critical_section (); - - return COI_SUCCESS; -} - - -/* The start routine for the COI pipeline thread. */ - -static void * -pipeline_thread_routine (void *in_Pipeline) -{ - /* Convert input arguments. */ - Pipeline *pipeline = (Pipeline *) in_Pipeline; - - /* Open pipes. */ - pipeline->pipe_host2tgt - = open (pipeline->pipe_host2tgt_path, O_CLOEXEC | O_WRONLY); - if (pipeline->pipe_host2tgt < 0) - COIERRORN ("Cannot open host-to-target pipe."); - pipeline->pipe_tgt2host - = open (pipeline->pipe_tgt2host_path, O_CLOEXEC | O_RDONLY); - if (pipeline->pipe_tgt2host < 0) - COIERRORN ("Cannot open target-to-host pipe."); - - free (pipeline->pipe_host2tgt_path); - free (pipeline->pipe_tgt2host_path); - pipeline->pipe_host2tgt_path = NULL; - pipeline->pipe_tgt2host_path = NULL; - - while (!pipeline->destroy) - if (pipeline->queue.empty ()) - usleep (1000); - else - { - Function func = pipeline->queue.front (); - start_critical_section (); - pipeline->queue.pop (); - finish_critical_section (); - - /* Send data to target. */ - cmd_t cmd = CMD_PIPELINE_RUN_FUNCTION; - WRITEN (pipeline->pipe_host2tgt, &cmd, sizeof (cmd_t)); - WRITEN (pipeline->pipe_host2tgt, &func.ptr, sizeof (void *)); - WRITEN (pipeline->pipe_host2tgt, &func.num_buffers, sizeof (uint32_t)); - for (uint32_t i = 0; i < func.num_buffers; i++) - { - WRITEN (pipeline->pipe_host2tgt, &func.bufs_size[i], - sizeof (uint64_t)); - WRITEN (pipeline->pipe_host2tgt, &func.bufs_data_target[i], - sizeof (void *)); - } - WRITEN (pipeline->pipe_host2tgt, &func.misc_data_len, - sizeof (uint16_t)); - if (func.misc_data_len > 0) - WRITEN (pipeline->pipe_host2tgt, func.misc_data, func.misc_data_len); - WRITEN (pipeline->pipe_host2tgt, &func.return_value_len, - sizeof (uint16_t)); - - delete [] func.bufs_size; - delete [] func.bufs_data_target; - - /* Receive data from target. Wait for target function to complete, - whether it has any data to return or not. */ - bool has_return_value = func.return_value_len > 0; - int ret_len - = read (pipeline->pipe_tgt2host, - has_return_value ? func.return_value : &cmd, - has_return_value ? func.return_value_len : sizeof (cmd_t)); - if (ret_len == 0) - { - start_critical_section (); - signal_event (func.completion_event, COI_PROCESS_DIED); - pipeline->is_destroyed = true; - finish_critical_section (); - return NULL; - } - else if (ret_len != (has_return_value ? func.return_value_len - : sizeof (cmd_t))) - COIERRORN ("Cannot read from pipe."); - - start_critical_section (); - signal_event (func.completion_event, COI_SUCCESS); - finish_critical_section (); - } - - /* Send data to target. */ - const cmd_t cmd = CMD_PIPELINE_DESTROY; - WRITEN (pipeline->pipe_host2tgt, &cmd, sizeof (cmd_t)); - - /* Close pipes. */ - if (close (pipeline->pipe_host2tgt) < 0) - COIERRORN ("Cannot close host-to-target pipe."); - if (close (pipeline->pipe_tgt2host) < 0) - COIERRORN ("Cannot close target-to-host pipe."); - - start_critical_section (); - pipeline->is_destroyed = true; - finish_critical_section (); - return NULL; -} - - -COIRESULT -SYMBOL_VERSION (COIPipelineCreate, 1) (COIPROCESS in_Process, - COI_CPU_MASK in_Mask, - uint32_t in_StackSize, // Ignored - COIPIPELINE *out_pPipeline) -{ - COITRACE ("COIPipelineCreate"); - - /* Features of liboffloadmic. */ - assert (in_Process != NULL); - assert (in_Mask == 0); - assert (out_pPipeline != NULL); - - /* Convert input arguments. */ - Process *proc = (Process *) in_Process; - - start_critical_section (); - - /* Create pipeline handle. */ - Pipeline *pipeline = new Pipeline; - pipeline->destroy = false; - pipeline->is_destroyed = false; - pipeline->process = proc; - pipelines.insert (pipeline); - - /* Create pipes. */ - uint32_t pipeline_num = max_pipeline_num++; - char *eng_dir = pipeline->process->engine->dir; - MALLOC (char *, pipeline->pipe_host2tgt_path, - strlen (eng_dir) + sizeof (PIPE_HOST2TGT_NAME "0000000000")); - MALLOC (char *, pipeline->pipe_tgt2host_path, - strlen (eng_dir) + sizeof (PIPE_TGT2HOST_NAME "0000000000")); - sprintf (pipeline->pipe_host2tgt_path, "%s" PIPE_HOST2TGT_NAME "%010d", - eng_dir, pipeline_num); - sprintf (pipeline->pipe_tgt2host_path, "%s" PIPE_TGT2HOST_NAME "%010d", - eng_dir, pipeline_num); - if (mkfifo (pipeline->pipe_host2tgt_path, S_IRUSR | S_IWUSR) < 0) - COIERROR ("Cannot create pipe %s.", pipeline->pipe_host2tgt_path); - if (mkfifo (pipeline->pipe_tgt2host_path, S_IRUSR | S_IWUSR) < 0) - COIERROR ("Cannot create pipe %s.", pipeline->pipe_tgt2host_path); - - /* Send data to target. */ - const cmd_t cmd = CMD_PIPELINE_CREATE; - WRITE (proc->pipe_host2tgt, &cmd, sizeof (cmd_t)); - WRITE (proc->pipe_host2tgt, &pipeline_num, sizeof (pipeline_num)); - - /* Create a new thread for the pipeline. */ - if (pthread_create (&pipeline->thread, NULL, pipeline_thread_routine, - pipeline)) - COIERROR ("Cannot create new thread."); - - finish_critical_section (); - - /* Prepare output arguments. */ - *out_pPipeline = (COIPIPELINE) pipeline; - - return COI_SUCCESS; -} - - -COIRESULT -SYMBOL_VERSION (COIPipelineDestroy, 1) (COIPIPELINE in_Pipeline) -{ - COITRACE ("COIPipelineDestroy"); - - assert (in_Pipeline != NULL); - - /* Convert input arguments. */ - Pipeline *pipeline = (Pipeline *) in_Pipeline; - - start_critical_section (); - /* Remove pipeline from the set of undestroyed pipelines. */ - pipelines.erase (pipeline); - - /* Exit pipeline thread. */ - pipeline->destroy = true; - finish_critical_section (); - - while (!pipeline_is_destroyed (pipeline)) - usleep (1000); - - /* Join with a destroyed thread. */ - if (pthread_join (pipeline->thread, NULL)) - COIERROR ("Cannot join with a thread."); - - delete pipeline; - - return COI_SUCCESS; -} - - -COIRESULT -SYMBOL_VERSION (COIPipelineRunFunction, 1) (COIPIPELINE in_Pipeline, - COIFUNCTION in_Function, - uint32_t in_NumBuffers, - const COIBUFFER *in_Buffers, - const COI_ACCESS_FLAGS *in_pBufferAccessFlags, // Ignored - uint32_t in_NumDependencies, - const COIEVENT *in_pDependencies, // Ignored - const void *in_pMiscData, - uint16_t in_MiscDataLen, - void *out_pAsyncReturnValue, - uint16_t in_AsyncReturnValueLen, - COIEVENT *out_pCompletion) -{ - COITRACE ("COIPipelineRunFunction"); - - /* Features of liboffloadmic. */ - assert (in_Pipeline != NULL); - assert (in_Function != NULL); - assert (in_NumDependencies == 0); - - Function func; - func.ptr = (void *) in_Function; - func.num_buffers = in_NumBuffers; - func.bufs_size = new uint64_t [in_NumBuffers]; - func.bufs_data_target = new void * [in_NumBuffers]; - for (uint32_t i = 0; i < in_NumBuffers; i++) - { - Buffer **bufs = (Buffer **) in_Buffers; - func.bufs_size[i] = bufs[i]->size; - func.bufs_data_target[i] = bufs[i]->data_target; - } - func.misc_data = (void *) in_pMiscData; - func.misc_data_len = in_MiscDataLen; - func.return_value = out_pAsyncReturnValue; - func.return_value_len = in_AsyncReturnValueLen; - - start_critical_section (); - func.completion_event.opaque[0] = max_event_num++; - non_signalled_events.insert (func.completion_event.opaque[0]); - ((Pipeline *) in_Pipeline)->queue.push (func); - finish_critical_section (); - - /* In case of synchronous execution we have to wait for target. */ - if (out_pCompletion == NULL) - COIEventWait (1, &func.completion_event, -1, 1, NULL, NULL); - else - *out_pCompletion = func.completion_event; - - return COI_SUCCESS; -} - - -COIRESULT -SYMBOL_VERSION (COIProcessCreateFromMemory, 1) (COIENGINE in_Engine, - const char *in_pBinaryName, - const void *in_pBinaryBuffer, - uint64_t in_BinaryBufferLength, - int in_Argc, - const char **in_ppArgv, - uint8_t in_DupEnv, - const char **in_ppAdditionalEnv, - uint8_t in_ProxyActive, // Ignored - const char *in_Reserved, // Ignored - uint64_t in_InitialBufferSpace, // Ignored - const char *in_LibrarySearchPath, - const char *in_FileOfOrigin, // Ignored - uint64_t in_FileOfOriginOffset, // Ignored - COIPROCESS *out_pProcess) -{ - COITRACE ("COIProcessCreateFromMemory"); - - const int run_max_args_num = 128; - char *run_argv[run_max_args_num]; - char *emul_run = getenv (OFFLOAD_EMUL_RUN_ENV); - const int uint_max_len = 11; - - /* Features of liboffloadmic. */ - assert (in_Engine != NULL); - assert (in_pBinaryName != NULL); - assert (in_pBinaryBuffer != NULL); - assert (in_Argc == 0); - assert (in_ppArgv == NULL); - assert (in_ppAdditionalEnv == NULL); - assert (in_LibrarySearchPath != NULL); - assert (out_pProcess != NULL); - - /* Convert input arguments. */ - Engine *eng = (Engine *) in_Engine; - - /* Create temporary directory for engine files. */ - assert (eng->dir == NULL); - STRDUP (eng->dir, ENGINE_PATH); - if (mkdtemp (eng->dir) == NULL) - COIERROR ("Cannot create temporary directory %s.", eng->dir); - - /* Save path to engine directory for clean up on exit. */ - tmp_dirs_num++; - tmp_dirs = (char **) realloc (tmp_dirs, tmp_dirs_num * sizeof (char *)); - if (!tmp_dirs) - COIERROR ("Cannot allocate memory."); - STRDUP (tmp_dirs[tmp_dirs_num - 1], eng->dir); - - /* Create target executable file. */ - char *target_exe; - MALLOC (char *, target_exe, strlen (eng->dir) + strlen (in_pBinaryName) + 2); - sprintf (target_exe, "%s/%s", eng->dir, in_pBinaryName); - int fd = open (target_exe, O_CLOEXEC | O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR); - if (fd < 0) - COIERROR ("Cannot create file %s.", target_exe); - FILE *file = fdopen (fd, "wb"); - if (file == NULL) - COIERROR ("Cannot associate stream with file descriptor."); - if (fwrite (in_pBinaryBuffer, 1, in_BinaryBufferLength, file) - != in_BinaryBufferLength) - COIERROR ("Cannot write in file %s.", target_exe); - if (fclose (file) != 0) - COIERROR ("Cannot close file %s.", target_exe); - - /* Fix file permissions. */ - if (chmod (target_exe, S_IRWXU) < 0) - COIERROR ("Cannot change permissions for file %s.", target_exe); - - /* Create directory for pipes to prevent names collision. */ - char *pipes_path; - MALLOC (char *, pipes_path, strlen (eng->dir) + sizeof (PIPES_PATH)); - sprintf (pipes_path, "%s" PIPES_PATH, eng->dir); - if (mkdir (pipes_path, S_IRWXU) < 0) - COIERROR ("Cannot create folder %s.", pipes_path); - - /* Create 2 main pipes for inter-process communication. */ - char *pipe_host2tgt_path, *pipe_tgt2host_path; - MALLOC (char *, pipe_host2tgt_path, - strlen (eng->dir) + sizeof (PIPE_HOST2TGT_NAME "mainpipe")); - MALLOC (char *, pipe_tgt2host_path, - strlen (eng->dir) + sizeof (PIPE_TGT2HOST_NAME "mainpipe")); - sprintf (pipe_host2tgt_path, "%s" PIPE_HOST2TGT_NAME "mainpipe", eng->dir); - sprintf (pipe_tgt2host_path, "%s" PIPE_TGT2HOST_NAME "mainpipe", eng->dir); - if (mkfifo (pipe_host2tgt_path, S_IRUSR | S_IWUSR) < 0) - COIERROR ("Cannot create main pipe %s.", pipe_host2tgt_path); - if (mkfifo (pipe_tgt2host_path, S_IRUSR | S_IWUSR) < 0) - COIERROR ("Cannot create main pipe %s.", pipe_tgt2host_path); - - /* Prepare argv. */ - if (emul_run == NULL || strcmp (emul_run, "") == 0) - { - STRDUP (run_argv[0], target_exe); - run_argv[1] = (char *) NULL; - } - else - { - char *ptr, *tmp; - int i = 0; - STRDUP (tmp, emul_run); - char *tok = strtok_r (tmp, " ", &ptr); - while (tok != NULL) - { - if (i >= run_max_args_num) - COIERROR ("Run command has too many arguments."); - STRDUP (run_argv[i++], tok); - tok = strtok_r (NULL, " ", &ptr); - } - STRDUP (run_argv[i], target_exe); - run_argv[i + 1] = (char *) NULL; - free (tmp); - } - - /* Prepare envp. */ - int env_num = 0; - if (in_DupEnv == true) - while (environ[env_num++]); - env_num += 4; // LD_LIBRARY_PATH, MIC_DIR, MIC_INDEX, NULL - - char **envp; - MALLOC (char **, envp, env_num * sizeof (char *)); - - int env_i = 0; - if (in_DupEnv == true) - for (unsigned i = 0; environ[i] != NULL; i++) - { - unsigned j; - char *env_name; - STRDUP (env_name, environ[i]); - for (j = 0; env_name[j] != '=' && env_name[j] != '\0'; j++); - env_name[j] = '\0'; - if (strcmp (env_name, "LD_LIBRARY_PATH") != 0 - && strcmp (env_name, MIC_DIR_ENV) != 0 - && strcmp (env_name, MIC_INDEX_ENV) != 0) - STRDUP (envp[env_i++], environ[i]); - free (env_name); - } - - MALLOC (char *, envp[env_i], strlen (MIC_DIR_ENV) + strlen (eng->dir) + 2); - sprintf (envp[env_i], "%s=%s", MIC_DIR_ENV, eng->dir); - - MALLOC (char *, envp[env_i + 1], strlen (MIC_INDEX_ENV) + uint_max_len + 1); - sprintf (envp[env_i + 1], "%s=%u", MIC_INDEX_ENV, eng->index); - - MALLOC (char *, envp[env_i + 2], - strlen ("LD_LIBRARY_PATH=") + strlen (in_LibrarySearchPath) + 1); - sprintf (envp[env_i + 2], "LD_LIBRARY_PATH=%s", in_LibrarySearchPath); - - envp[env_i + 3] = (char *) NULL; - - /* Create target process. */ - pid_t pid = vfork (); - if (pid < 0) - COIERROR ("Cannot create child process."); - - if (pid == 0) - { - /* Run target executable. */ - if (execvpe (run_argv[0], run_argv, envp) == -1) - COIERROR ("Cannot execute file %s.", target_exe); - } - - /* Open main pipes. */ - int pipe_host2tgt = open (pipe_host2tgt_path, O_CLOEXEC | O_WRONLY); - if (pipe_host2tgt < 0) - COIERROR ("Cannot open host-to-target main pipe."); - int pipe_tgt2host = open (pipe_tgt2host_path, O_CLOEXEC | O_RDONLY); - if (pipe_tgt2host < 0) - COIERROR ("Cannot open target-to-host main pipe."); - - /* Create process handle. */ - Process *proc = new Process; - proc->pid = pid; - proc->pipe_host2tgt = pipe_host2tgt; - proc->pipe_tgt2host = pipe_tgt2host; - proc->engine = eng; - proc->functions = NULL; - - /* Prepare output arguments. */ - *out_pProcess = (COIPROCESS) proc; - - /* Clean up. */ - for (unsigned i = 0; run_argv[i] != NULL; i++) - free (run_argv[i]); - for (unsigned i = 0; envp[i] != NULL; i++) - free (envp[i]); - free (envp); - free (pipe_host2tgt_path); - free (pipe_tgt2host_path); - free (pipes_path); - free (target_exe); - - return COI_SUCCESS; -} - - -COIRESULT -SYMBOL_VERSION (COIProcessCreateFromFile, 1) (COIENGINE in_Engine, - const char *in_pBinaryName, - int in_Argc, - const char **in_ppArgv, - uint8_t in_DupEnv, - const char **in_ppAdditionalEnv, - uint8_t in_ProxyActive, - const char *in_Reserved, - uint64_t in_BufferSpace, - const char *in_LibrarySearchPath, - COIPROCESS *out_pProcess) -{ - COITRACE ("COIProcessCreateFromFile"); - - /* liboffloadmic with GCC compiled binaries should never go here. */ - assert (false); - return COI_ERROR; -} - - -COIRESULT -SYMBOL_VERSION (COIProcessDestroy, 1) (COIPROCESS in_Process, - int32_t in_WaitForMainTimeout, // Ignored - uint8_t in_ForceDestroy, - int8_t *out_pProcessReturn, - uint32_t *out_pTerminationCode) -{ - COITRACE ("COIProcessDestroy"); - - assert (in_Process != NULL); - assert (out_pProcessReturn != NULL); - assert (out_pTerminationCode != NULL); - - /* Convert input arguments. */ - Process *proc = (Process *) in_Process; - - /* Destroy all undestroyed pipelines. */ - while (!pipelines.empty ()) - { - std::set<Pipeline *>::iterator p = pipelines.begin (); - COIPipelineDestroy ((COIPIPELINE) *p); - } - - /* Close main pipes. */ - if (close (proc->pipe_host2tgt) < 0) - COIERROR ("Cannot close host-to-target main pipe."); - if (close (proc->pipe_tgt2host) < 0) - COIERROR ("Cannot close target-to-host main pipe."); - - /* Shutdown target process by force. */ - if (in_ForceDestroy) - kill (proc->pid, SIGTERM); - - /* Clean up. */ - free (proc->engine->dir); - free (proc->functions); - delete proc->engine; - delete proc; - - /* Prepare output arguments. */ - *out_pProcessReturn = 0; - *out_pTerminationCode = 0; - - return COI_SUCCESS; -} - - -COIRESULT -SYMBOL_VERSION (COIProcessGetFunctionHandles, 1) (COIPROCESS in_Process, - uint32_t in_NumFunctions, - const char **in_ppFunctionNameArray, - COIFUNCTION *out_pFunctionHandleArray) -{ - COITRACE ("COIProcessGetFunctionHandles"); - - assert (in_Process != NULL); - assert (in_ppFunctionNameArray != NULL); - assert (out_pFunctionHandleArray != NULL); - - /* Convert input arguments. */ - Process *proc = (Process *) in_Process; - - /* This function should be called once for the process. */ - assert (proc->functions == NULL); - - /* Create array of function pointers. Last element is 0, what shows the end - of the array. This array is used to free memory when process is - destroyed. */ - proc->functions = (void **) calloc (in_NumFunctions + 1, sizeof (void *)); - if (proc->functions == NULL) - COIERROR ("Cannot allocate memory."); - - /* Get handles for functions. */ - for (uint32_t i = 0; i < in_NumFunctions; i++) - { - size_t len = strlen (in_ppFunctionNameArray[i]) + 1; - - start_critical_section (); - - /* Send data to target. */ - const cmd_t cmd = CMD_GET_FUNCTION_HANDLE; - WRITE (proc->pipe_host2tgt, &cmd, sizeof (cmd_t)); - WRITE (proc->pipe_host2tgt, &len, sizeof (size_t)); - WRITE (proc->pipe_host2tgt, in_ppFunctionNameArray[i], len); - - /* Receive data from target. */ - void *fn_ptr; - READ (proc->pipe_tgt2host, &fn_ptr, sizeof (void *)); - - finish_critical_section (); - - /* Save function pointer. */ - proc->functions[i] = fn_ptr; - - /* Prepare output arguments. */ - out_pFunctionHandleArray[i] = (COIFUNCTION) fn_ptr; - } - - return COI_SUCCESS; -} - - -COIRESULT -SYMBOL_VERSION (COIProcessLoadLibraryFromMemory, 2) (COIPROCESS in_Process, - const void *in_pLibraryBuffer, - uint64_t in_LibraryBufferLength, - const char *in_pLibraryName, - const char *in_LibrarySearchPath, // Ignored - const char *in_FileOfOrigin, // Ignored - uint64_t in_FileOfOriginOffset, // Ignored - uint32_t in_Flags, // Ignored - COILIBRARY *out_pLibrary) -{ - COITRACE ("COIProcessLoadLibraryFromMemory"); - - assert (in_Process != NULL); - assert (in_pLibraryBuffer != NULL); - assert (out_pLibrary != NULL); - - /* Convert input arguments. */ - Process *proc = (Process *) in_Process; - - /* Create target library file. */ - char *lib_path; - size_t len = strlen (proc->engine->dir) + strlen (in_pLibraryName) + 2; - MALLOC (char *, lib_path, len); - sprintf (lib_path, "%s/%s", proc->engine->dir, in_pLibraryName); - int fd = open (lib_path, O_CLOEXEC | O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR); - if (fd < 0) - COIERROR ("Cannot create file %s.", lib_path); - FILE *file = fdopen (fd, "wb"); - if (file == NULL) - COIERROR ("Cannot associate stream with file descriptor."); - if (fwrite (in_pLibraryBuffer, 1, in_LibraryBufferLength, file) - != in_LibraryBufferLength) - COIERROR ("Cannot write in file %s.", lib_path); - if (fclose (file) != 0) - COIERROR ("Cannot close file %s.", lib_path); - - start_critical_section (); - - /* Make target open library. */ - const cmd_t cmd = CMD_OPEN_LIBRARY; - WRITE (proc->pipe_host2tgt, &cmd, sizeof (cmd_t)); - WRITE (proc->pipe_host2tgt, &len, sizeof (size_t)); - WRITE (proc->pipe_host2tgt, lib_path, len); - - /* Receive data from target. */ - void *handle; - READ (proc->pipe_tgt2host, &handle, sizeof (void *)); - - finish_critical_section (); - - /* Clean up. */ - free (lib_path); - - *out_pLibrary = (COILIBRARY) handle; - return COI_SUCCESS; -} - - -COIRESULT -SYMBOL_VERSION (COIProcessRegisterLibraries, 1) (uint32_t in_NumLibraries, // Ignored - const void **in_ppLibraryArray, // Ignored - const uint64_t *in_pLibrarySizeArray, // Ignored - const char **in_ppFileOfOriginArray, // Ignored - const uint64_t *in_pFileOfOriginOffSetArray) // Ignored -{ - COITRACE ("COIProcessRegisterLibraries"); - - /* Looks like we have nothing to do here. */ - - return COI_SUCCESS; -} - - -COIRESULT -SYMBOL_VERSION (COIProcessUnloadLibrary, 1) (COIPROCESS in_Process, - COILIBRARY in_Library) -{ - COITRACE ("COIProcessUnloadLibrary"); - - assert (in_Process != NULL); - assert (in_Library != NULL); - - const cmd_t cmd = CMD_CLOSE_LIBRARY; - - /* Convert input arguments. */ - Process *proc = (Process *) in_Process; - - start_critical_section (); - - /* Make target close library. */ - WRITE (proc->pipe_host2tgt, &cmd, sizeof (cmd_t)); - WRITE (proc->pipe_host2tgt, &in_Library, sizeof (void *)); - - finish_critical_section (); - - return COI_SUCCESS; -} - - -uint64_t -SYMBOL_VERSION (COIPerfGetCycleFrequency, 1) () -{ - COITRACE ("COIPerfGetCycleFrequency"); - - return (uint64_t) CYCLE_FREQUENCY; -} - - -COIRESULT -SYMBOL_VERSION (COIPipelineClearCPUMask, 1) (COI_CPU_MASK *in_Mask) -{ - COITRACE ("COIPipelineClearCPUMask"); - - /* Looks like we have nothing to do here. */ - - return COI_SUCCESS; -} - - -COIRESULT -SYMBOL_VERSION (COIPipelineSetCPUMask, 1) (COIPROCESS in_Process, - uint32_t in_CoreID, - uint8_t in_ThreadID, - COI_CPU_MASK *out_pMask) -{ - COITRACE ("COIPipelineSetCPUMask"); - - /* Looks like we have nothing to do here. */ - - return COI_SUCCESS; -} - - -COIRESULT -SYMBOL_VERSION (COIEngineGetInfo, 1) (COIENGINE in_EngineHandle, // Ignored - uint32_t in_EngineInfoSize, // Ignored - COI_ENGINE_INFO *out_pEngineInfo) -{ - COITRACE ("COIEngineGetInfo"); - - assert (out_pEngineInfo != NULL); - - out_pEngineInfo->ISA = COI_DEVICE_KNL; - out_pEngineInfo->NumCores = 1; - out_pEngineInfo->NumThreads = 8; - out_pEngineInfo->CoreMaxFrequency = SYMBOL_VERSION(COIPerfGetCycleFrequency,1)() / 1000000; - out_pEngineInfo->PhysicalMemory = 1024; - out_pEngineInfo->PhysicalMemoryFree = 1024; - out_pEngineInfo->SwapMemory = 1024; - out_pEngineInfo->SwapMemoryFree = 1024; - out_pEngineInfo->MiscFlags = COI_ENG_ECC_DISABLED; - - return COI_SUCCESS; -} - -} // extern "C" - diff --git a/liboffloadmic/runtime/emulator/coi_host.h b/liboffloadmic/runtime/emulator/coi_host.h deleted file mode 100644 index 82dbc92..0000000 --- a/liboffloadmic/runtime/emulator/coi_host.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#ifndef COI_HOST_H_INCLUDED -#define COI_HOST_H_INCLUDED - -#include "coi_common.h" - -#define COIERROR(...) \ -{ \ - fprintf (stderr, "COI ERROR - HOST: "); \ - fprintf (stderr, __VA_ARGS__); \ - fprintf (stderr, "\n"); \ - perror (NULL); \ - return COI_ERROR; \ -} - -/* Like COIERROR, but return NULL instead of COIRESULT. */ -#define COIERRORN(...) \ -{ \ - fprintf (stderr, "COI ERROR - HOST: "); \ - fprintf (stderr, __VA_ARGS__); \ - fprintf (stderr, "\n"); \ - perror (NULL); \ - return NULL; \ -} - -#ifdef DEBUG - #define COITRACE(...) \ - { \ - fprintf (stderr, "COI TRACE - HOST: "); \ - fprintf (stderr, __VA_ARGS__); \ - fprintf (stderr, "\n"); \ - } -#else - #define COITRACE(...) {} -#endif - -#endif // COI_HOST_H_INCLUDED diff --git a/liboffloadmic/runtime/emulator/coi_version_asm.h b/liboffloadmic/runtime/emulator/coi_version_asm.h deleted file mode 100644 index e64ba7d..0000000 --- a/liboffloadmic/runtime/emulator/coi_version_asm.h +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2010-2016 Intel Corporation. - * - * This library is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, version 2.1. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301 USA. - * - * Disclaimer: The codes contained in these modules may be specific - * to the Intel Software Development Platform codenamed Knights Ferry, - * and the Intel product codenamed Knights Corner, and are not backward - * compatible with other Intel products. Additionally, Intel will NOT - * support the codes or instruction set in future products. - * - * Intel offers no warranty of any kind regarding the code. This code is - * licensed on an "AS IS" basis and Intel is not obligated to provide - * any support, assistance, installation, training, or other services - * of any kind. Intel is also not obligated to provide any updates, - * enhancements or extensions. Intel specifically disclaims any warranty - * of merchantability, non-infringement, fitness for any particular - * purpose, and any other warranty. - * - * Further, Intel disclaims all liability of any kind, including but - * not limited to liability for infringement of any proprietary rights, - * relating to the use of the code, even if Intel is notified of the - * possibility of such liability. Except as expressly stated in an Intel - * license agreement provided with this code and agreed upon with Intel, - * no license, express or implied, by estoppel or otherwise, to any - * intellectual property rights is granted herein. - */ - -// Originally generated via: -// cd include; -// ctags -x --c-kinds=fp -R sink/ source/ common/ | grep -v COIX | awk '{print "__asm__(\".symver "$1"1,"$1"@@COI_1.0\");"}' -// -// These directives must have an associated linker script with VERSION stuff. -// See coi_version_linker_script.map -// Passed in as -// -Wl,--version-script coi_version_linker_script.map -// when building Intel(R) Coprocessor Offload Infrastructure (Intel(R) COI) -// -// See http://sourceware.org/binutils/docs/ld/VERSION.html#VERSION for more info -// -// This is not strictly a .h file, so no need to #pragma once or anything. -// You must include these asm directives in the same translation unit as the -// one where the function body is. -// Otherwise we'd have add this file to the list of files needed to build -// libcoi*, instead of including it in each of the api/*/*cpp files. -// -__asm__(".symver COIBufferAddRef1,COIBufferAddRef@@COI_1.0"); -__asm__(".symver COIBufferCopy1,COIBufferCopy@@COI_1.0"); -__asm__(".symver COIBufferCreate1,COIBufferCreate@@COI_1.0"); -__asm__(".symver COIBufferCreateFromMemory1,COIBufferCreateFromMemory@@COI_1.0"); -__asm__(".symver COIBufferDestroy1,COIBufferDestroy@@COI_1.0"); -__asm__(".symver COIBufferGetSinkAddress1,COIBufferGetSinkAddress@@COI_1.0"); -__asm__(".symver COIBufferMap1,COIBufferMap@@COI_1.0"); -__asm__(".symver COIBufferRead1,COIBufferRead@@COI_1.0"); -__asm__(".symver COIBufferReleaseRef1,COIBufferReleaseRef@@COI_1.0"); -__asm__(".symver COIBufferSetState1,COIBufferSetState@@COI_1.0"); -__asm__(".symver COIBufferUnmap1,COIBufferUnmap@@COI_1.0"); -__asm__(".symver COIBufferWrite1,COIBufferWrite@@COI_1.0"); -__asm__(".symver COIEngineGetCount1,COIEngineGetCount@@COI_1.0"); -__asm__(".symver COIEngineGetHandle1,COIEngineGetHandle@@COI_1.0"); -__asm__(".symver COIEngineGetIndex1,COIEngineGetIndex@@COI_1.0"); -__asm__(".symver COIEngineGetInfo1,COIEngineGetInfo@@COI_1.0"); -__asm__(".symver COIEventRegisterCallback1,COIEventRegisterCallback@@COI_1.0"); -__asm__(".symver COIEventWait1,COIEventWait@@COI_1.0"); -__asm__(".symver COIPerfGetCycleFrequency1,COIPerfGetCycleFrequency@@COI_1.0"); -__asm__(".symver COIPipelineClearCPUMask1,COIPipelineClearCPUMask@@COI_1.0"); -__asm__(".symver COIPipelineCreate1,COIPipelineCreate@@COI_1.0"); -__asm__(".symver COIPipelineDestroy1,COIPipelineDestroy@@COI_1.0"); -__asm__(".symver COIPipelineRunFunction1,COIPipelineRunFunction@@COI_1.0"); -__asm__(".symver COIPipelineSetCPUMask1,COIPipelineSetCPUMask@@COI_1.0"); -__asm__(".symver COIPipelineStartExecutingRunFunctions1,COIPipelineStartExecutingRunFunctions@@COI_1.0"); -__asm__(".symver COIProcessCreateFromFile1,COIProcessCreateFromFile@@COI_1.0"); -__asm__(".symver COIProcessCreateFromMemory1,COIProcessCreateFromMemory@@COI_1.0"); -__asm__(".symver COIProcessDestroy1,COIProcessDestroy@@COI_1.0"); -__asm__(".symver COIProcessGetFunctionHandles1,COIProcessGetFunctionHandles@@COI_1.0"); -__asm__(".symver COIProcessLoadLibraryFromMemory2,COIProcessLoadLibraryFromMemory@COI_2.0"); -__asm__(".symver COIProcessRegisterLibraries1,COIProcessRegisterLibraries@@COI_1.0"); -__asm__(".symver COIProcessUnloadLibrary1,COIProcessUnloadLibrary@@COI_1.0"); -__asm__(".symver COIProcessWaitForShutdown1,COIProcessWaitForShutdown@@COI_1.0"); diff --git a/liboffloadmic/runtime/emulator/coi_version_linker_script.map b/liboffloadmic/runtime/emulator/coi_version_linker_script.map deleted file mode 100644 index ea18066..0000000 --- a/liboffloadmic/runtime/emulator/coi_version_linker_script.map +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2010-2016 Intel Corporation. - * - * This library is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, version 2.1. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301 USA. - * - * Disclaimer: The codes contained in these modules may be specific - * to the Intel Software Development Platform codenamed Knights Ferry, - * and the Intel product codenamed Knights Corner, and are not backward - * compatible with other Intel products. Additionally, Intel will NOT - * support the codes or instruction set in future products. - * - * Intel offers no warranty of any kind regarding the code. This code is - * licensed on an "AS IS" basis and Intel is not obligated to provide - * any support, assistance, installation, training, or other services - * of any kind. Intel is also not obligated to provide any updates, - * enhancements or extensions. Intel specifically disclaims any warranty - * of merchantability, non-infringement, fitness for any particular - * purpose, and any other warranty. - * - * Further, Intel disclaims all liability of any kind, including but - * not limited to liability for infringement of any proprietary rights, - * relating to the use of the code, even if Intel is notified of the - * possibility of such liability. Except as expressly stated in an Intel - * license agreement provided with this code and agreed upon with Intel, - * no license, express or implied, by estoppel or otherwise, to any - * intellectual property rights is granted herein. - */ - -/*** -* See http://sourceware.org/binutils/docs/ld/VERSION.html#VERSION for more info. -* Use this in conjunction with coi_version_asm.h. -* // Comments don't work in this file. -***/ - -COI_1.0 -{ - global: - COIBufferAddRef; - COIBufferCopy; - COIBufferCreate; - COIBufferCreateFromMemory; - COIBufferDestroy; - COIBufferGetSinkAddress; - COIBufferMap; - COIBufferRead; - COIBufferReleaseRef; - COIBufferSetState; - COIBufferUnmap; - COIBufferWrite; - COIEngineGetCount; - COIEngineGetHandle; - COIEngineGetIndex; - COIEngineGetInfo; - COIEventWait; - COIEventRegisterCallback; - COIPerfGetCycleFrequency; - COIPipelineClearCPUMask; - COIPipelineCreate; - COIPipelineDestroy; - COIPipelineRunFunction; - COIPipelineSetCPUMask; - COIPipelineStartExecutingRunFunctions; - COIProcessCreateFromFile; - COIProcessCreateFromMemory; - COIProcessDestroy; - COIProcessGetFunctionHandles; - COIProcessLoadLibraryFromMemory; - COIProcessRegisterLibraries; - COIProcessUnloadLibrary; - COIProcessWaitForShutdown; - local: - *; -}; - -COI_2.0 -{ - -} COI_1.0; - diff --git a/liboffloadmic/runtime/liboffload_error.c b/liboffloadmic/runtime/liboffload_error.c deleted file mode 100644 index 5dffdb1..0000000 --- a/liboffloadmic/runtime/liboffload_error.c +++ /dev/null @@ -1,561 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#include <stdio.h> -#include <stdarg.h> -#ifndef va_copy -#define va_copy(dst, src) ((dst) = (src)) -#endif - -#include "liboffload_msg.h" - -#include "liboffload_error_codes.h" - -/***********************************************/ -/* error-handling function, liboffload_error_support */ -/***********************************************/ - -void __liboffload_error_support(error_types input_tag, ...) -{ - va_list args; - va_start(args, input_tag); - - switch (input_tag) { - case c_device_is_not_available: - write_message(stderr, msg_c_device_is_not_available, args); - break; - case c_invalid_device_number: - write_message(stderr, msg_c_invalid_device_number, args); - break; - case c_send_func_ptr: - write_message(stderr, msg_c_send_func_ptr, args); - break; - case c_receive_func_ptr: - write_message(stderr, msg_c_receive_func_ptr, args); - break; - case c_malloc: - write_message(stderr, msg_c_malloc, args); - break; - case c_unknown_mic_device_type: - write_message(stderr, msg_c_unknown_mic_device_type, args); - break; - case c_offload_malloc: - write_message(stderr, msg_c_offload_malloc, args); - break; - case c_offload1: - write_message(stderr, msg_c_offload1, args); - break; - case c_unknown_var_type: - write_message(stderr, msg_c_unknown_var_type, args); - break; - case c_invalid_env_var_value: - write_message(stderr, msg_c_invalid_env_var_value, args); - break; - case c_invalid_env_var_int_value: - write_message(stderr, msg_c_invalid_env_var_int_value, args); - break; - case c_invalid_env_report_value: - write_message(stderr, msg_c_invalid_env_report_value, args); - break; - case c_offload_signaled1: - write_message(stderr, msg_c_offload_signaled1, args); - break; - case c_offload_signaled2: - write_message(stderr, msg_c_offload_signaled2, args); - break; - case c_myowrapper_checkresult: - write_message(stderr, msg_c_myowrapper_checkresult, args); - break; - case c_myotarget_checkresult: - write_message(stderr, msg_c_myotarget_checkresult, args); - break; - case c_offload_descriptor_offload: - write_message(stderr, msg_c_offload_descriptor_offload, args); - break; - case c_merge_var_descs1: - write_message(stderr, msg_c_merge_var_descs1, args); - break; - case c_merge_var_descs2: - write_message(stderr, msg_c_merge_var_descs2, args); - break; - case c_mic_parse_env_var_list1: - write_message(stderr, msg_c_mic_parse_env_var_list1, args); - break; - case c_mic_parse_env_var_list2: - write_message(stderr, msg_c_mic_parse_env_var_list2, args); - break; - case c_mic_process_exit_ret: - write_message(stderr, msg_c_mic_process_exit_ret, args); - break; - case c_mic_process_exit_sig: - write_message(stderr, msg_c_mic_process_exit_sig, args); - break; - case c_mic_process_exit: - write_message(stderr, msg_c_mic_process_exit, args); - break; - case c_mic_init3: - write_message(stderr, msg_c_mic_init3, args); - break; - case c_mic_init4: - write_message(stderr, msg_c_mic_init4, args); - break; - case c_mic_init5: - write_message(stderr, msg_c_mic_init5, args); - break; - case c_mic_init6: - write_message(stderr, msg_c_mic_init6, args); - break; - case c_mic_init7: - write_message(stderr, msg_c_mic_init7, args); - break; - case c_mic_init8: - write_message(stderr, msg_c_mic_init8, args); - break; - case c_mic_init9: - write_message(stderr, msg_c_mic_init9, args); - break; - case c_mic_init10: - write_message(stderr, msg_c_mic_init10, args); - break; - case c_mic_init11: - write_message(stderr, msg_c_mic_init11, args); - break; - case c_no_static_var_data: - write_message(stderr, msg_c_no_static_var_data, args); - break; - case c_no_ptr_data: - write_message(stderr, msg_c_no_ptr_data, args); - break; - case c_get_engine_handle: - write_message(stderr, msg_c_get_engine_handle, args); - break; - case c_get_engine_index: - write_message(stderr, msg_c_get_engine_index, args); - break; - case c_process_create: - write_message(stderr, msg_c_process_create, args); - break; - case c_process_set_cache_size: - write_message(stderr, msg_c_process_set_cache_size, args); - break; - case c_process_wait_shutdown: - write_message(stderr, msg_c_process_wait_shutdown, args); - break; - case c_process_proxy_flush: - write_message(stderr, msg_c_process_proxy_flush, args); - break; - case c_process_get_func_handles: - write_message(stderr, msg_c_process_get_func_handles, args); - break; - case c_load_library: - write_message(stderr, msg_c_load_library, args); - break; - case c_coipipe_max_number: - write_message(stderr, msg_c_coi_pipeline_max_number, args); - break; - case c_pipeline_create: - write_message(stderr, msg_c_pipeline_create, args); - break; - case c_pipeline_run_func: - write_message(stderr, msg_c_pipeline_run_func, args); - break; - case c_pipeline_start_run_funcs: - write_message(stderr, msg_c_pipeline_start_run_funcs, args); - break; - case c_buf_create: - write_message(stderr, msg_c_buf_create, args); - break; - case c_buf_create_out_of_mem: - write_message(stderr, msg_c_buf_create_out_of_mem, args); - break; - case c_buf_create_from_mem: - write_message(stderr, msg_c_buf_create_from_mem, args); - break; - case c_buf_destroy: - write_message(stderr, msg_c_buf_destroy, args); - break; - case c_buf_map: - write_message(stderr, msg_c_buf_map, args); - break; - case c_buf_unmap: - write_message(stderr, msg_c_buf_unmap, args); - break; - case c_buf_read: - write_message(stderr, msg_c_buf_read, args); - break; - case c_buf_write: - write_message(stderr, msg_c_buf_write, args); - break; - case c_buf_copy: - write_message(stderr, msg_c_buf_copy, args); - break; - case c_buf_get_address: - write_message(stderr, msg_c_buf_get_address, args); - break; - case c_buf_add_ref: - write_message(stderr, msg_c_buf_add_ref, args); - break; - case c_buf_release_ref: - write_message(stderr, msg_c_buf_release_ref, args); - break; - case c_buf_set_state: - write_message(stderr, msg_c_buf_set_state, args); - break; - case c_event_wait: - write_message(stderr, msg_c_event_wait, args); - break; - case c_zero_or_neg_ptr_len: - write_message(stderr, msg_c_zero_or_neg_ptr_len, args); - break; - case c_zero_or_neg_transfer_size: - write_message(stderr, msg_c_zero_or_neg_transfer_size, args); - break; - case c_bad_ptr_mem_alloc: - write_message(stderr, msg_c_bad_ptr_mem_alloc, args); - break; - case c_bad_ptr_mem_range: - write_message(stderr, msg_c_bad_ptr_mem_range, args); - break; - case c_different_src_and_dstn_sizes: - write_message(stderr, msg_c_different_src_and_dstn_sizes, args); - break; - case c_ranges_dont_match: - write_message(stderr, msg_c_ranges_dont_match, args); - break; - case c_destination_is_over: - write_message(stderr, msg_c_destination_is_over, args); - break; - case c_slice_of_noncont_array: - write_message(stderr, msg_c_slice_of_noncont_array, args); - break; - case c_non_contiguous_dope_vector: - write_message(stderr, msg_c_non_contiguous_dope_vector, args); - break; - case c_pointer_array_mismatch: - write_message(stderr, msg_c_pointer_array_mismatch, args); - break; - case c_omp_invalid_device_num_env: - write_message(stderr, msg_c_omp_invalid_device_num_env, args); - break; - case c_omp_invalid_device_num: - write_message(stderr, msg_c_omp_invalid_device_num, args); - break; - case c_unknown_binary_type: - write_message(stderr, msg_c_unknown_binary_type, args); - break; - case c_multiple_target_exes: - write_message(stderr, msg_c_multiple_target_exes, args); - break; - case c_no_target_exe: - write_message(stderr, msg_c_no_target_exe, args); - break; - case c_report_unknown_timer_node: - write_message(stderr, msg_c_report_unknown_timer_node, args); - break; - case c_report_unknown_trace_node: - write_message(stderr, msg_c_report_unknown_trace_node, args); - break; - case c_incorrect_affinity: - write_message(stderr, msg_c_incorrect_affinity, args); - break; - case c_cannot_set_affinity: - write_message(stderr, msg_c_cannot_set_affinity, args); - break; - case c_mixed_versions: - write_message(stderr, msg_c_mixed_versions, args); - break; - case c_in_with_preallocated: - write_message(stderr, msg_c_in_with_preallocated, args); - break; - case c_report_no_host_exe: - write_message(stderr, msg_c_report_no_host_exe, args); - break; - case c_report_no_target_exe: - write_message(stderr, msg_c_report_no_target_exe, args); - break; - case c_report_path_buff_overflow: - write_message(stderr, msg_c_report_path_buff_overflow, args); - break; - case c_create_pipeline_for_stream: - write_message(stderr, msg_c_create_pipeline_for_stream, args); - break; - case c_offload_streams_are_absent: - write_message(stderr, msg_c_offload_streams_are_absent, args); - break; - case c_offload_no_stream: - write_message(stderr, msg_c_offload_no_stream, args); - break; - case c_offload_device_doesnt_match_to_stream: - write_message(stderr, - msg_c_offload_device_doesnt_match_to_stream, args); - break; - case c_get_engine_info: - write_message(stderr, msg_c_get_engine_info, args); - break; - case c_clear_cpu_mask: - write_message(stderr, msg_c_clear_cpu_mask, args); - break; - case c_set_cpu_mask: - write_message(stderr, msg_c_set_cpu_mask, args); - break; - case c_unload_library: - write_message(stderr, msg_c_unload_library, args); - break; - case c_target_myo_library: - write_message(stderr, msg_c_target_myo_library, args); - break; - case c_myo_dl_sym: - write_message(stderr, msg_c_myo_dl_sym, args); - break; - case c_bad_myo_free: - write_message(stderr, msg_c_bad_myo_free, args); - break; - } - va_end(args); -} - -char const * report_get_message_str(error_types input_tag) -{ - switch (input_tag) { - case c_report_title: - return (offload_get_message_str(msg_c_report_title)); - case c_report_from_file: - return (offload_get_message_str(msg_c_report_from_file)); - case c_report_offload: - return (offload_get_message_str(msg_c_report_offload)); - case c_report_mic: - return (offload_get_message_str(msg_c_report_mic)); - case c_report_file: - return (offload_get_message_str(msg_c_report_file)); - case c_report_line: - return (offload_get_message_str(msg_c_report_line)); - case c_report_host: - return (offload_get_message_str(msg_c_report_host)); - case c_report_tag: - return (offload_get_message_str(msg_c_report_tag)); - case c_report_cpu_time: - return (offload_get_message_str(msg_c_report_cpu_time)); - case c_report_seconds: - return (offload_get_message_str(msg_c_report_seconds)); - case c_report_cpu_to_mic_data: - return (offload_get_message_str(msg_c_report_cpu_to_mic_data)); - case c_report_bytes: - return (offload_get_message_str(msg_c_report_bytes)); - case c_report_mic_time: - return (offload_get_message_str(msg_c_report_mic_time)); - case c_report_mic_to_cpu_data: - return (offload_get_message_str(msg_c_report_mic_to_cpu_data)); - case c_report_compute: - return (offload_get_message_str(msg_c_report_compute)); - case c_report_copyin_data: - return (offload_get_message_str(msg_c_report_copyin_data)); - case c_report_copyout_data: - return (offload_get_message_str(msg_c_report_copyout_data)); - case c_report_create_buf_host: - return (offload_get_message_str(c_report_create_buf_host)); - case c_report_create_buf_mic: - return (offload_get_message_str(msg_c_report_create_buf_mic)); - case c_report_destroy: - return (offload_get_message_str(msg_c_report_destroy)); - case c_report_gather_copyin_data: - return (offload_get_message_str(msg_c_report_gather_copyin_data)); - case c_report_gather_copyout_data: - return (offload_get_message_str(msg_c_report_gather_copyout_data)); - case c_report_state_signal: - return (offload_get_message_str(msg_c_report_state_signal)); - case c_report_signal: - return (offload_get_message_str(msg_c_report_signal)); - case c_report_wait: - return (offload_get_message_str(msg_c_report_wait)); - case c_report_init: - return (offload_get_message_str(msg_c_report_init)); - case c_report_init_func: - return (offload_get_message_str(msg_c_report_init_func)); - case c_report_logical_card: - return (offload_get_message_str(msg_c_report_logical_card)); - case c_report_mic_myo_fptr: - return (offload_get_message_str(msg_c_report_mic_myo_fptr)); - case c_report_mic_myo_shared: - return (offload_get_message_str(msg_c_report_mic_myo_shared)); - case c_report_myoacquire: - return (offload_get_message_str(msg_c_report_myoacquire)); - case c_report_myofini: - return (offload_get_message_str(msg_c_report_myofini)); - case c_report_myoinit: - return (offload_get_message_str(msg_c_report_myoinit)); - case c_report_myoregister: - return (offload_get_message_str(msg_c_report_myoregister)); - case c_report_myorelease: - return (offload_get_message_str(msg_c_report_myorelease)); - case c_report_myosharedalignedfree: - return ( - offload_get_message_str(msg_c_report_myosharedalignedfree)); - case c_report_myosharedalignedmalloc: - return ( - offload_get_message_str(msg_c_report_myosharedalignedmalloc)); - case c_report_myosharedfree: - return (offload_get_message_str(msg_c_report_myosharedfree)); - case c_report_myosharedmalloc: - return (offload_get_message_str(msg_c_report_myosharedmalloc)); - case c_report_physical_card: - return (offload_get_message_str(msg_c_report_physical_card)); - case c_report_receive_pointer_data: - return ( - offload_get_message_str(msg_c_report_receive_pointer_data)); - case c_report_received_pointer_data: - return ( - offload_get_message_str(msg_c_report_received_pointer_data)); - case c_report_register: - return (offload_get_message_str(msg_c_report_register)); - case c_report_scatter_copyin_data: - return (offload_get_message_str(msg_c_report_scatter_copyin_data)); - case c_report_scatter_copyout_data: - return ( - offload_get_message_str(msg_c_report_scatter_copyout_data)); - case c_report_send_pointer_data: - return (offload_get_message_str(msg_c_report_send_pointer_data)); - case c_report_sent_pointer_data: - return (offload_get_message_str(msg_c_report_sent_pointer_data)); - case c_report_start: - return (offload_get_message_str(msg_c_report_start)); - case c_report_start_target_func: - return (offload_get_message_str(msg_c_report_start_target_func)); - case c_report_state: - return (offload_get_message_str(msg_c_report_state)); - case c_report_unregister: - return (offload_get_message_str(msg_c_report_unregister)); - case c_report_var: - return (offload_get_message_str(msg_c_report_var)); - case c_report_stream: - return (offload_get_message_str(msg_c_report_stream)); - case c_report_state_stream: - return (offload_get_message_str(msg_c_report_state_stream)); - - default: - LIBOFFLOAD_ERROR(c_report_unknown_trace_node); - abort(); - } - return 0; -} - -char const * report_get_host_stage_str(int i) -{ - switch (i) { - case c_offload_host_total_offload: - return ( - offload_get_message_str(msg_c_report_host_total_offload_time)); - case c_offload_host_initialize: - return (offload_get_message_str(msg_c_report_host_initialize)); - case c_offload_host_target_acquire: - return ( - offload_get_message_str(msg_c_report_host_target_acquire)); - case c_offload_host_wait_deps: - return (offload_get_message_str(msg_c_report_host_wait_deps)); - case c_offload_host_setup_buffers: - return (offload_get_message_str(msg_c_report_host_setup_buffers)); - case c_offload_host_alloc_buffers: - return (offload_get_message_str(msg_c_report_host_alloc_buffers)); - case c_offload_host_setup_misc_data: - return ( - offload_get_message_str(msg_c_report_host_setup_misc_data)); - case c_offload_host_alloc_data_buffer: - return ( - offload_get_message_str(msg_c_report_host_alloc_data_buffer)); - case c_offload_host_send_pointers: - return (offload_get_message_str(msg_c_report_host_send_pointers)); - case c_offload_host_gather_inputs: - return (offload_get_message_str(msg_c_report_host_gather_inputs)); - case c_offload_host_map_in_data_buffer: - return ( - offload_get_message_str(msg_c_report_host_map_in_data_buffer)); - case c_offload_host_unmap_in_data_buffer: - return (offload_get_message_str( - msg_c_report_host_unmap_in_data_buffer)); - case c_offload_host_start_compute: - return (offload_get_message_str(msg_c_report_host_start_compute)); - case c_offload_host_wait_compute: - return (offload_get_message_str(msg_c_report_host_wait_compute)); - case c_offload_host_start_buffers_reads: - return (offload_get_message_str( - msg_c_report_host_start_buffers_reads)); - case c_offload_host_scatter_outputs: - return ( - offload_get_message_str(msg_c_report_host_scatter_outputs)); - case c_offload_host_map_out_data_buffer: - return (offload_get_message_str( - msg_c_report_host_map_out_data_buffer)); - case c_offload_host_unmap_out_data_buffer: - return (offload_get_message_str( - msg_c_report_host_unmap_out_data_buffer)); - case c_offload_host_wait_buffers_reads: - return ( - offload_get_message_str(msg_c_report_host_wait_buffers_reads)); - case c_offload_host_destroy_buffers: - return ( - offload_get_message_str(msg_c_report_host_destroy_buffers)); - default: - LIBOFFLOAD_ERROR(c_report_unknown_timer_node); - abort(); - } - return 0; -} - -char const * report_get_target_stage_str(int i) -{ - switch (i) { - case c_offload_target_total_time: - return (offload_get_message_str(msg_c_report_target_total_time)); - case c_offload_target_descriptor_setup: - return ( - offload_get_message_str(msg_c_report_target_descriptor_setup)); - case c_offload_target_func_lookup: - return (offload_get_message_str(msg_c_report_target_func_lookup)); - case c_offload_target_func_time: - return (offload_get_message_str(msg_c_report_target_func_time)); - case c_offload_target_scatter_inputs: - return ( - offload_get_message_str(msg_c_report_target_scatter_inputs)); - case c_offload_target_add_buffer_refs: - return ( - offload_get_message_str(msg_c_report_target_add_buffer_refs)); - case c_offload_target_compute: - return (offload_get_message_str(msg_c_report_target_compute)); - case c_offload_target_gather_outputs: - return (offload_get_message_str - (msg_c_report_target_gather_outputs)); - case c_offload_target_release_buffer_refs: - return (offload_get_message_str( - msg_c_report_target_release_buffer_refs)); - default: - LIBOFFLOAD_ERROR(c_report_unknown_timer_node); - abort(); - } - return 0; -} diff --git a/liboffloadmic/runtime/liboffload_error_codes.h b/liboffloadmic/runtime/liboffload_error_codes.h deleted file mode 100644 index d7a71c3..0000000 --- a/liboffloadmic/runtime/liboffload_error_codes.h +++ /dev/null @@ -1,337 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#if !defined(LIBOFFLOAD_ERROR_CODES_H) -#define LIBOFFLOAD_ERROR_CODES_H -#include <stdarg.h> -#include <stdlib.h> -#include <stdio.h> - -typedef enum -{ - c_device_is_not_available = 0, - c_invalid_device_number, - c_offload1, - c_unknown_var_type, - c_send_func_ptr, - c_receive_func_ptr, - c_malloc, - c_unknown_mic_device_type, - c_offload_malloc, - c_invalid_env_var_value, - c_invalid_env_var_int_value, - c_invalid_env_report_value, - c_offload_signaled1, - c_offload_signaled2, - c_myotarget_checkresult, - c_myowrapper_checkresult, - c_offload_descriptor_offload, - c_merge_var_descs1, - c_merge_var_descs2, - c_mic_parse_env_var_list1, - c_mic_parse_env_var_list2, - c_mic_process_exit_ret, - c_mic_process_exit_sig, - c_mic_process_exit, - c_mic_init3, - c_mic_init4, - c_mic_init5, - c_mic_init6, - c_mic_init7, - c_mic_init8, - c_mic_init9, - c_mic_init10, - c_mic_init11, - c_no_static_var_data, - c_no_ptr_data, - c_get_engine_handle, - c_get_engine_index, - c_process_create, - c_process_set_cache_size, - c_process_get_func_handles, - c_process_wait_shutdown, - c_process_proxy_flush, - c_load_library, - c_pipeline_create, - c_pipeline_run_func, - c_pipeline_start_run_funcs, - c_buf_create, - c_buf_create_out_of_mem, - c_buf_create_from_mem, - c_buf_destroy, - c_buf_map, - c_buf_unmap, - c_buf_read, - c_buf_write, - c_buf_copy, - c_buf_get_address, - c_buf_add_ref, - c_buf_release_ref, - c_buf_set_state, - c_event_wait, - c_zero_or_neg_ptr_len, - c_zero_or_neg_transfer_size, - c_bad_ptr_mem_alloc, - c_bad_ptr_mem_range, - c_different_src_and_dstn_sizes, - c_ranges_dont_match, - c_destination_is_over, - c_slice_of_noncont_array, - c_non_contiguous_dope_vector, - c_pointer_array_mismatch, - c_omp_invalid_device_num_env, - c_omp_invalid_device_num, - c_unknown_binary_type, - c_multiple_target_exes, - c_no_target_exe, - c_incorrect_affinity, - c_cannot_set_affinity, - c_mixed_versions, - c_report_host, - c_report_target, - c_report_title, - c_report_from_file, - c_report_file, - c_report_line, - c_report_tag, - c_report_seconds, - c_report_bytes, - c_report_mic, - c_report_cpu_time, - c_report_cpu_to_mic_data, - c_report_mic_time, - c_report_mic_to_cpu_data, - c_report_unknown_timer_node, - c_report_unknown_trace_node, - c_report_offload, - c_report_w_tag, - c_report_state, - c_report_start, - c_report_init, - c_report_logical_card, - c_report_physical_card, - c_report_register, - c_report_init_func, - c_report_create_buf_host, - c_report_create_buf_mic, - c_report_send_pointer_data, - c_report_sent_pointer_data, - c_report_gather_copyin_data, - c_report_copyin_data, - c_report_state_signal, - c_report_signal, - c_report_wait, - c_report_compute, - c_report_receive_pointer_data, - c_report_received_pointer_data, - c_report_start_target_func, - c_report_var, - c_report_scatter_copyin_data, - c_report_gather_copyout_data, - c_report_scatter_copyout_data, - c_report_copyout_data, - c_report_unregister, - c_report_destroy, - c_report_myoinit, - c_report_myoregister, - c_report_myofini, - c_report_mic_myo_shared, - c_report_mic_myo_fptr, - c_report_myosharedmalloc, - c_report_myosharedfree, - c_report_myosharedalignedmalloc, - c_report_myosharedalignedfree, - c_report_myoacquire, - c_report_myorelease, - c_report_myosupportsfeature, - c_report_myosharedarenacreate, - c_report_myosharedalignedarenamalloc, - c_report_myosharedalignedarenafree, - c_report_myoarenaacquire, - c_report_myoarenarelease, - c_coipipe_max_number, - c_in_with_preallocated, - c_report_no_host_exe, - c_report_no_target_exe, - c_report_path_buff_overflow, - c_create_pipeline_for_stream, - c_offload_no_stream, - c_offload_device_doesnt_match_to_stream, - c_offload_streams_are_absent, - c_get_engine_info, - c_clear_cpu_mask, - c_set_cpu_mask, - c_report_state_stream, - c_report_stream, - c_unload_library, - c_target_myo_library, - c_myo_dl_sym, - c_bad_myo_free -} error_types; - -enum OffloadHostPhase { - // Total time on host for entire offload - c_offload_host_total_offload = 0, - - // Time to load target binary - c_offload_host_initialize, - - // Time to acquire lrb availability dynamically - c_offload_host_target_acquire, - - // Time to wait for dependencies - c_offload_host_wait_deps, - - // Time to allocate pointer buffers, initiate writes for pointers - // and calculate size of copyin/copyout buffer - c_offload_host_setup_buffers, - - // Time to allocate pointer buffers - c_offload_host_alloc_buffers, - - // Time to initialize misc data - c_offload_host_setup_misc_data, - - // Time to allocate copyin/copyout buffer - c_offload_host_alloc_data_buffer, - - // Time to initiate writes from host pointers to buffers - c_offload_host_send_pointers, - - // Time to Gather IN data of offload into buffer - c_offload_host_gather_inputs, - - // Time to map buffer - c_offload_host_map_in_data_buffer, - - // Time to unmap buffer - c_offload_host_unmap_in_data_buffer, - - // Time to start remote function call that does computation on lrb - c_offload_host_start_compute, - - // Time to wait for compute to finish - c_offload_host_wait_compute, - - // Time to initiate reads from pointer buffers - c_offload_host_start_buffers_reads, - - // Time to update host variabels with OUT data from buffer - c_offload_host_scatter_outputs, - - // Time to map buffer - c_offload_host_map_out_data_buffer, - - // Time to unmap buffer - c_offload_host_unmap_out_data_buffer, - - // Time to wait reads from buffers to finish - c_offload_host_wait_buffers_reads, - - // Time to destroy buffers that are no longer needed - c_offload_host_destroy_buffers, - - // LAST TIME MONITOR - c_offload_host_max_phase -}; - -enum OffloadTargetPhase { - // Total time spent on the target - c_offload_target_total_time = 0, - - // Time to initialize offload descriptor - c_offload_target_descriptor_setup, - - // Time to find target entry point in lookup table - c_offload_target_func_lookup, - - // Total time spend executing offload entry - c_offload_target_func_time, - - // Time to initialize target variables with IN values from buffer - c_offload_target_scatter_inputs, - - // Time to add buffer reference for pointer buffers - c_offload_target_add_buffer_refs, - - // Total time on lrb for computation - c_offload_target_compute, - - // On lrb, time to copy OUT into buffer - c_offload_target_gather_outputs, - - // Time to release buffer references - c_offload_target_release_buffer_refs, - - // LAST TIME MONITOR - c_offload_target_max_phase -}; - -#ifdef TARGET_WINNT - #define DLL_LOCAL -#else - #define DLL_LOCAL __attribute__((visibility("hidden"))) -#endif - -#ifdef __cplusplus -extern "C" { -#endif -DLL_LOCAL void __liboffload_error_support(error_types input_tag, ...); -DLL_LOCAL void __liboffload_report_support(error_types input_tag, ...); -DLL_LOCAL char const *offload_get_message_str(int msgCode); -DLL_LOCAL char const * report_get_message_str(error_types input_tag); -DLL_LOCAL char const * report_get_host_stage_str(int i); -DLL_LOCAL char const * report_get_target_stage_str(int i); -#ifdef __cplusplus -} -#endif - -#define test_msg_cat(nm, msg) \ - fprintf(stderr, "\t TEST for %s \n \t", nm); \ - __liboffload_error_support(msg); - -#define test_msg_cat1(nm, msg, ...) \ - fprintf(stderr, "\t TEST for %s \n \t", nm); \ - __liboffload_error_support(msg, __VA_ARGS__); - -DLL_LOCAL void write_message(FILE * file, int msgCode, va_list args_p); - -#define LIBOFFLOAD_ERROR __liboffload_error_support - -#ifdef TARGET_WINNT -#define LIBOFFLOAD_ABORT \ - _set_abort_behavior(0, _WRITE_ABORT_MSG); \ - abort() -#else -#define LIBOFFLOAD_ABORT \ - abort() -#endif - -#endif // !defined(LIBOFFLOAD_ERROR_CODES_H) diff --git a/liboffloadmic/runtime/liboffload_msg.c b/liboffloadmic/runtime/liboffload_msg.c deleted file mode 100644 index ffee72f..0000000 --- a/liboffloadmic/runtime/liboffload_msg.c +++ /dev/null @@ -1,66 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#include <stdarg.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -// =========================================================================== -// Bring in the static string table and the enumerations for indexing into -// it. -// =========================================================================== - -#include "liboffload_msg.h" - -# define DYNART_STDERR_PUTS(__message_text__) fputs((__message_text__),stderr) - -// =========================================================================== -// Now the code for accessing the message catalogs -// =========================================================================== - - - void write_message(FILE * file, int msgCode, va_list args_p) { - va_list args; - char buf[1024]; - - va_copy(args, args_p); - buf[0] = '\n'; - vsnprintf(buf + 1, sizeof(buf) - 2, - MESSAGE_TABLE_NAME[ msgCode ], args); - strcat(buf, "\n"); - va_end(args); - fputs(buf, file); - fflush(file); - } - - char const *offload_get_message_str(int msgCode) { - return MESSAGE_TABLE_NAME[ msgCode ]; - } diff --git a/liboffloadmic/runtime/liboffload_msg.h b/liboffloadmic/runtime/liboffload_msg.h deleted file mode 100644 index 93eccd4..0000000 --- a/liboffloadmic/runtime/liboffload_msg.h +++ /dev/null @@ -1,416 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -// file: liboffload_msg.h -enum { - __dummy__ = 0, - msg_c_device_is_not_available, - msg_c_invalid_device_number, - msg_c_send_func_ptr, - msg_c_receive_func_ptr, - msg_c_malloc, - msg_c_unknown_mic_device_type, - msg_c_offload_malloc, - msg_c_offload1, - msg_c_unknown_var_type, - msg_c_invalid_env_var_value, - msg_c_invalid_env_var_int_value, - msg_c_invalid_env_report_value, - msg_c_offload_signaled1, - msg_c_offload_signaled2, - msg_c_myowrapper_checkresult, - msg_c_myotarget_checkresult, - msg_c_offload_descriptor_offload, - msg_c_merge_var_descs1, - msg_c_merge_var_descs2, - msg_c_mic_parse_env_var_list1, - msg_c_mic_parse_env_var_list2, - msg_c_mic_process_exit_ret, - msg_c_mic_process_exit_sig, - msg_c_mic_process_exit, - msg_c_mic_init3, - msg_c_mic_init4, - msg_c_mic_init5, - msg_c_mic_init6, - msg_c_mic_init7, - msg_c_mic_init8, - msg_c_mic_init9, - msg_c_mic_init10, - msg_c_mic_init11, - msg_c_no_static_var_data, - msg_c_no_ptr_data, - msg_c_get_engine_handle, - msg_c_get_engine_index, - msg_c_process_create, - msg_c_process_set_cache_size, - msg_c_process_get_func_handles, - msg_c_process_wait_shutdown, - msg_c_process_proxy_flush, - msg_c_load_library, - msg_c_pipeline_create, - msg_c_pipeline_run_func, - msg_c_pipeline_start_run_funcs, - msg_c_buf_create, - msg_c_buf_create_out_of_mem, - msg_c_buf_create_from_mem, - msg_c_buf_destroy, - msg_c_buf_map, - msg_c_buf_unmap, - msg_c_buf_read, - msg_c_buf_write, - msg_c_buf_copy, - msg_c_buf_get_address, - msg_c_buf_add_ref, - msg_c_buf_release_ref, - msg_c_buf_set_state, - msg_c_event_wait, - msg_c_zero_or_neg_ptr_len, - msg_c_zero_or_neg_transfer_size, - msg_c_bad_ptr_mem_alloc, - msg_c_bad_ptr_mem_range, - msg_c_different_src_and_dstn_sizes, - msg_c_non_contiguous_dope_vector, - msg_c_omp_invalid_device_num_env, - msg_c_omp_invalid_device_num, - msg_c_unknown_binary_type, - msg_c_multiple_target_exes, - msg_c_no_target_exe, - msg_c_report_unknown_timer_node, - msg_c_report_unknown_trace_node, - msg_c_incorrect_affinity, - msg_c_cannot_set_affinity, - msg_c_mixed_versions, - msg_c_report_host, - msg_c_report_mic, - msg_c_report_title, - msg_c_report_seconds, - msg_c_report_bytes, - msg_c_report_cpu_time, - msg_c_report_mic_time, - msg_c_report_tag, - msg_c_report_from_file, - msg_c_report_file, - msg_c_report_line, - msg_c_report_cpu_to_mic_data, - msg_c_report_mic_to_cpu_data, - msg_c_report_offload, - msg_c_report_w_tag, - msg_c_report_state, - msg_c_report_start, - msg_c_report_init, - msg_c_report_logical_card, - msg_c_report_physical_card, - msg_c_report_register, - msg_c_report_init_func, - msg_c_report_create_buf_host, - msg_c_report_create_buf_mic, - msg_c_report_send_pointer_data, - msg_c_report_sent_pointer_data, - msg_c_report_gather_copyin_data, - msg_c_report_copyin_data, - msg_c_report_state_signal, - msg_c_report_signal, - msg_c_report_wait, - msg_c_report_compute, - msg_c_report_receive_pointer_data, - msg_c_report_received_pointer_data, - msg_c_report_start_target_func, - msg_c_report_var, - msg_c_report_scatter_copyin_data, - msg_c_report_gather_copyout_data, - msg_c_report_scatter_copyout_data, - msg_c_report_copyout_data, - msg_c_report_unregister, - msg_c_report_destroy, - msg_c_report_myoinit, - msg_c_report_myoregister, - msg_c_report_myofini, - msg_c_report_mic_myo_shared, - msg_c_report_mic_myo_fptr, - msg_c_report_myosharedmalloc, - msg_c_report_myosharedfree, - msg_c_report_myosharedalignedmalloc, - msg_c_report_myosharedalignedfree, - msg_c_report_myoacquire, - msg_c_report_myorelease, - msg_c_report_myosupportsfeature, - msg_c_report_myosharedarenacreate, - msg_c_report_myosharedalignedarenamalloc, - msg_c_report_myosharedalignedarenafree, - msg_c_report_myoarenaacquire, - msg_c_report_myoarenarelease, - msg_c_report_host_total_offload_time, - msg_c_report_host_initialize, - msg_c_report_host_target_acquire, - msg_c_report_host_wait_deps, - msg_c_report_host_setup_buffers, - msg_c_report_host_alloc_buffers, - msg_c_report_host_setup_misc_data, - msg_c_report_host_alloc_data_buffer, - msg_c_report_host_send_pointers, - msg_c_report_host_gather_inputs, - msg_c_report_host_map_in_data_buffer, - msg_c_report_host_unmap_in_data_buffer, - msg_c_report_host_start_compute, - msg_c_report_host_wait_compute, - msg_c_report_host_start_buffers_reads, - msg_c_report_host_scatter_outputs, - msg_c_report_host_map_out_data_buffer, - msg_c_report_host_unmap_out_data_buffer, - msg_c_report_host_wait_buffers_reads, - msg_c_report_host_destroy_buffers, - msg_c_report_target_total_time, - msg_c_report_target_descriptor_setup, - msg_c_report_target_func_lookup, - msg_c_report_target_func_time, - msg_c_report_target_scatter_inputs, - msg_c_report_target_add_buffer_refs, - msg_c_report_target_compute, - msg_c_report_target_gather_outputs, - msg_c_report_target_release_buffer_refs, - msg_c_coi_pipeline_max_number, - msg_c_ranges_dont_match, - msg_c_destination_is_over, - msg_c_slice_of_noncont_array, - msg_c_pointer_array_mismatch, - msg_c_in_with_preallocated, - msg_c_report_no_host_exe, - msg_c_report_no_target_exe, - msg_c_report_path_buff_overflow, - msg_c_create_pipeline_for_stream, - msg_c_offload_no_stream, - msg_c_offload_device_doesnt_match_to_stream, - msg_c_offload_streams_are_absent, - msg_c_get_engine_info, - msg_c_clear_cpu_mask, - msg_c_set_cpu_mask, - msg_c_report_state_stream, - msg_c_report_stream, - msg_c_unload_library, - msg_c_target_myo_library, - msg_c_myo_dl_sym, - msg_c_bad_myo_free, - lastMsg = 187, - firstMsg = 1 -}; - - -#if !defined(MESSAGE_TABLE_NAME) -# define MESSAGE_TABLE_NAME __liboffload_message_table -#endif - -static char const * MESSAGE_TABLE_NAME[] = { - /* 0 __dummy__ */ "Un-used message", - /* 1 msg_c_device_is_not_available */ "offload error: cannot offload to MIC - device is not available", - /* 2 msg_c_invalid_device_number */ "offload error: expected a number greater than or equal to -1", - /* 3 msg_c_send_func_ptr */ "offload error: cannot find function name for address %p", - /* 4 msg_c_receive_func_ptr */ "offload error: cannot find address of function %s", - /* 5 msg_c_malloc */ "offload error: memory allocation failed", - /* 6 msg_c_unknown_mic_device_type */ "offload error: unknown mic device type ", - /* 7 msg_c_offload_malloc */ "offload error: memory allocation failed (requested=%lld bytes, align %lld)", - /* 8 msg_c_offload1 */ "offload error: device %d does not have a pending signal for wait(%p)", - /* 9 msg_c_unknown_var_type */ "offload error: unknown variable type %d", - /* 10 msg_c_invalid_env_var_value */ "offload warning: ignoring invalid value specified for %s", - /* 11 msg_c_invalid_env_var_int_value */ "offload warning: specify an integer value for %s", - /* 12 msg_c_invalid_env_report_value */ "offload warning: ignoring %s setting; use a value in range 1-3", - /* 13 msg_c_offload_signaled1 */ "offload error: invalid device number %d specified in _Offload_signaled", - /* 14 msg_c_offload_signaled2 */ "offload error: invalid signal %p specified for _Offload_signaled", - /* 15 msg_c_myowrapper_checkresult */ "offload error: %s failed with error %d", - /* 16 msg_c_myotarget_checkresult */ "offload error: %s failed with error %d", - /* 17 msg_c_offload_descriptor_offload */ "offload error: cannot find offload entry %s", - /* 18 msg_c_merge_var_descs1 */ "offload error: unexpected number of variable descriptors", - /* 19 msg_c_merge_var_descs2 */ "offload error: unexpected variable type", - /* 20 msg_c_mic_parse_env_var_list1 */ "offload_error: MIC environment variable must begin with an alpabetic character", - /* 21 msg_c_mic_parse_env_var_list2 */ "offload_error: MIC environment variable value must be specified with '='", - /* 22 msg_c_mic_process_exit_ret */ "offload error: process on the device %d unexpectedly exited with code %d", - /* 23 msg_c_mic_process_exit_sig */ "offload error: process on the device %d was terminated by signal %d (%s)", - /* 24 msg_c_mic_process_exit */ "offload error: process on the device %d was unexpectedly terminated", - /* 25 msg_c_mic_init3 */ "offload warning: ignoring MIC_STACKSIZE setting; use a value >= 16K and a multiple of 4K", - /* 26 msg_c_mic_init4 */ "offload error: thread key create failed with error %d", - /* 27 msg_c_mic_init5 */ "offload error: specify OFFLOAD_DEVICES as comma-separated physical device numbers or 'none'", - /* 28 msg_c_mic_init6 */ "offload error: OFFLOAD_DEVICES device number %d does not correspond to a physical device", - /* 29 msg_c_mic_init7 */ "offload error: specify a number as a device in OFFLOAD_DEVICES", - /* 30 msg_c_mic_init8 */ "offload error: specify a number as the start of a device range in OFFLOAD_DEVICES", - /* 31 msg_c_mic_init9 */ "offload error: specify a number as the end of a device range in OFFLOAD_DEVICES", - /* 32 msg_c_mic_init10 */ "offload error: specify a low to high device range in OFFLOAD_DEVICES", - /* 33 msg_c_mic_init11 */ "offload error: specify comma-separated device or device ranges in OFFLOAD_DEVICES", - /* 34 msg_c_no_static_var_data */ "offload error: cannot find data associated with statically allocated variable %p", - /* 35 msg_c_no_ptr_data */ "offload error: cannot find data associated with pointer variable %p", - /* 36 msg_c_get_engine_handle */ "offload error: cannot get device %d handle (error code %d)", - /* 37 msg_c_get_engine_index */ "offload error: cannot get physical index for logical device %d (error code %d)", - /* 38 msg_c_process_create */ "offload error: cannot start process on the device %d (error code %d)", - /* 39 msg_c_process_set_cache_size */ "offload error: cannot reserve buffer on the device %d (error code %d)", - /* 40 msg_c_process_get_func_handles */ "offload error: cannot get function handles on the device %d (error code %d)", - /* 41 msg_c_process_wait_shutdown */ "offload error: wait for process shutdown failed on device %d (error code %d)", - /* 42 msg_c_process_proxy_flush */ "offload error: cannot flush process output on device %d (error code %d)", - /* 43 msg_c_load_library */ "offload error: cannot load library %s to the device %d (error code %d)", - /* 44 msg_c_pipeline_create */ "offload error: cannot create pipeline on the device %d (error code %d)", - /* 45 msg_c_pipeline_run_func */ "offload error: cannot execute function on the device %d (error code %d)", - /* 46 msg_c_pipeline_start_run_funcs */ "offload error: cannot start executing pipeline function on the device %d (error code %d)", - /* 47 msg_c_buf_create */ "offload error: cannot create buffer on device %d (error code %d)", - /* 48 msg_c_buf_create_out_of_mem */ "offload error: cannot create buffer on device %d, out of memory", - /* 49 msg_c_buf_create_from_mem */ "offload error: cannot create buffer from memory on device %d (error code %d)", - /* 50 msg_c_buf_destroy */ "offload error: buffer destroy failed (error code %d)", - /* 51 msg_c_buf_map */ "offload error: buffer map failed (error code %d)", - /* 52 msg_c_buf_unmap */ "offload error: buffer unmap failed (error code %d)", - /* 53 msg_c_buf_read */ "offload error: buffer read failed (error code %d)", - /* 54 msg_c_buf_write */ "offload error: buffer write failed (error code %d)", - /* 55 msg_c_buf_copy */ "offload error: buffer copy failed (error code %d)", - /* 56 msg_c_buf_get_address */ "offload error: cannot get buffer address on device %d (error code %d)", - /* 57 msg_c_buf_add_ref */ "offload error: cannot reuse buffer memory on device %d (error code %d)", - /* 58 msg_c_buf_release_ref */ "offload error: cannot release buffer memory on device %d (error code %d)", - /* 59 msg_c_buf_set_state */ "offload error: buffer set state failed (error code %d)", - /* 60 msg_c_event_wait */ "offload error: wait for event to become signaled failed (error code %d)", - /* 61 msg_c_zero_or_neg_ptr_len */ "offload error: memory allocation of zero or negative length is not supported", - /* 62 msg_c_zero_or_neg_transfer_size */ "offload error: data transfer of zero or negative size is not supported", - /* 63 msg_c_bad_ptr_mem_alloc */ "offload error: allocation (base=%p, size=%d) overlaps with existing allocation (base=%p, size=%d)", - /* 64 msg_c_bad_ptr_mem_range */ "offload error: data transfer (base=%p, size=%d) not subset of existing allocation (base=%p, size=%d)", - /* 65 msg_c_different_src_and_dstn_sizes */ "offload error: size of the source %d differs from size of the destination %d", - /* 66 msg_c_non_contiguous_dope_vector */ "offload error: offload data transfer supports only a single contiguous memory range per variable", - /* 67 msg_c_omp_invalid_device_num_env */ "offload warning: ignoring %s setting; use a non-negative integer value", - /* 68 msg_c_omp_invalid_device_num */ "offload error: device number should be a non-negative integer value", - /* 69 msg_c_unknown_binary_type */ "offload error: unexpected embedded target binary type, expected either an executable or shared library", - /* 70 msg_c_multiple_target_exes */ "offload error: more that one target executable found", - /* 71 msg_c_no_target_exe */ "offload error: target executable is not available", - /* 72 msg_c_report_unknown_timer_node */ "offload error: unknown timer node", - /* 73 msg_c_report_unknown_trace_node */ "offload error: unknown trace node", - /* 74 msg_c_incorrect_affinity */ "offload error: unknow affinity type %s, specify compact, scatter or balanced", - /* 75 msg_c_cannot_set_affinity */ "offload_error: unable to set affinity", - /* 76 msg_c_mixed_versions */ "offload_error: all application executables that contain offload must be built with the same compiler version", - /* 77 msg_c_report_host */ "HOST", - /* 78 msg_c_report_mic */ "MIC", - /* 79 msg_c_report_title */ "timer data (sec)", - /* 80 msg_c_report_seconds */ "(seconds)", - /* 81 msg_c_report_bytes */ "(bytes)", - /* 82 msg_c_report_cpu_time */ "CPU Time", - /* 83 msg_c_report_mic_time */ "MIC Time", - /* 84 msg_c_report_tag */ "Tag", - /* 85 msg_c_report_from_file */ "Offload from file", - /* 86 msg_c_report_file */ "File", - /* 87 msg_c_report_line */ "Line", - /* 88 msg_c_report_cpu_to_mic_data */ "CPU->MIC Data", - /* 89 msg_c_report_mic_to_cpu_data */ "MIC->CPU Data", - /* 90 msg_c_report_offload */ "Offload", - /* 91 msg_c_report_w_tag */ "Tag %d", - /* 92 msg_c_report_state */ "State", - /* 93 msg_c_report_start */ "Start target", - /* 94 msg_c_report_init */ "Initialize", - /* 95 msg_c_report_logical_card */ "logical card", - /* 96 msg_c_report_physical_card */ "physical card", - /* 97 msg_c_report_register */ "Register static data tables", - /* 98 msg_c_report_init_func */ "Setup target entry", - /* 99 msg_c_report_create_buf_host */ "Create host buffer", - /* 100 msg_c_report_create_buf_mic */ "Create target buffer", - /* 101 msg_c_report_send_pointer_data */ "Send pointer data", - /* 102 msg_c_report_sent_pointer_data */ "Host->target pointer data", - /* 103 msg_c_report_gather_copyin_data */ "Gather copyin data", - /* 104 msg_c_report_copyin_data */ "Host->target copyin data", - /* 105 msg_c_report_state_signal */ "Signal", - /* 106 msg_c_report_signal */ "signal :", - /* 107 msg_c_report_wait */ "waits :", - /* 108 msg_c_report_compute */ "Execute task on target", - /* 109 msg_c_report_receive_pointer_data */ "Receive pointer data", - /* 110 msg_c_report_received_pointer_data */ "Target->host pointer data", - /* 111 msg_c_report_start_target_func */ "Start target entry", - /* 112 msg_c_report_var */ "Var", - /* 113 msg_c_report_scatter_copyin_data */ "Scatter copyin data", - /* 114 msg_c_report_gather_copyout_data */ "Gather copyout data", - /* 115 msg_c_report_scatter_copyout_data */ "Scatter copyout data", - /* 116 msg_c_report_copyout_data */ "Target->host copyout data", - /* 117 msg_c_report_unregister */ "Unregister data tables", - /* 118 msg_c_report_destroy */ "Destroy", - /* 119 msg_c_report_myoinit */ "Initialize MYO", - /* 120 msg_c_report_myoregister */ "Register MYO tables", - /* 121 msg_c_report_myofini */ "Finalize MYO", - /* 122 msg_c_report_mic_myo_shared */ "MIC MYO shared table register", - /* 123 msg_c_report_mic_myo_fptr */ "MIC MYO fptr table register", - /* 124 msg_c_report_myosharedmalloc */ "MYO shared malloc", - /* 125 msg_c_report_myosharedfree */ "MYO shared free", - /* 126 msg_c_report_myosharedalignedmalloc */ "MYO shared aligned malloc", - /* 127 msg_c_report_myosharedalignedfree */ "MYO shared aligned free", - /* 128 msg_c_report_myoacquire */ "MYO acquire", - /* 129 msg_c_report_myorelease */ "MYO release", - /* 130 msg_c_report_myosupportsfeature */ "MYO supports feature", - /* 131 msg_c_report_myosharedarenacreate */ "MYO shared arena create", - /* 132 msg_c_report_myosharedalignedarenamalloc */ "MYO shared aligned arena malloc", - /* 133 msg_c_report_myosharedalignedarenafree */ "MYO shared aligned arena free", - /* 134 msg_c_report_myoarenaacquire */ "MYO arena acquire", - /* 135 msg_c_report_myoarenarelease */ "MYO arena release", - /* 136 msg_c_report_host_total_offload_time */ "host: total offload time", - /* 137 msg_c_report_host_initialize */ "host: initialize target", - /* 138 msg_c_report_host_target_acquire */ "host: acquire target", - /* 139 msg_c_report_host_wait_deps */ "host: wait dependencies", - /* 140 msg_c_report_host_setup_buffers */ "host: setup buffers", - /* 141 msg_c_report_host_alloc_buffers */ "host: allocate buffers", - /* 142 msg_c_report_host_setup_misc_data */ "host: setup misc_data", - /* 143 msg_c_report_host_alloc_data_buffer */ "host: allocate buffer", - /* 144 msg_c_report_host_send_pointers */ "host: send pointers", - /* 145 msg_c_report_host_gather_inputs */ "host: gather inputs", - /* 146 msg_c_report_host_map_in_data_buffer */ "host: map IN data buffer", - /* 147 msg_c_report_host_unmap_in_data_buffer */ "host: unmap IN data buffer", - /* 148 msg_c_report_host_start_compute */ "host: initiate compute", - /* 149 msg_c_report_host_wait_compute */ "host: wait compute", - /* 150 msg_c_report_host_start_buffers_reads */ "host: initiate pointer reads", - /* 151 msg_c_report_host_scatter_outputs */ "host: scatter outputs", - /* 152 msg_c_report_host_map_out_data_buffer */ "host: map OUT data buffer", - /* 153 msg_c_report_host_unmap_out_data_buffer */ "host: unmap OUT data buffer", - /* 154 msg_c_report_host_wait_buffers_reads */ "host: wait pointer reads", - /* 155 msg_c_report_host_destroy_buffers */ "host: destroy buffers", - /* 156 msg_c_report_target_total_time */ "target: total time", - /* 157 msg_c_report_target_descriptor_setup */ "target: setup offload descriptor", - /* 158 msg_c_report_target_func_lookup */ "target: entry lookup", - /* 159 msg_c_report_target_func_time */ "target: entry time", - /* 160 msg_c_report_target_scatter_inputs */ "target: scatter inputs", - /* 161 msg_c_report_target_add_buffer_refs */ "target: add buffer reference", - /* 162 msg_c_report_target_compute */ "target: compute", - /* 163 msg_c_report_target_gather_outputs */ "target: gather outputs", - /* 164 msg_c_report_target_release_buffer_refs */ "target: remove buffer reference", - /* 165 msg_c_coi_pipeline_max_number */ "number of host threads doing offload exceeds maximum of %d", - /* 166 msg_c_ranges_dont_match */ "ranges of source and destination don't match together", - /* 167 msg_c_destination_is_over */ "insufficient destination memory to transfer source", - /* 168 msg_c_slice_of_noncont_array */ "a non-contiguous slice may be taken of contiguous arrays only", - /* 169 msg_c_pointer_array_mismatch */ "number of %s elements is less than described by the source", - /* 170 msg_c_in_with_preallocated */ "offload error: preallocated targetptr alloc_if(1) may not be used with an in clause", - /* 171 msg_c_report_no_host_exe */ "offload error: Cannot find host executable", - /* 172 msg_c_report_no_target_exe */ "offload error: Cannot find target executable (%s)", - /* 173 msg_c_report_path_buff_overflow */ "offload error: Size of host executable path exceeded 4KB", - /* 174 msg_c_create_pipeline_for_stream */ "offload error: number of cpus exceeds maximum of %d", - /* 175 msg_c_offload_no_stream */ "offload error: the stream isn't found on device %d", - /* 176 msg_c_offload_device_doesnt_match_to_stream */ "offload_error: the stream was created for device %d", - /* 177 msg_c_offload_streams_are_absent */ "offload error: there was created no streams", - /* 178 msg_c_get_engine_info */ "offload error: cannot get device %d info (error code %d)", - /* 179 msg_c_clear_cpu_mask */ "offload error: cannot clear cpu mask (error code %d)", - /* 180 msg_c_set_cpu_mask */ "offload error: cannot set cpu mask (error code %d)", - /* 181 msg_c_report_state_stream */ "Stream", - /* 182 msg_c_report_stream */ "stream :", - /* 183 msg_c_unload_library */ "offload error: cannot unload library from the device %d (error code %d)", - /* 184 msg_c_target_myo_library */ "offload error: cannot find MYO library on device %s", - /* 185 msg_c_myo_dl_sym */ "offload error: cannot find MYO func on device %s", - /* 186 msg_c_bad_myo_free */ "offload error: cannot free MYO shared memory %p", -}; diff --git a/liboffloadmic/runtime/mic_lib.f90 b/liboffloadmic/runtime/mic_lib.f90 deleted file mode 100644 index 1874dd9..0000000 --- a/liboffloadmic/runtime/mic_lib.f90 +++ /dev/null @@ -1,282 +0,0 @@ -! -! Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. -! -! Redistribution and use in source and binary forms, with or without -! modification, are permitted provided that the following conditions -! are met: -! -! * Redistributions of source code must retain the above copyright -! notice, this list of conditions and the following disclaimer. -! * Redistributions in binary form must reproduce the above copyright -! notice, this list of conditions and the following disclaimer in the -! documentation and/or other materials provided with the distribution. -! * Neither the name of Intel Corporation nor the names of its -! contributors may be used to endorse or promote products derived -! from this software without specific prior written permission. -! -! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -! "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -! LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -! A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -! HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -! SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -! LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -! DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -! THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -! (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -! OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -! - - -! ********************************************************************************** -! * This file is intended to support the Intel(r) Many Integrated Core Architecture. -! ********************************************************************************** -! free form Fortran source - should be named .f90 -! lines are longer than 72 characters - -module mic_lib -use, intrinsic :: iso_c_binding - -integer, parameter:: target_mic=2 -integer, parameter:: default_target_type=target_mic -integer, parameter:: default_target_number=0 - -enum, bind(C) - enumerator :: OFFLOAD_SUCCESS = 0 - enumerator :: OFFLOAD_DISABLED ! offload is disabled - enumerator :: OFFLOAD_UNAVAILABLE ! card is not available - enumerator :: OFFLOAD_OUT_OF_MEMORY ! not enough memory on device - enumerator :: OFFLOAD_PROCESS_DIED ! target process has died - enumerator :: OFFLOAD_ERROR ! unspecified error -end enum - -type, bind (C) :: offload_status - integer(kind=c_int) :: result = OFFLOAD_DISABLED - integer(kind=c_int) :: device_number = -1 - integer(kind=c_size_t) :: data_sent = 0 - integer(kind=c_size_t) :: data_received = 0 -end type offload_status - -interface -function offload_number_of_devices () & - bind (C, name = "_Offload_number_of_devices") -!dec$ attributes default :: offload_number_of_devices - import :: c_int - integer (kind=c_int) :: offload_number_of_devices -!dec$ attributes offload:mic :: offload_number_of_devices -!dir$ attributes known_intrinsic :: offload_number_of_devices -end function offload_number_of_devices - -function offload_signaled(target_number, signal) & - bind (C, name = "_Offload_signaled") -!dec$ attributes default :: offload_signaled - import :: c_int, c_int64_t - integer (kind=c_int) :: offload_signaled - integer (kind=c_int), value :: target_number - integer (kind=c_int64_t), value :: signal -!dec$ attributes offload:mic :: offload_signaled -end function offload_signaled - -subroutine offload_report(val) & - bind (C, name = "_Offload_report") -!dec$ attributes default :: offload_report - import :: c_int - integer (kind=c_int), value :: val -!dec$ attributes offload:mic :: offload_report -end subroutine offload_report - -function offload_get_device_number() & - bind (C, name = "_Offload_get_device_number") -!dec$ attributes default :: offload_get_device_number - import :: c_int - integer (kind=c_int) :: offload_get_device_number -!dec$ attributes offload:mic :: offload_get_device_number -end function offload_get_device_number - -function offload_get_physical_device_number() & - bind (C, name = "_Offload_get_physical_device_number") -!dec$ attributes default :: offload_get_physical_device_number - import :: c_int - integer (kind=c_int) :: offload_get_physical_device_number -!dec$ attributes offload:mic :: offload_get_physical_device_number -end function offload_get_physical_device_number - -! OpenMP API wrappers - -subroutine omp_set_num_threads_target (target_type, & - target_number, & - num_threads) & - bind (C, name = "omp_set_num_threads_target") - import :: c_int - integer (kind=c_int), value :: target_type, target_number, num_threads -end subroutine omp_set_num_threads_target - -function omp_get_max_threads_target (target_type, & - target_number) & - bind (C, name = "omp_get_max_threads_target") - import :: c_int - integer (kind=c_int) :: omp_get_max_threads_target - integer (kind=c_int), value :: target_type, target_number -end function omp_get_max_threads_target - -function omp_get_num_procs_target (target_type, & - target_number) & - bind (C, name = "omp_get_num_procs_target") - import :: c_int - integer (kind=c_int) :: omp_get_num_procs_target - integer (kind=c_int), value :: target_type, target_number -end function omp_get_num_procs_target - -subroutine omp_set_dynamic_target (target_type, & - target_number, & - num_threads) & - bind (C, name = "omp_set_dynamic_target") - import :: c_int - integer (kind=c_int), value :: target_type, target_number, num_threads -end subroutine omp_set_dynamic_target - -function omp_get_dynamic_target (target_type, & - target_number) & - bind (C, name = "omp_get_dynamic_target") - import :: c_int - integer (kind=c_int) :: omp_get_dynamic_target - integer (kind=c_int), value :: target_type, target_number -end function omp_get_dynamic_target - -subroutine omp_set_nested_target (target_type, & - target_number, & - nested) & - bind (C, name = "omp_set_nested_target") - import :: c_int - integer (kind=c_int), value :: target_type, target_number, nested -end subroutine omp_set_nested_target - -function omp_get_nested_target (target_type, & - target_number) & - bind (C, name = "omp_get_nested_target") - import :: c_int - integer (kind=c_int) :: omp_get_nested_target - integer (kind=c_int), value :: target_type, target_number -end function omp_get_nested_target - -subroutine omp_set_schedule_target (target_type, & - target_number, & - kind, & - modifier) & - bind (C, name = "omp_set_schedule_target") - import :: c_int - integer (kind=c_int), value :: target_type, target_number, kind, modifier -end subroutine omp_set_schedule_target - -subroutine omp_get_schedule_target (target_type, & - target_number, & - kind, & - modifier) & - bind (C, name = "omp_get_schedule_target") - import :: c_int, c_intptr_t - integer (kind=c_int), value :: target_type, target_number - integer (kind=c_intptr_t), value :: kind, modifier -end subroutine omp_get_schedule_target - -! lock API functions - -subroutine omp_init_lock_target (target_type, & - target_number, & - lock) & - bind (C, name = "omp_init_lock_target") - import :: c_int, c_intptr_t - !dir$ attributes known_intrinsic :: omp_init_lock_target - integer (kind=c_int), value :: target_type, target_number - integer (kind=c_intptr_t), value :: lock -end subroutine omp_init_lock_target - -subroutine omp_destroy_lock_target (target_type, & - target_number, & - lock) & - bind (C, name = "omp_destroy_lock_target") - import :: c_int, c_intptr_t - !dir$ attributes known_intrinsic :: omp_destroy_lock_target - integer (kind=c_int), value :: target_type, target_number - integer (kind=c_intptr_t), value :: lock -end subroutine omp_destroy_lock_target - -subroutine omp_set_lock_target (target_type, & - target_number, & - lock) & - bind (C, name = "omp_set_lock_target") - import :: c_int, c_intptr_t - !dir$ attributes known_intrinsic :: omp_set_lock_target - integer (kind=c_int), value :: target_type, target_number - integer (kind=c_intptr_t), value :: lock -end subroutine omp_set_lock_target - -subroutine omp_unset_lock_target (target_type, & - target_number, & - lock) & - bind (C, name = "omp_unset_lock_target") - import :: c_int, c_intptr_t - !dir$ attributes known_intrinsic :: omp_unset_lock_target - integer (kind=c_int), value :: target_type, target_number - integer (kind=c_intptr_t), value :: lock -end subroutine omp_unset_lock_target - -function omp_test_lock_target (target_type, & - target_number, & - lock) & - bind (C, name = "omp_test_lock_target") - import :: c_int, c_intptr_t - integer (kind=c_int) :: omp_test_lock_target - integer (kind=c_int), value :: target_type, target_number - integer (kind=c_intptr_t), value :: lock -end function omp_test_lock_target - -! nested lock API functions - -subroutine omp_init_nest_lock_target (target_type, & - target_number, & - lock) & - bind (C, name = "omp_init_nest_lock_target") - import :: c_int, c_intptr_t - integer (kind=c_int), value :: target_type, target_number - integer (kind=c_intptr_t), value :: lock -end subroutine omp_init_nest_lock_target - -subroutine omp_destroy_nest_lock_target (target_type, & - target_number, & - lock) & - bind (C, name = "omp_destroy_nest_lock_target") - import :: c_int, c_intptr_t - integer (kind=c_int), value :: target_type, target_number - integer (kind=c_intptr_t), value :: lock -end subroutine omp_destroy_nest_lock_target - -subroutine omp_set_nest_lock_target (target_type, & - target_number, & - lock) & - bind (C, name = "omp_set_nest_lock_target") - import :: c_int, c_intptr_t - integer (kind=c_int), value :: target_type, target_number - integer (kind=c_intptr_t), value :: lock -end subroutine omp_set_nest_lock_target - -subroutine omp_unset_nest_lock_target (target_type, & - target_number, & - lock) & - bind (C, name = "omp_unset_nest_lock_target") - import :: c_int, c_intptr_t - integer (kind=c_int), value :: target_type, target_number - integer (kind=c_intptr_t), value :: lock -end subroutine omp_unset_nest_lock_target - -function omp_test_nest_lock_target (target_type, & - target_number, & - lock) & - bind (C, name = "omp_test_nest_lock_target") - import :: c_int, c_intptr_t - integer (kind=c_int) :: omp_test_nest_lock_target - integer (kind=c_int), value :: target_type, target_number - integer (kind=c_intptr_t), value :: lock -end function omp_test_nest_lock_target - -end interface -end module mic_lib diff --git a/liboffloadmic/runtime/offload.h b/liboffloadmic/runtime/offload.h deleted file mode 100644 index 4a329ba..0000000 --- a/liboffloadmic/runtime/offload.h +++ /dev/null @@ -1,565 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/* - * Include file for Offload API. - */ - -#ifndef OFFLOAD_H_INCLUDED -#define OFFLOAD_H_INCLUDED - -#ifdef __cplusplus -#if defined(LINUX) || defined(FREEBSD) -#include <bits/functexcept.h> -#endif -#endif - -#include <stddef.h> -#include <omp.h> - -#ifdef TARGET_WINNT -// <stdint.h> is incompatible on Windows. -typedef unsigned long long int uint64_t; -typedef signed long long int int64_t; -#else -#include <stdint.h> -#endif // TARGET_WINNT - -#ifdef __cplusplus -extern "C" { -#endif - -#define TARGET_ATTRIBUTE __declspec(target(mic)) - -/* - * The target architecture. - */ -typedef enum TARGET_TYPE { - TARGET_NONE, /* Undefine target */ - TARGET_HOST, /* Host used as target */ - TARGET_MIC /* MIC target */ -} TARGET_TYPE; - -/* - * The default target type. - */ -#define DEFAULT_TARGET_TYPE TARGET_MIC - -/* - * The default target number. - */ -#define DEFAULT_TARGET_NUMBER 0 - -/* - * Offload status. - */ -typedef enum { - OFFLOAD_SUCCESS = 0, - OFFLOAD_DISABLED, /* offload is disabled */ - OFFLOAD_UNAVAILABLE, /* card is not available */ - OFFLOAD_OUT_OF_MEMORY, /* not enough memory on device */ - OFFLOAD_PROCESS_DIED, /* target process has died */ - OFFLOAD_ERROR /* unspecified error */ -} _Offload_result; - -typedef struct { - _Offload_result result; /* result, see above */ - int device_number; /* device number */ - size_t data_sent; /* number of bytes sent to the target */ - size_t data_received; /* number of bytes received by host */ -} _Offload_status; - -typedef int64_t _Offload_stream; - -#define OFFLOAD_STATUS_INIT(x) \ - ((x).result = OFFLOAD_DISABLED) - -#define OFFLOAD_STATUS_INITIALIZER \ - { OFFLOAD_DISABLED, -1, 0, 0 } - -/* Offload runtime interfaces */ - -extern int _Offload_number_of_devices(void); -extern int _Offload_get_device_number(void); -extern int _Offload_get_physical_device_number(void); - -/* Offload stream runtime interfaces */ - -extern _Offload_stream _Offload_stream_create( - int device, // MIC device number - int number_of_cpus // Cores allocated to the stream -); - -extern int _Offload_stream_destroy( - int device, // MIC device number - _Offload_stream stream // stream handle -); - -extern int _Offload_stream_delete( - _Offload_stream handle // stream handle -); - -extern int _Offload_stream_completed( - int device, // MIC device number - _Offload_stream handle // stream handle -); - -extern int _Offload_device_streams_completed( - int device // MIC device number -); - -extern int _Offload_stream_is_empty( - _Offload_stream handle // stream handle -); - -/* - * _Offload_shared_malloc/free are only supported when offload is enabled - * else they are defined to malloc and free -*/ -#ifdef __INTEL_OFFLOAD -extern void* _Offload_shared_malloc(size_t size); -extern void _Offload_shared_free(void *ptr); -extern void* _Offload_shared_aligned_malloc(size_t size, size_t align); -extern void _Offload_shared_aligned_free(void *ptr); -#else -#include <malloc.h> -#define _Offload_shared_malloc(size) malloc(size) -#define _Offload_shared_free(ptr) free(ptr); -#if defined(_WIN32) -#define _Offload_shared_aligned_malloc(size, align) _aligned_malloc(size, align) -#define _Offload_shared_aligned_free(ptr) _aligned_free(ptr); -#else -#define _Offload_shared_aligned_malloc(size, align) memalign(align, size) -#define _Offload_shared_aligned_free(ptr) free(ptr); -#endif -#endif - - -extern int _Offload_signaled(int index, void *signal); -extern void _Offload_report(int val); -extern int _Offload_find_associated_mic_memory( - int target, - const void* cpu_addr, - void** cpu_base_addr, - uint64_t* buf_length, - void** mic_addr, - uint64_t* mic_buf_start_offset, - int* is_static -); - -/* OpenMP API */ - -extern void omp_set_default_device(int num) __GOMP_NOTHROW; -extern int omp_get_default_device(void) __GOMP_NOTHROW; -extern int omp_get_num_devices(void) __GOMP_NOTHROW; - -// OpenMP 4.5 APIs - -/*! \fn omp_get_initial_device - \brief Return the device id of the initial device. - \return Returns the device id of the initial device. -*/ -extern int omp_get_initial_device( - void -) __GOMP_NOTHROW; - -/*! \fn omp_target_alloc - \brief Allocate memory in the device data environment. - \param size Number of bytes to allocate. - \param device_num The device number on which to allocate. - \return Returns a pointer to the allocated memory. -*/ -extern void* omp_target_alloc( - size_t size, - int device_num -) __GOMP_NOTHROW; - -/*! \fn omp_target_free - \brief Free memory in the device data environment. - \param device_ptr Address of allocated device memory. - \param device_num The device number on which to free. -*/ -extern void omp_target_free( - void *device_ptr, - int device_num -) __GOMP_NOTHROW; - -/*! \fn omp_target_is_present - \brief Test whether a host pointer has corresponding storage on a device. - \param device_ptr Address of allocated device memory. - \param device_num The device number on which to test.. - \return true if storage is found, false otherwise. -*/ -extern int omp_target_is_present( - const void *ptr, - int device_num -) __GOMP_NOTHROW; - -/*! \fn omp_target_memcpy - \brief Copy memory between host/device pointers. - \param dst Address of destination memory. - \param src Address of source memory. - \param length Number of bytes to copy. - \param dst_offset Destination offset in bytes. - \param src_offset Source offset in bytes. - \param dst_device Destination device number. - \param src_device Source device number. - \return 0 on success, 1 otherwise. -*/ -extern int omp_target_memcpy( - void *dst, - const void *src, - size_t length, - size_t dst_offset, - size_t src_offset, - int dst_device, - int src_device -) __GOMP_NOTHROW; - -/*! \fn omp_target_memcpy_rect - \brief Copy a rectangular subsection from - \brief one multi-dimensional array to another. - \param dst Address of destination array. - \param src Address of source array. - \param element_size Number of bytes in each array element. - \param num_dims Number of dimensions. - \param volume Array of element counts to copy in each dimension. - \param dst_offsets Destination offsets array. - \param src_offsets Source offsets array. - \param dst_dims Destination array dimensions array. - \param src_dims Source array dimensions array. - \param dst_device Destination device number. - \param src_device Source device number. - \return 0 on success, 1 otherwise. -*/ -extern int omp_target_memcpy_rect( - void *dst, - const void *src, - size_t element_size, - int num_dims, - const size_t *volume, - const size_t *dst_offsets, - const size_t *src_offsets, - const size_t *dst_dimensions, - const size_t *src_dimensions, - int dst_device, - int src_device -) __GOMP_NOTHROW; - -/*! \fn omp_target_associate_ptr - \brief Map a device pointer to a host pointer. - \param host_ptr The host pointer. - \param device_ptr The device pointer. - \param size Number of bytes to map. - \param device_offset Offset on device of mapped memory. - \param device_num Device number. - \return 0 on success, 1 otherwise. -*/ -extern int omp_target_associate_ptr( - const void *host_ptr, - const void *device_ptr, - size_t size, - size_t device_offset, - int device_num -) __GOMP_NOTHROW; - -/*! \fn omp_target_disassociate_ptr - \brief Remove a host pointer to device pointer association. - \param ptr The host pointer to disassociate. - \param device_num Device number. - \return 0 on success, 1 otherwise. -*/ -extern int omp_target_disassociate_ptr( - const void *host_ptr, - int device_num -) __GOMP_NOTHROW; - -// End of OpenMP 4.5 APIs - -/* OpenMP API wrappers */ - -/* Set num_threads on target */ -extern void omp_set_num_threads_target( - TARGET_TYPE target_type, - int target_number, - int num_threads -); - -/* Get max_threads from target */ -extern int omp_get_max_threads_target( - TARGET_TYPE target_type, - int target_number -); - -/* Get num_procs from target */ -extern int omp_get_num_procs_target( - TARGET_TYPE target_type, - int target_number -); - -/* Set dynamic on target */ -extern void omp_set_dynamic_target( - TARGET_TYPE target_type, - int target_number, - int num_threads -); - -/* Get dynamic from target */ -extern int omp_get_dynamic_target( - TARGET_TYPE target_type, - int target_number -); - -/* Set nested on target */ -extern void omp_set_nested_target( - TARGET_TYPE target_type, - int target_number, - int nested -); - -/* Get nested from target */ -extern int omp_get_nested_target( - TARGET_TYPE target_type, - int target_number -); - -extern void omp_set_num_threads_target( - TARGET_TYPE target_type, - int target_number, - int num_threads -); - -extern int omp_get_max_threads_target( - TARGET_TYPE target_type, - int target_number -); - -extern int omp_get_num_procs_target( - TARGET_TYPE target_type, - int target_number -); - -extern void omp_set_dynamic_target( - TARGET_TYPE target_type, - int target_number, - int num_threads -); - -extern int omp_get_dynamic_target( - TARGET_TYPE target_type, - int target_number -); - -extern void omp_set_nested_target( - TARGET_TYPE target_type, - int target_number, - int num_threads -); - -extern int omp_get_nested_target( - TARGET_TYPE target_type, - int target_number -); - -extern void omp_set_schedule_target( - TARGET_TYPE target_type, - int target_number, - omp_sched_t kind, - int modifier -); - -extern void omp_get_schedule_target( - TARGET_TYPE target_type, - int target_number, - omp_sched_t *kind, - int *modifier -); - -/* lock API functions */ - -typedef struct { - omp_lock_t lock; -} omp_lock_target_t; - -extern void omp_init_lock_target( - TARGET_TYPE target_type, - int target_number, - omp_lock_target_t *lock -); - -extern void omp_destroy_lock_target( - TARGET_TYPE target_type, - int target_number, - omp_lock_target_t *lock -); - -extern void omp_set_lock_target( - TARGET_TYPE target_type, - int target_number, - omp_lock_target_t *lock -); - -extern void omp_unset_lock_target( - TARGET_TYPE target_type, - int target_number, - omp_lock_target_t *lock -); - -extern int omp_test_lock_target( - TARGET_TYPE target_type, - int target_number, - omp_lock_target_t *lock -); - -/* nested lock API functions */ - -typedef struct { - omp_nest_lock_t lock; -} omp_nest_lock_target_t; - -extern void omp_init_nest_lock_target( - TARGET_TYPE target_type, - int target_number, - omp_nest_lock_target_t *lock -); - -extern void omp_destroy_nest_lock_target( - TARGET_TYPE target_type, - int target_number, - omp_nest_lock_target_t *lock -); - -extern void omp_set_nest_lock_target( - TARGET_TYPE target_type, - int target_number, - omp_nest_lock_target_t *lock -); - -extern void omp_unset_nest_lock_target( - TARGET_TYPE target_type, - int target_number, - omp_nest_lock_target_t *lock -); - -extern int omp_test_nest_lock_target( - TARGET_TYPE target_type, - int target_number, - omp_nest_lock_target_t *lock -); - -#ifdef __cplusplus -} /* extern "C" */ - -/* Namespace for the shared_allocator. */ -namespace __offload { - /* This follows the specification for std::allocator. */ - /* Forward declaration of the class template. */ - template <typename T> - class shared_allocator; - - /* Specialization for shared_allocator<void>. */ - template <> - class shared_allocator<void> { - public: - typedef void *pointer; - typedef const void *const_pointer; - typedef void value_type; - template <class U> struct rebind { typedef shared_allocator<U> other; }; - }; - - /* Definition of shared_allocator<T>. */ - template <class T> - class shared_allocator { - public: - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef T *pointer; - typedef const T *const_pointer; - typedef T &reference; - typedef const T &const_reference; - typedef T value_type; - template <class U> struct rebind { typedef shared_allocator<U> other; }; - shared_allocator() throw() { } - shared_allocator(const shared_allocator&) throw() { } - template <class U> shared_allocator(const shared_allocator<U>&) throw() { } - ~shared_allocator() throw() { } - pointer address(reference x) const { return &x; } - const_pointer address(const_reference x) const { return &x; } - pointer allocate( - size_type, shared_allocator<void>::const_pointer hint = 0); - void deallocate(pointer p, size_type n); - size_type max_size() const throw() { - return size_type(-1)/sizeof(T); - } /* max_size */ - void construct(pointer p, const T& arg) { - ::new (p) T(arg); - } /* construct */ - void destroy(pointer p) { - p->~T(); - } /* destroy */ - }; - - /* Definition for allocate. */ - template <class T> - typename shared_allocator<T>::pointer - shared_allocator<T>::allocate(shared_allocator<T>::size_type s, - shared_allocator<void>::const_pointer) { - /* Allocate from shared memory. */ - void *ptr = _Offload_shared_malloc(s*sizeof(T)); -#if (defined(_WIN32) || defined(_WIN64)) /* Windows */ - if (ptr == 0) throw std::bad_alloc(); -#else - if (ptr == 0) std::__throw_bad_alloc(); -#endif - return static_cast<pointer>(ptr); - } /* allocate */ - - template <class T> - void shared_allocator<T>::deallocate(pointer p, - shared_allocator<T>::size_type) { - /* Free the shared memory. */ - _Offload_shared_free(p); - } /* deallocate */ - - template <typename _T1, typename _T2> - inline bool operator==(const shared_allocator<_T1> &, - const shared_allocator<_T2> &) throw() { - return true; - } /* operator== */ - - template <typename _T1, typename _T2> - inline bool operator!=(const shared_allocator<_T1> &, - const shared_allocator<_T2> &) throw() { - return false; - } /* operator!= */ -} /* __offload */ -#endif /* __cplusplus */ - -#endif /* OFFLOAD_H_INCLUDED */ diff --git a/liboffloadmic/runtime/offload_common.cpp b/liboffloadmic/runtime/offload_common.cpp deleted file mode 100644 index af569ae..0000000 --- a/liboffloadmic/runtime/offload_common.cpp +++ /dev/null @@ -1,190 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#if defined(LINUX) || defined(FREEBSD) -#include <mm_malloc.h> -#endif - -#include "offload_common.h" - -// The debug routines - -#if OFFLOAD_DEBUG > 0 - -void __dump_bytes( - int trace_level, - const void *data, - int len -) -{ - if (console_enabled > trace_level) { - const uint8_t *arr = (const uint8_t*) data; - char buffer[4096]; - char *bufferp; - int count = 0; - - bufferp = buffer; - while (len--) { - sprintf(bufferp, "%02x", *arr++); - bufferp += 2; - count++; - if ((count&3) == 0) { - sprintf(bufferp, " "); - bufferp++; - } - if ((count&63) == 0) { - OFFLOAD_DEBUG_TRACE(trace_level, "%s\n", buffer); - bufferp = buffer; - count = 0; - } - } - if (count) { - OFFLOAD_DEBUG_TRACE(trace_level, "%s\n", buffer); - } - } -} -#endif // OFFLOAD_DEBUG - -// The Marshaller and associated routines - -void Marshaller::send_data( - const void *data, - int64_t length -) -{ - OFFLOAD_DEBUG_TRACE(2, "send_data(%p, %lld)\n", - data, length); - memcpy(buffer_ptr, data, (size_t)length); - buffer_ptr += length; - tfr_size += length; -} - -void Marshaller::receive_data( - void *data, - int64_t length -) -{ - OFFLOAD_DEBUG_TRACE(2, "receive_data(%p, %lld)\n", - data, length); - memcpy(data, buffer_ptr, (size_t)length); - buffer_ptr += length; - tfr_size += length; -} - -// Send function pointer -void Marshaller::send_func_ptr( - const void* data -) -{ - const char* name; - size_t length; - - if (data != 0) { - name = __offload_funcs.find_name(data); - if (name == 0) { -#if OFFLOAD_DEBUG > 0 - if (console_enabled > 2) { - __offload_funcs.dump(); - } -#endif // OFFLOAD_DEBUG > 0 - - LIBOFFLOAD_ERROR(c_send_func_ptr, data); - exit(1); - } - length = strlen(name) + 1; - } - else { - name = ""; - length = 1; - } - - memcpy(buffer_ptr, name, length); - buffer_ptr += length; - tfr_size += length; -} - -// Receive function pointer -void Marshaller::receive_func_ptr( - const void** data -) -{ - const char* name; - size_t length; - - name = (const char*) buffer_ptr; - if (name[0] != '\0') { - *data = __offload_funcs.find_addr(name); - if (*data == 0) { -#if OFFLOAD_DEBUG > 0 - if (console_enabled > 2) { - __offload_funcs.dump(); - } -#endif // OFFLOAD_DEBUG > 0 - - LIBOFFLOAD_ERROR(c_receive_func_ptr, name); - exit(1); - } - length = strlen(name) + 1; - } - else { - *data = 0; - length = 1; - } - - buffer_ptr += length; - tfr_size += length; -} - -// End of the Marshaller and associated routines - -extern void *OFFLOAD_MALLOC( - size_t size, - size_t align -) -{ - void *ptr; - int err; - - OFFLOAD_DEBUG_TRACE(2, "%s(%lld, %lld)\n", __func__, size, align); - - if (align < sizeof(void*)) { - align = sizeof(void*); - } - - ptr = _mm_malloc(size, align); - if (ptr == NULL) { - LIBOFFLOAD_ERROR(c_offload_malloc, size, align); - exit(1); - } - - OFFLOAD_DEBUG_TRACE(2, "%s returned %p\n", __func__, ptr); - - return ptr; -} diff --git a/liboffloadmic/runtime/offload_common.h b/liboffloadmic/runtime/offload_common.h deleted file mode 100644 index 445d47c..0000000 --- a/liboffloadmic/runtime/offload_common.h +++ /dev/null @@ -1,553 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/*! \file - \brief The parts of the runtime library common to host and target -*/ - -#ifndef OFFLOAD_COMMON_H_INCLUDED -#define OFFLOAD_COMMON_H_INCLUDED - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <memory.h> - -#include "offload.h" -#include "offload_table.h" -#include "offload_trace.h" -#include "offload_timer.h" -#include "offload_util.h" -#include "cean_util.h" -#include "dv_util.h" -#include "liboffload_error_codes.h" - -#include <stdarg.h> - -// Use secure getenv if it's supported -#ifdef HAVE_SECURE_GETENV - #define getenv(x) secure_getenv(x) -#elif HAVE___SECURE_GETENV - #define getenv(x) __secure_getenv(x) -#endif - -// Offload Library versioning -DLL_LOCAL extern int offload_version; -DLL_LOCAL extern int offload_version_count; - -// The debug routines - -// Host console and file logging -DLL_LOCAL extern int console_enabled; -DLL_LOCAL extern int offload_report_level; - - -DLL_LOCAL extern const char *prefix; -DLL_LOCAL extern int offload_number; -#if !HOST_LIBRARY -DLL_LOCAL extern int mic_index; -#define OFFLOAD_DO_TRACE (offload_report_level == 3) -#else -#define OFFLOAD_DO_TRACE (offload_report_enabled && (offload_report_level == 3)) -#endif - -#if HOST_LIBRARY -DLL_LOCAL void Offload_Report_Prolog(OffloadHostTimerData* timer_data); -DLL_LOCAL void Offload_Report_Epilog(OffloadHostTimerData* timer_data); -DLL_LOCAL void offload_report_free_data(OffloadHostTimerData * timer_data); -DLL_LOCAL void Offload_Timer_Print(void); - -#ifndef TARGET_WINNT -#define OFFLOAD_DEBUG_INCR_OFLD_NUM() \ - __sync_add_and_fetch(&offload_number, 1) -#else -#define OFFLOAD_DEBUG_INCR_OFLD_NUM() \ - _InterlockedIncrement(reinterpret_cast<long*>(&offload_number)) -#endif - -#define OFFLOAD_DEBUG_PRINT_TAG_PREFIX() \ - printf("%s: ", prefix); - -#define OFFLOAD_DEBUG_PRINT_PREFIX() \ - printf("%s: ", prefix); -#else -#define OFFLOAD_DEBUG_PRINT_PREFIX() \ - printf("%s%d: ", prefix, mic_index); -#endif // HOST_LIBRARY - -#define OFFLOAD_TRACE(trace_level, ...) \ - if (console_enabled >= trace_level) { \ - OFFLOAD_DEBUG_PRINT_PREFIX(); \ - printf(__VA_ARGS__); \ - fflush(NULL); \ - } - -#if OFFLOAD_DEBUG > 0 - -#define OFFLOAD_DEBUG_TRACE(level, ...) \ - OFFLOAD_TRACE(level, __VA_ARGS__) - -#define OFFLOAD_REPORT(level, offload_number, stage, ...) \ - if (OFFLOAD_DO_TRACE) { \ - offload_stage_print(stage, offload_number, __VA_ARGS__); \ - fflush(NULL); \ - } - -#define OFFLOAD_DEBUG_TRACE_1(level, offload_number, stage, ...) \ - if (OFFLOAD_DO_TRACE) { \ - offload_stage_print(stage, offload_number, __VA_ARGS__); \ - fflush(NULL); \ - } \ - if (!OFFLOAD_DO_TRACE) { \ - OFFLOAD_TRACE(level, __VA_ARGS__) \ - } - -#define OFFLOAD_DEBUG_DUMP_BYTES(level, a, b) \ - __dump_bytes(level, a, b) - -DLL_LOCAL extern void __dump_bytes( - int level, - const void *data, - int len -); - -#else - -#define OFFLOAD_DEBUG_LOG(level, ...) -#define OFFLOAD_DEBUG_DUMP_BYTES(level, a, b) - -#endif - -// Runtime interface - -#define OFFLOAD_PREFIX(a) __offload_##a - -#define OFFLOAD_MALLOC OFFLOAD_PREFIX(malloc) -#define OFFLOAD_FREE(a) _mm_free(a) - -// Forward functions - -extern void *OFFLOAD_MALLOC(size_t size, size_t align); - -// The Marshaller - -// Flags describing an offload - -//! Flags describing an offload -union OffloadFlags{ - uint32_t flags; - struct { - uint32_t fortran_traceback : 1; //!< Fortran traceback requested - uint32_t omp_async : 1; //!< OpenMP asynchronous offload - } bits; -}; - -//! \enum Indicator for the type of entry on an offload item list. -enum OffloadItemType { - c_data = 1, //!< Plain data - c_data_ptr, //!< Pointer data - c_func_ptr, //!< Function pointer - c_void_ptr, //!< void* - c_string_ptr, //!< C string - c_dv, //!< Dope vector variable - c_dv_data, //!< Dope-vector data - c_dv_data_slice, //!< Dope-vector data's slice - c_dv_ptr, //!< Dope-vector variable pointer - c_dv_ptr_data, //!< Dope-vector pointer data - c_dv_ptr_data_slice,//!< Dope-vector pointer data's slice - c_cean_var, //!< CEAN variable - c_cean_var_ptr, //!< Pointer to CEAN variable - c_data_ptr_array, //!< Pointer to data pointer array - c_extended_type, //!< Is used to extend OffloadItemType - //!< Actual OffloadItemType is in the - //!< structure VarDescExtendedType - c_func_ptr_array, //!< Pointer to function pointer array - c_void_ptr_array, //!< Pointer to void* pointer array - c_string_ptr_array, //!< Pointer to char* pointer array - c_data_ptr_ptr, //!< Pointer to pointer to data (struct member) - c_func_ptr_ptr, //!< Pointer to pointer to function (struct member) - c_void_ptr_ptr, //!< Pointer to pointer to void* (struct member) - c_string_ptr_ptr, //!< Pointer to pointer to string (struct member) - c_cean_var_ptr_ptr //!< Pointer to pointer to cean var (struct member) -}; - -#define TYPE_IS_PTR_TO_PTR(t) ((t) == c_string_ptr_ptr || \ - (t) == c_data_ptr_ptr || \ - (t) == c_func_ptr_ptr || \ - (t) == c_void_ptr_ptr || \ - (t) == c_cean_var_ptr_ptr) - -#define VAR_TYPE_IS_PTR(t) ((t) == c_string_ptr || \ - (t) == c_data_ptr || \ - (t) == c_cean_var_ptr || \ - (t) == c_dv_ptr || \ - TYPE_IS_PTR_TO_PTR(t)) - -#define VAR_TYPE_IS_SCALAR(t) ((t) == c_data || \ - (t) == c_void_ptr || \ - (t) == c_cean_var || \ - (t) == c_dv) - -#define VAR_TYPE_IS_DV_DATA(t) ((t) == c_dv_data || \ - (t) == c_dv_ptr_data) - -#define VAR_TYPE_IS_DV_DATA_SLICE(t) ((t) == c_dv_data_slice || \ - (t) == c_dv_ptr_data_slice) - -//! \enum Specify direction to copy offloaded variable. -enum OffloadParameterType { - c_parameter_unknown = -1, //!< Unknown clause - c_parameter_nocopy, //!< Variable listed in "nocopy" clause - c_parameter_in, //!< Variable listed in "in" clause - c_parameter_out, //!< Variable listed in "out" clause - c_parameter_inout //!< Variable listed in "inout" clause -}; - - -//! Flags describing an offloaded variable -union varDescFlags { - struct { - //! source variable has persistent storage - uint32_t is_static : 1; - //! destination variable has persistent storage - uint32_t is_static_dstn : 1; - //! has length for c_dv && c_dv_ptr - uint32_t has_length : 1; - //! persisted local scalar is in stack buffer - uint32_t is_stack_buf : 1; - //! "targetptr" modifier used - uint32_t targetptr : 1; - //! "preallocated" modifier used - uint32_t preallocated : 1; - //! pointer to a pointer array - uint32_t is_pointer : 1; - - //! buffer address is sent in data - uint32_t sink_addr : 1; - //! alloc displacement is sent in data - uint32_t alloc_disp : 1; - //! source data is noncontiguous - uint32_t is_noncont_src : 1; - //! destination data is noncontiguous - uint32_t is_noncont_dst : 1; - - //! "OpenMP always" modifier used - uint32_t always_copy : 1; - //! "OpenMP delete" modifier used - uint32_t always_delete : 1; - //! structured data is noncontiguous - uint32_t is_non_cont_struct : 1; - //! CPU memory pinning/unpinning operation - uint32_t pin : 1; - //! Pointer to device memory - uint32_t is_device_ptr : 1; - //! Hostpointer with associated device pointer - uint32_t use_device_ptr : 1; - }; - uint32_t bits; -}; - -//! An Offload Variable descriptor -struct VarDesc { - //! OffloadItemTypes of source and destination - union { - struct { - uint8_t dst : 4; //!< OffloadItemType of destination - uint8_t src : 4; //!< OffloadItemType of source - }; - uint8_t bits; - } type; - - //! OffloadParameterType that describes direction of data transfer - union { - struct { - uint8_t in : 1; //!< Set if IN or INOUT - uint8_t out : 1; //!< Set if OUT or INOUT - }; - uint8_t bits; - } direction; - - uint8_t alloc_if; //!< alloc_if modifier value - uint8_t free_if; //!< free_if modifier value - uint32_t align; //!< MIC alignment requested for pointer data - //! Not used by compiler; set to 0 - /*! Used by runtime as offset to data from start of MIC buffer */ - uint32_t mic_offset; - //! Flags describing this variable - varDescFlags flags; - //! Not used by compiler; set to 0 - /*! Used by runtime as offset to base from data stored in a buffer */ - int64_t offset; - //! Element byte-size of data to be transferred - /*! For dope-vector, the size of the dope-vector */ - int64_t size; - union { - //! Set to 0 for array expressions and dope-vectors - /*! Set to 1 for scalars */ - /*! Set to value of length modifier for pointers */ - int64_t count; - //! Displacement not used by compiler - int64_t disp; - }; - - //! This field not used by OpenMP 4.0 - /*! The alloc section expression in #pragma offload */ - union { - void *alloc; - int64_t ptr_arr_offset; - }; - - //! This field not used by OpenMP 4.0 - /*! The into section expression in #pragma offload */ - /*! For c_data_ptr_array this is the into ptr array */ - void *into; - - //! For an ordinary variable, address of the variable - /*! For c_cean_var (C/C++ array expression), - pointer to arr_desc, which is an array descriptor. */ - /*! For c_data_ptr_array (array of data pointers), - pointer to ptr_array_descriptor, - which is a descriptor for pointer array transfers. */ - void *ptr; -}; - -//! Auxiliary struct used when -g is enabled that holds variable names -struct VarDesc2 { - const char *sname; //!< Source name - const char *dname; //!< Destination name (when "into" is used) -}; - -/*! When the OffloadItemType is c_data_ptr_array - the ptr field of the main descriptor points to this struct. */ -/*! The type in VarDesc1 merely says c_cean_data_ptr, but the pointer - type can be c_data_ptr, c_func_ptr, c_void_ptr, or c_string_ptr. - Therefore the actual pointer type is in the flags field of VarDesc3. */ -/*! If flag_align_is_array/flag_alloc_if_is_array/flag_free_if_is_array - is 0 then alignment/alloc_if/free_if are specified in VarDesc1. */ -/*! If flag_align_is_array/flag_alloc_if_is_array/flag_free_if_is_array - is 1 then align_array/alloc_if_array/free_if_array specify - the set of alignment/alloc_if/free_if values. */ -/*! For the other fields, if neither the scalar nor the array flag - is set, then that modifier was not specified. If the bits are set - they specify which modifier was set and whether it was a - scalar or an array expression. */ -struct VarDesc3 -{ - void *ptr_array; //!< Pointer to arr_desc of array of pointers - void *align_array; //!< Scalar value or pointer to arr_desc - void *alloc_if_array; //!< Scalar value or pointer to arr_desc - void *free_if_array; //!< Scalar value or pointer to arr_desc - void *extent_start; //!< Scalar value or pointer to arr_desc - void *extent_elements; //!< Scalar value or pointer to arr_desc - void *into_start; //!< Scalar value or pointer to arr_desc - void *into_elements; //!< Scalar value or pointer to arr_desc - void *alloc_start; //!< Scalar value or pointer to arr_desc - void *alloc_elements; //!< Scalar value or pointer to arr_desc - /*! Flags that describe the pointer type and whether each field - is a scalar value or an array expression. */ - /*! First 6 bits are pointer array element type: - c_data_ptr, c_func_ptr, c_void_ptr, c_string_ptr */ - /*! Then single bits specify: */ - /*! align_array is an array */ - /*! alloc_if_array is an array */ - /*! free_if_array is an array */ - /*! extent_start is a scalar expression */ - /*! extent_start is an array expression */ - /*! extent_elements is a scalar expression */ - /*! extent_elements is an array expression */ - /*! into_start is a scalar expression */ - /*! into_start is an array expression */ - /*! into_elements is a scalar expression */ - /*! into_elements is an array expression */ - /*! alloc_start is a scalar expression */ - /*! alloc_start is an array expression */ - /*! alloc_elements is a scalar expression */ - /*! alloc_elements is an array expression */ - uint32_t array_fields; -}; -const int flag_align_is_array = 6; -const int flag_alloc_if_is_array = 7; -const int flag_free_if_is_array = 8; -const int flag_extent_start_is_scalar = 9; -const int flag_extent_start_is_array = 10; -const int flag_extent_elements_is_scalar = 11; -const int flag_extent_elements_is_array = 12; -const int flag_into_start_is_scalar = 13; -const int flag_into_start_is_array = 14; -const int flag_into_elements_is_scalar = 15; -const int flag_into_elements_is_array = 16; -const int flag_alloc_start_is_scalar = 17; -const int flag_alloc_start_is_array = 18; -const int flag_alloc_elements_is_scalar = 19; -const int flag_alloc_elements_is_array = 20; - -//! Extended Variable Descriptor. Since VarDesc uses 16 bits for -//! OffloadItemType, we have exceeded that limit, So any Type -//! greater than 15 will have Type set in VarDesc as c_extended_type -//! and this structure will be used to represent those Types. -typedef struct VarDescExtendedType { - - // Represents overflow of OffloadItemType - uint32_t extended_type; - - //! For extended_type - //! address of the variable - //! Future Types can point to other descriptors - void *ptr; -} VarDescExtendedType; - -// The Marshaller -class Marshaller -{ -private: - // Start address of buffer - char *buffer_start; - - // Current pointer within buffer - char *buffer_ptr; - - // Physical size of data sent (including flags) - long long buffer_size; - - // User data sent/received - long long tfr_size; - -public: - // Constructor - Marshaller() : - buffer_start(0), buffer_ptr(0), - buffer_size(0), tfr_size(0) - { - } - - // Return count of user data sent/received - long long get_tfr_size() const - { - return tfr_size; - } - - // Return pointer to buffer - char *get_buffer_start() const - { - return buffer_start; - } - - // Return current size of data in buffer - long long get_buffer_size() const - { - return buffer_size; - } - - // Set buffer pointer - void init_buffer( - char *d, - long long s - ) - { - buffer_start = buffer_ptr = d; - buffer_size = s; - } - - // Send data - void send_data( - const void *data, - int64_t length - ); - - // Receive data - void receive_data( - void *data, - int64_t length - ); - - // Send function pointer - void send_func_ptr( - const void* data - ); - - // Receive function pointer - void receive_func_ptr( - const void** data - ); -}; - -// End of the Marshaller - -// The offloaded function descriptor. -// Sent from host to target to specify which function to run. -// Also, sets console and file tracing levels. -struct FunctionDescriptor -{ - // Input data size. - long long in_datalen; - - // Output data size. - long long out_datalen; - - // Whether trace is requested on console. - // A value of 1 produces only function name and data sent/received. - // Values > 1 produce copious trace information. - uint8_t console_enabled; - - // Flag controlling timing on the target side. - // Values > 0 enable timing on sink. - uint8_t timer_enabled; - - int offload_report_level; - int offload_number; - - // number of variable descriptors - int vars_num; - - // inout data offset if data is passed as misc/return data - // otherwise it should be zero. - int data_offset; - - // The name of the offloaded function - char data[]; -}; - -// typedef OFFLOAD. -// Pointer to OffloadDescriptor. -typedef struct OffloadDescriptor *OFFLOAD; - -// Use for setting affinity of a stream -enum affinity_type { - affinity_compact, - affinity_scatter -}; -struct affinity_spec { - uint64_t sink_mask[16]; - int affinity_type; - int num_cores; - int num_threads; -}; - -#endif // OFFLOAD_COMMON_H_INCLUDED diff --git a/liboffloadmic/runtime/offload_engine.cpp b/liboffloadmic/runtime/offload_engine.cpp deleted file mode 100644 index b2de56c..0000000 --- a/liboffloadmic/runtime/offload_engine.cpp +++ /dev/null @@ -1,1128 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#include "offload_engine.h" -#include <signal.h> -#include <errno.h> -#include <sys/stat.h> -#include <sys/types.h> - -#include <algorithm> -#include <vector> - -#include "offload_host.h" -#include "offload_table.h" -#include "offload_iterator.h" - -#if defined(HOST_WINNT) -#define PATH_SEPARATOR ";" -#else -#define PATH_SEPARATOR ":" -#endif - -// Static members of Stream class must be described somewhere. -// This members describe the list of all streams defined in programm -// via call to _Offload_stream_create. -uint64_t Stream::m_streams_count = 0; -StreamMap Stream::all_streams; -mutex_t Stream::m_stream_lock; -char* mic_library_path = 0; - -const char* Engine::m_func_names[Engine::c_funcs_total] = -{ - "server_compute", -#ifdef MYO_SUPPORT - "server_myoinit", - "server_myofini", -#endif // MYO_SUPPORT - "server_init", - "server_var_table_size", - "server_var_table_copy", - "server_set_stream_affinity" -}; - -// Symbolic representation of system signals. Fix for CQ233593 -const char* Engine::c_signal_names[Engine::c_signal_max] = -{ - "Unknown SIGNAL", - "SIGHUP", /* 1, Hangup (POSIX). */ - "SIGINT", /* 2, Interrupt (ANSI). */ - "SIGQUIT", /* 3, Quit (POSIX). */ - "SIGILL", /* 4, Illegal instruction (ANSI). */ - "SIGTRAP", /* 5, Trace trap (POSIX). */ - "SIGABRT", /* 6, Abort (ANSI). */ - "SIGBUS", /* 7, BUS error (4.2 BSD). */ - "SIGFPE", /* 8, Floating-point exception (ANSI). */ - "SIGKILL", /* 9, Kill, unblockable (POSIX). */ - "SIGUSR1", /* 10, User-defined signal 1 (POSIX). */ - "SIGSEGV", /* 11, Segmentation violation (ANSI). */ - "SIGUSR2", /* 12, User-defined signal 2 (POSIX). */ - "SIGPIPE", /* 13, Broken pipe (POSIX). */ - "SIGALRM", /* 14, Alarm clock (POSIX). */ - "SIGTERM", /* 15, Termination (ANSI). */ - "SIGSTKFLT", /* 16, Stack fault. */ - "SIGCHLD", /* 17, Child status has changed (POSIX). */ - "SIGCONT", /* 18, Continue (POSIX). */ - "SIGSTOP", /* 19, Stop, unblockable (POSIX). */ - "SIGTSTP", /* 20, Keyboard stop (POSIX). */ - "SIGTTIN", /* 21, Background read from tty (POSIX). */ - "SIGTTOU", /* 22, Background write to tty (POSIX). */ - "SIGURG", /* 23, Urgent condition on socket (4.2 BSD). */ - "SIGXCPU", /* 24, CPU limit exceeded (4.2 BSD). */ - "SIGXFSZ", /* 25, File size limit exceeded (4.2 BSD). */ - "SIGVTALRM", /* 26, Virtual alarm clock (4.2 BSD). */ - "SIGPROF", /* 27, Profiling alarm clock (4.2 BSD). */ - "SIGWINCH", /* 28, Window size change (4.3 BSD, Sun). */ - "SIGIO", /* 29, I/O now possible (4.2 BSD). */ - "SIGPWR", /* 30, Power failure restart (System V). */ - "SIGSYS" /* 31, Bad system call. */ -}; - -void Engine::init(void) -{ - if (!m_ready) { - mutex_locker_t locker(m_lock); - - if (!m_ready) { - // start process if not done yet - if (m_process == 0) { - init_process(); - } - - // load penging images - load_libraries(); - - // and (re)build pointer table - init_ptr_data(); - - // it is ready now - m_ready = true; - - // Inform the debugger - if (__dbg_is_attached) { - __dbg_target_so_loaded(); - } - } - } -} - -void Engine::print_stream_cpu_list(const char * str) -{ - int count = 0; - char buffer[1024]; - CpuEl* cpu_el = m_cpu_head; - - OFFLOAD_DEBUG_TRACE(3, - "%s : cpu list as Index(Count) for the streams is :\n", str); - buffer[0] = 0; - for (int i = 0; i < m_num_threads; i++) { - cpu_el = m_cpus + i; - if (m_assigned_cpus == 0 || (*m_assigned_cpus)[i]) { - count++; - sprintf(buffer + strlen(buffer), "%d(%d) ", CPU_INDEX(cpu_el), cpu_el->count); - if (count % 20 == 0) { - OFFLOAD_DEBUG_TRACE(3, "%s\n", buffer); - buffer[0] = 0; - } - } - } - if (count % 20 != 0) { - OFFLOAD_DEBUG_TRACE(3, "%s\n", buffer); - } -} - -void Engine::init_process(void) -{ - COIENGINE engine; - COIRESULT res; - const char **environ; - char buf[4096]; // For exe path name - char* mic_device_main = 0; - - // create environment for the target process - environ = (const char**) mic_env_vars.create_environ_for_card(m_index); - if (environ != 0) { - for (const char **p = environ; *p != 0; p++) { - OFFLOAD_DEBUG_TRACE(3, "Env Var for card %d: %s\n", m_index, *p); - } - } - - // Create execution context in the specified device - OFFLOAD_DEBUG_TRACE(2, "Getting device %d (engine %d) handle\n", m_index, - m_physical_index); - res = COI::EngineGetHandle(COI_ISA_MIC, m_physical_index, &engine); - check_result(res, c_get_engine_handle, m_index, res); - - // Get engine info on threads and cores. - // The values of core number and thread number will be used later at stream - // creation by call to _Offload_stream_create(device,number_of_cpus). - - COI_ENGINE_INFO engine_info; - - res = COI::EngineGetInfo(engine, sizeof(COI_ENGINE_INFO), &engine_info); - check_result(res, c_get_engine_info, m_index, res); - if (mic_library_path == 0 ) { - if (engine_info.ISA == COI_DEVICE_KNC) { - mic_library_path = knc_library_path; - } - else if (engine_info.ISA == COI_DEVICE_KNL) { - mic_library_path = knl_library_path; - } - else { - LIBOFFLOAD_ERROR(c_unknown_mic_device_type); - } - } - - // m_cpus is the list of all available threads. - // At the begining all threads made available through OFFLOAD_DEVICES - // or all threads existed at the engine if OFFLOAD_DEVICES isn't set. - // m_cpu_head points to the head of the m_cpus list. - // m_cpus is ordered by number of streams using the thread. - // m_cpu_head points to the least used thread. - // After creating and destroying a stream the m_cpus list must be fixed - // to be ordered. - - m_cpus = (CpuEl*)malloc(engine_info.NumThreads * sizeof(CpuEl)); - if (m_cpus == NULL) - LIBOFFLOAD_ERROR(c_malloc); - memset(m_cpus, 0, engine_info.NumThreads * sizeof(CpuEl)); - CpuEl* prev_cpu = NULL; - - for (int i = 0; i < engine_info.NumThreads; i++) { - if (m_assigned_cpus == 0 || (*m_assigned_cpus)[i]) { - if (prev_cpu) { - prev_cpu->next = m_cpus + i; - } - else { - m_cpu_head = m_cpus + i; - } - m_cpus[i].prev = prev_cpu; - m_cpus[i].count = 0; - prev_cpu = m_cpus + i; - } - } - - // The following values will be used at pipeline creation for streams - m_num_cores = engine_info.NumCores; - m_num_threads = engine_info.NumThreads; - - print_stream_cpu_list("init_process"); - - // Check if OFFLOAD_DMA_CHANNEL_COUNT is set to 2 - // Only the value 2 is supported in 16.0 - if (mic_dma_channel_count == 2) { - if (COI::ProcessConfigureDMA) { - // Set DMA channels using COI API - COI::ProcessConfigureDMA(2, COI::DMA_MODE_READ_WRITE); - } - else { - // Set environment variable COI_DMA_CHANNEL_COUNT - // use putenv instead of setenv as Windows has no setenv. - // Note: putenv requires its argument can't be freed or modified. - // So no free after call to putenv or elsewhere. - char * env_var = strdup("COI_DMA_CHANNEL_COUNT=2"); - if (env_var == NULL) - LIBOFFLOAD_ERROR(c_malloc); - putenv(env_var); - } - } - - // Target executable is not available then use compiler provided offload_main - if (__target_exe == 0) { - // find target executable to be used if main application is not an - // offload build application. - const char *base_name = "offload_main"; - if (mic_library_path != 0) { - char *buf = strdup(mic_library_path); - if (buf == NULL) - LIBOFFLOAD_ERROR(c_malloc); - char *try_name = (char*) alloca(strlen(mic_library_path) + - strlen(base_name) + 2); - char *dir, *ptr; - - for (dir = strtok_r(buf, PATH_SEPARATOR, &ptr); dir != 0; - dir = strtok_r(0, PATH_SEPARATOR, &ptr)) { - // compose a full path - sprintf(try_name, "%s/%s", dir, base_name); - - // check if such file exists - struct stat st; - if (stat(try_name, &st) == 0 && S_ISREG(st.st_mode)) { - mic_device_main = strdup(try_name); - if (mic_device_main == NULL) - LIBOFFLOAD_ERROR(c_malloc); - break; - } - } - free(buf); - } - if (mic_device_main == 0) { - LIBOFFLOAD_ERROR(c_report_no_target_exe, "offload_main"); - exit(1); - } - - OFFLOAD_DEBUG_TRACE(2, - "Loading target executable %s\n",mic_device_main); - - res = COI::ProcessCreateFromFile( - engine, // in_Engine - mic_device_main, // in_pBinaryName - 0, // in_Argc - 0, // in_ppArgv - environ == 0, // in_DupEnv - environ, // in_ppAdditionalEnv - mic_proxy_io, // in_ProxyActive - mic_proxy_fs_root, // in_ProxyfsRoot - mic_buffer_size, // in_BufferSpace - mic_library_path, // in_LibrarySearchPath - &m_process // out_pProcess - ); - } - else { - // Target executable should be available by the time when we - // attempt to initialize the device - - // Need the full path of the FAT exe for VTUNE - { -#ifndef TARGET_WINNT - ssize_t len = readlink("/proc/self/exe", buf,1000); -#else - int len = GetModuleFileName(NULL, buf,1000); -#endif // TARGET_WINNT - if (len == -1) { - LIBOFFLOAD_ERROR(c_report_no_host_exe); - exit(1); - } - else if (len > 999) { - LIBOFFLOAD_ERROR(c_report_path_buff_overflow); - exit(1); - } - buf[len] = '\0'; - } - - OFFLOAD_DEBUG_TRACE(2, - "Loading target executable \"%s\" from %p, size %lld, host file %s\n", - __target_exe->name, __target_exe->data, __target_exe->size, - buf); - - res = COI::ProcessCreateFromMemory( - engine, // in_Engine - __target_exe->name, // in_pBinaryName - __target_exe->data, // in_pBinaryBuffer - __target_exe->size, // in_BinaryBufferLength, - 0, // in_Argc - 0, // in_ppArgv - environ == 0, // in_DupEnv - environ, // in_ppAdditionalEnv - mic_proxy_io, // in_ProxyActive - mic_proxy_fs_root, // in_ProxyfsRoot - mic_buffer_size, // in_BufferSpace - mic_library_path, // in_LibrarySearchPath - buf, // in_FileOfOrigin - -1, // in_FileOfOriginOffset use -1 to indicate to - // COI that is is a FAT binary - &m_process // out_pProcess - ); - } - check_result(res, c_process_create, m_index, res); - - if ((mic_4k_buffer_size != 0) || (mic_2m_buffer_size !=0)) { - // available only in MPSS 4.2 and greater - if (COI::ProcessSetCacheSize != 0 ) { - int flags; - // Need compiler to use MPSS 3.2 or greater to get these - // definition so currently hardcoding it - // COI_CACHE_ACTION_GROW_NOW && COI_CACHE_MODE_ONDEMAND_SYNC; - flags = 0x00020002; - res = COI::ProcessSetCacheSize( - m_process, // in_Process - mic_2m_buffer_size, // in_HugePagePoolSize - flags, // inHugeFlags - mic_4k_buffer_size, // in_SmallPagePoolSize - flags, // inSmallFlags - 0, // in_NumDependencies - 0, // in_pDependencies - 0 // out_PCompletion - ); - OFFLOAD_DEBUG_TRACE(2, - "Reserve target buffers 4K pages = %d 2M pages = %d\n", - mic_4k_buffer_size, mic_2m_buffer_size); - check_result(res, c_process_set_cache_size, m_index, res); - } - else { - OFFLOAD_DEBUG_TRACE(2, - "Reserve target buffers not supported in current MPSS\n"); - } - } - - // get function handles - res = COI::ProcessGetFunctionHandles(m_process, c_funcs_total, - m_func_names, m_funcs); - check_result(res, c_process_get_func_handles, m_index, res); - - // initialize device side - pid_t pid = init_device(); - - // For IDB - if (__dbg_is_attached) { - // TODO: we have in-memory executable now. - // Check with IDB team what should we provide them now? - if (__target_exe == 0) { - strcpy(__dbg_target_exe_name, "offload_main"); - } - else { - if (strlen(__target_exe->name) < MAX_TARGET_NAME) { - strcpy(__dbg_target_exe_name, __target_exe->name); - } - } - __dbg_target_so_pid = pid; - __dbg_target_id = m_physical_index; - // The call to __dbg_target_so_loaded() is moved - // to Engine:init so all the libraries are loaded before - // informing debugger so debugger can access them. - // __dbg_target_so_loaded(); - } -} - -void Engine::fini_process(bool verbose) -{ - if (m_process != 0) { - uint32_t sig; - int8_t ret; - - // destroy target process - OFFLOAD_DEBUG_TRACE(2, "Destroying process on the device %d\n", - m_index); - - COIRESULT res = COI::ProcessDestroy(m_process, -1, 0, &ret, &sig); - m_process = 0; - - if (res == COI_SUCCESS) { - OFFLOAD_DEBUG_TRACE(3, "Device process: signal %d, exit code %d\n", - sig, ret); - if (verbose) { - if (sig != 0) { - LIBOFFLOAD_ERROR( - c_mic_process_exit_sig, m_index, sig, - c_signal_names[sig >= c_signal_max ? 0 : sig]); - } - else { - LIBOFFLOAD_ERROR(c_mic_process_exit_ret, m_index, ret); - } - } - - // for idb - if (__dbg_is_attached) { - __dbg_target_so_unloaded(); - } - } - else { - if (verbose) { - LIBOFFLOAD_ERROR(c_mic_process_exit, m_index); - } - } - } -} - -void Engine::load_libraries() -{ - // load libraries collected so far - for (TargetImageList::iterator it = m_images.begin(); - it != m_images.end(); it++) { - OFFLOAD_DEBUG_TRACE(2, - "Loading library \"%s\" from %p, size %llu, host file %s\n", - it->name, it->data, it->size, it->origin); - - // load library to the device - COILIBRARY lib; - COIRESULT res; - res = COI::ProcessLoadLibraryFromMemory(m_process, - it->data, - it->size, - it->name, - mic_library_path, - it->origin, - (it->origin) ? -1 : 0, - COI_LOADLIBRARY_V1_FLAGS, - &lib); - m_dyn_libs.push_front(DynLib(it->name, it->data, lib)); - - if (res != COI_SUCCESS && res != COI_ALREADY_EXISTS) { - check_result(res, c_load_library, it->origin, m_index, res); - } - } - m_images.clear(); -} - -void Engine::unload_library(const void *data, const char *name) -{ - if (m_process == 0) { - return; - } - for (DynLibList::iterator it = m_dyn_libs.begin(); - it != m_dyn_libs.end(); it++) { - if (it->data == data) { - COIRESULT res; - OFFLOAD_DEBUG_TRACE(2, - "Unloading library \"%s\"\n",name); - res = COI::ProcessUnloadLibrary(m_process,it->lib); - m_dyn_libs.erase(it); - if (res != COI_SUCCESS) { - check_result(res, c_unload_library, m_index, res); - } - return; - } - } -} - -static bool target_entry_cmp( - const VarList::BufEntry &l, - const VarList::BufEntry &r -) -{ - const char *l_name = reinterpret_cast<const char*>(l.name); - const char *r_name = reinterpret_cast<const char*>(r.name); - return strcmp(l_name, r_name) < 0; -} - -static bool host_entry_cmp( - const VarTable::Entry *l, - const VarTable::Entry *r -) -{ - return strcmp(l->name, r->name) < 0; -} - -void Engine::init_ptr_data(void) -{ - COIRESULT res; - COIEVENT event; - - // Prepare table of host entries - std::vector<const VarTable::Entry*> host_table( - Iterator(__offload_vars.get_head()), - Iterator()); - - // no need to do anything further is host table is empty - if (host_table.size() <= 0) { - return; - } - - // Get var table entries from the target. - // First we need to get size for the buffer to copy data - struct { - int64_t nelems; - int64_t length; - } params; - - res = COI::PipelineRunFunction(get_pipeline(), - m_funcs[c_func_var_table_size], - 0, 0, 0, - 0, 0, - 0, 0, - ¶ms, sizeof(params), - &event); - check_result(res, c_pipeline_run_func, m_index, res); - - res = COI::EventWait(1, &event, -1, 1, 0, 0); - check_result(res, c_event_wait, res); - - if (params.length == 0) { - return; - } - - // create buffer for target entries and copy data to host - COIBUFFER buffer; - res = COI::BufferCreate(params.length, COI_BUFFER_NORMAL, 0, 0, 1, - &m_process, &buffer); - check_result(res, c_buf_create, m_index, res); - - COI_ACCESS_FLAGS flags = COI_SINK_WRITE; - res = COI::PipelineRunFunction(get_pipeline(), - m_funcs[c_func_var_table_copy], - 1, &buffer, &flags, - 0, 0, - ¶ms.nelems, sizeof(params.nelems), - 0, 0, - &event); - check_result(res, c_pipeline_run_func, m_index, res); - - res = COI::EventWait(1, &event, -1, 1, 0, 0); - check_result(res, c_event_wait, res); - - // patch names in target data - VarList::BufEntry *target_table; - COIMAPINSTANCE map_inst; - res = COI::BufferMap(buffer, 0, params.length, COI_MAP_READ_ONLY, 0, 0, - 0, &map_inst, - reinterpret_cast<void**>(&target_table)); - check_result(res, c_buf_map, res); - - VarList::table_patch_names(target_table, params.nelems); - - // and sort entries - std::sort(target_table, target_table + params.nelems, target_entry_cmp); - std::sort(host_table.begin(), host_table.end(), host_entry_cmp); - - // merge host and target entries and enter matching vars map - std::vector<const VarTable::Entry*>::const_iterator hi = - host_table.begin(); - std::vector<const VarTable::Entry*>::const_iterator he = - host_table.end(); - const VarList::BufEntry *ti = target_table; - const VarList::BufEntry *te = target_table + params.nelems; - - while (hi != he && ti != te) { - int res = strcmp((*hi)->name, reinterpret_cast<const char*>(ti->name)); - if (res == 0) { - bool is_new; - // add matching entry to var map - PtrData *ptr = insert_ptr_data((*hi)->addr, (*hi)->size, is_new); - - // store address for new entries - if (is_new) { - ptr->mic_addr = ti->addr; - ptr->is_static = true; - ptr->var_alloc_type = (*hi)->var_alloc_type; - } - ptr->alloc_ptr_data_lock.unlock(); - hi++; - ti++; - } - else if (res < 0) { - hi++; - } - else { - ti++; - } - } - - // cleanup - res = COI::BufferUnmap(map_inst, 0, 0, 0); - check_result(res, c_buf_unmap, res); - - res = COI::BufferDestroy(buffer); - check_result(res, c_buf_destroy, res); -} - -COIRESULT Engine::compute( - _Offload_stream stream, - const std::list<COIBUFFER> &buffers, - const void* data, - uint16_t data_size, - void* ret, - uint16_t ret_size, - uint32_t num_deps, - const COIEVENT* deps, - COIEVENT* event -) /* const */ -{ - COIBUFFER *bufs; - COI_ACCESS_FLAGS *flags; - COIRESULT res; - - // convert buffers list to array - int num_bufs = buffers.size(); - if (num_bufs > 0) { - bufs = (COIBUFFER*) alloca(num_bufs * sizeof(COIBUFFER)); - flags = (COI_ACCESS_FLAGS*) alloca(num_bufs * - sizeof(COI_ACCESS_FLAGS)); - - int i = 0; - for (std::list<COIBUFFER>::const_iterator it = buffers.begin(); - it != buffers.end(); it++) { - bufs[i] = *it; - - // TODO: this should be fixed - flags[i++] = COI_SINK_WRITE; - } - } - else { - bufs = 0; - flags = 0; - } - COIPIPELINE pipeline = (stream == no_stream) ? - get_pipeline() : - get_pipeline(stream); - // start computation - res = COI::PipelineRunFunction(pipeline, - m_funcs[c_func_compute], - num_bufs, bufs, flags, - num_deps, deps, - data, data_size, - ret, ret_size, - event); - return res; -} - -pid_t Engine::init_device(void) -{ - struct init_data { - int device_index; - int devices_total; - int console_level; - int offload_report_level; - } data; - COIRESULT res; - COIEVENT event; - pid_t pid; - - OFFLOAD_DEBUG_TRACE_1(2, 0, c_offload_init, - "Initializing device with logical index %d " - "and physical index %d\n", - m_index, m_physical_index); - - // setup misc data - data.device_index = m_index; - data.devices_total = mic_engines_total; - data.console_level = console_enabled; - data.offload_report_level = offload_report_level; - - res = COI::PipelineRunFunction(get_pipeline(), - m_funcs[c_func_init], - 0, 0, 0, 0, 0, - &data, sizeof(data), - &pid, sizeof(pid), - &event); - check_result(res, c_pipeline_run_func, m_index, res); - - res = COI::EventWait(1, &event, -1, 1, 0, 0); - check_result(res, c_event_wait, res); - - OFFLOAD_DEBUG_TRACE(2, "Device process pid is %d\n", pid); - - return pid; -} - -// data associated with each thread -struct Thread { - Thread(long* addr_coipipe_counter) { - m_addr_coipipe_counter = addr_coipipe_counter; - memset(m_pipelines, 0, sizeof(m_pipelines)); - } - - ~Thread() { -#ifndef TARGET_WINNT - __sync_sub_and_fetch(m_addr_coipipe_counter, 1); -#else // TARGET_WINNT - _InterlockedDecrement(m_addr_coipipe_counter); -#endif // TARGET_WINNT - for (int i = 0; i < mic_engines_total; i++) { - if (m_pipelines[i] != 0) { - COI::PipelineDestroy(m_pipelines[i]); - } - } - } - - COIPIPELINE get_pipeline(int index) const { - return m_pipelines[index]; - } - - void set_pipeline(int index, COIPIPELINE pipeline) { - m_pipelines[index] = pipeline; - } - - AutoSet& get_auto_vars() { - return m_auto_vars; - } - -private: - long* m_addr_coipipe_counter; - AutoSet m_auto_vars; - COIPIPELINE m_pipelines[MIC_ENGINES_MAX]; -}; - -COIPIPELINE Engine::get_pipeline(void) -{ - Thread* thread = (Thread*) thread_getspecific(mic_thread_key); - if (thread == 0) { - thread = new Thread(&m_proc_number); - thread_setspecific(mic_thread_key, thread); - } - - COIPIPELINE pipeline = thread->get_pipeline(m_index); - if (pipeline == 0) { - COIRESULT res; - int proc_num; - -#ifndef TARGET_WINNT - proc_num = __sync_fetch_and_add(&m_proc_number, 1); -#else // TARGET_WINNT - proc_num = _InterlockedIncrement(&m_proc_number); -#endif // TARGET_WINNT - - if (proc_num > COI_PIPELINE_MAX_PIPELINES) { - LIBOFFLOAD_ERROR(c_coipipe_max_number, COI_PIPELINE_MAX_PIPELINES); - LIBOFFLOAD_ABORT; - } - - // Create pipeline for this thread - if (m_assigned_cpus == 0) { - // If m_assigned_cpus is NULL, it implies all threads - // Create the pipeline with no CPU mask - res = COI::PipelineCreate(m_process, 0, mic_stack_size, &pipeline); - } else { - // Create COI CPU mask - COI_CPU_MASK in_Mask; - res = COI::PipelineClearCPUMask(in_Mask); - check_result(res, c_clear_cpu_mask, m_index, res); - - int threads_per_core = m_num_threads / m_num_cores; - - // Available threads are defined by examining of m_assigned_cpus bitset. - // We skip thread 0. - for (int i = 1; i < m_num_threads; i++) { - // For available thread i m_assigned_cpus[i] is equal to 1 - if ((*m_assigned_cpus)[i]) { - COI_CPU_MASK_SET(i, in_Mask); - } - } - OFFLOAD_DEBUG_TRACE(2, "COIPipelineCreate Mask for this CPU thread\n" - "%016lx %016lx %016lx %016lx\n%016lx %016lx %016lx %016lx\n" - "%016lx %016lx %016lx %016lx\n%016lx %016lx %016lx %016lx\n", - in_Mask[0], in_Mask[1], in_Mask[2], in_Mask[3], - in_Mask[4], in_Mask[5], in_Mask[6], in_Mask[7], - in_Mask[8], in_Mask[9], in_Mask[10], in_Mask[11], - in_Mask[12], in_Mask[13], in_Mask[14], in_Mask[15]); - - // Create the pipeline with allowable CPUs - res = COI::PipelineCreate(m_process, in_Mask, mic_stack_size, &pipeline); - } - check_result(res, c_pipeline_create, m_index, res); - thread->set_pipeline(m_index, pipeline); - } - return pipeline; -} - -Stream* Stream::find_stream(uint64_t handle, bool remove) -{ - Stream *stream = 0; - - m_stream_lock.lock(); - { - StreamMap::iterator it = all_streams.find(handle); - if (it != all_streams.end()) { - stream = it->second; - if (remove) { - all_streams.erase(it); - } - } - } - m_stream_lock.unlock(); - return stream; -} - -void Engine::move_cpu_el_after(CpuEl* cpu_what, CpuEl* cpu_after) -{ - if (cpu_what == cpu_after) { - return; - } - CpuEl* cpu_prev = cpu_what->prev; - - // remove cpu_what - if (!cpu_prev) { - m_cpu_head = cpu_what->next; - } - else { - cpu_prev->next = cpu_what->next; - } - if (cpu_what->next) { - cpu_what->next->prev = cpu_prev; - } - - // insert cpu_what after cpu_after - cpu_what->prev = cpu_after; - cpu_what->next = cpu_after->next; - if (cpu_after->next) { - cpu_after->next->prev = cpu_what; - } - cpu_after->next = cpu_what; -} - -COIPIPELINE Engine::get_pipeline(_Offload_stream handle) -{ - Stream * stream = Stream::find_stream(handle, false); - - if (!stream) { - LIBOFFLOAD_ERROR(c_offload_no_stream, m_index); - LIBOFFLOAD_ABORT; - } - - COIPIPELINE pipeline = stream->get_pipeline(); - - if (pipeline == 0) { - COIRESULT res; - int proc_num; - COI_CPU_MASK in_Mask ; - -#ifndef TARGET_WINNT - proc_num = __sync_fetch_and_add(&m_proc_number, 1); -#else // TARGET_WINNT - proc_num = _InterlockedIncrement(&m_proc_number); -#endif // TARGET_WINNT - - if (proc_num > COI_PIPELINE_MAX_PIPELINES) { - LIBOFFLOAD_ERROR(c_coipipe_max_number, COI_PIPELINE_MAX_PIPELINES); - LIBOFFLOAD_ABORT; - } - - m_stream_lock.lock(); - - // start process if not done yet - if (m_process == 0) { - init_process(); - } - - // create CPUmask - res = COI::PipelineClearCPUMask(in_Mask); - check_result(res, c_clear_cpu_mask, m_index, res); - - int stream_cpu_num = stream->get_cpu_number(); - - stream->m_stream_cpus.reset(); - - int threads_per_core = m_num_threads / m_num_cores; - - - // Available threads is taken from m_cpus list. - // m_cpu_head points to the head of m_cpus. - // the elements of m_cpus is ordered by the number of usage in streams. - - CpuEl *cpu_el = m_cpu_head; - CpuEl *cpu_used_el, *cpu_used_prev, *cpu_prev; - - for (int i = 0; i < stream_cpu_num; i++) { - COI_CPU_MASK_SET(CPU_INDEX(cpu_el), in_Mask); - stream->m_stream_cpus.set(CPU_INDEX(cpu_el)); - //If the number of availabale threads is less than stream_cpu_num, - // the stream_cpu_num is restricted to this number. - if (!cpu_el->next) { - break; - } - if (i + 1 < stream_cpu_num) { - cpu_el = cpu_el->next; - } - } - - // assertion : cpu_el points to the last used thread - cpu_used_el = cpu_el; - while (cpu_used_el) { - cpu_used_el->count++; - cpu_el = cpu_prev = cpu_used_el; - cpu_used_prev = cpu_used_el->prev; - if (!cpu_el->next) { - cpu_used_el = cpu_used_prev; - continue; - } - - while (cpu_el) { - if (cpu_used_el->count < cpu_el->count) { - break; - } - // Equal used threads are ordered by thread number to - // assign to a stream as contiguous threads as possible. - else if (cpu_used_el->count == cpu_el->count && - CPU_INDEX(cpu_used_el) < CPU_INDEX(cpu_el)) { - break; - } - cpu_prev = cpu_el; - cpu_el = cpu_el->next; - } - if (cpu_used_el != cpu_prev) { - move_cpu_el_after(cpu_used_el, cpu_prev); - } - cpu_used_el = cpu_used_prev; - } - print_stream_cpu_list("get_pipeline"); - - // create pipeline for this thread - OFFLOAD_DEBUG_TRACE(2, "COIPipelineCreate Mask for this Stream\n" - "%016lx %016lx %016lx %016lx\n%016lx %016lx %016lx %016lx\n" - "%016lx %016lx %016lx %016lx\n%016lx %016lx %016lx %016lx\n", - in_Mask[0], in_Mask[1], in_Mask[2], in_Mask[3], - in_Mask[4], in_Mask[5], in_Mask[6], in_Mask[7], - in_Mask[8], in_Mask[9], in_Mask[10], in_Mask[11], - in_Mask[12], in_Mask[13], in_Mask[14], in_Mask[15]); - res = COI::PipelineCreate(m_process, in_Mask, - mic_stack_size, &pipeline); - check_result(res, c_pipeline_create, m_index, res); - - // Set stream's affinities - { - struct affinity_spec affinity_spec; - char* affinity_type; - int i; - - // "compact" by default - affinity_spec.affinity_type = affinity_compact; - - // Check if user has specified type of affinity - if ((affinity_type = getenv("OFFLOAD_STREAM_AFFINITY")) != - NULL) - { - char affinity_str[16]; - int affinity_str_len; - - OFFLOAD_DEBUG_TRACE(2, - "User has specified OFFLOAD_STREAM_AFFINITY=%s\n", - affinity_type); - - // Set type of affinity requested - affinity_str_len = strlen(affinity_type); - for (i=0; i<affinity_str_len && i<15; i++) - { - affinity_str[i] = tolower(affinity_type[i]); - } - affinity_str[i] = '\0'; - if (strcmp(affinity_str, "compact") == 0) { - affinity_spec.affinity_type = affinity_compact; - OFFLOAD_DEBUG_TRACE(2, "Setting affinity=compact\n"); - } else if (strcmp(affinity_str, "scatter") == 0) { - affinity_spec.affinity_type = affinity_scatter; - OFFLOAD_DEBUG_TRACE(2, "Setting affinity=scatter\n"); - } else { - LIBOFFLOAD_ERROR(c_incorrect_affinity, affinity_str); - affinity_spec.affinity_type = affinity_compact; - OFFLOAD_DEBUG_TRACE(2, "Setting affinity=compact\n"); - } - } - // Make flat copy of sink mask because COI's mask is opaque - for (i=0; i<16; i++) { - affinity_spec.sink_mask[i] = in_Mask[i]; - } - // Set number of cores and threads - affinity_spec.num_cores = m_num_cores; - affinity_spec.num_threads = m_num_threads; - - COIEVENT event; - res = COI::PipelineRunFunction(pipeline, - m_funcs[c_func_set_stream_affinity], - 0, 0, 0, - 0, 0, - &affinity_spec, sizeof(affinity_spec), - 0, 0, - &event); - check_result(res, c_pipeline_run_func, m_index, res); - - res = COI::EventWait(1, &event, -1, 1, 0, 0); - check_result(res, c_event_wait, res); - } - - m_stream_lock.unlock(); - stream->set_pipeline(pipeline); - } - return pipeline; -} - -void Engine::stream_destroy(_Offload_stream handle) -{ - // get stream - Stream * stream = Stream::find_stream(handle, true); - - if (stream) { - // return cpus for future use - for (int i = 0; i < m_num_threads; i++) { - if (stream->m_stream_cpus.test(i)) { - CpuEl *cpu_el = m_cpus + i; - CpuEl *cpu_first_el = cpu_el; - // decrease count of thread "i" and move its CpuEl to the - // proper place into the ordered list - cpu_el->count--; - while (cpu_el->prev) { - if (cpu_first_el->count > cpu_el->prev->count) { - break; - } - else if (cpu_first_el->count == cpu_el->prev->count && - CPU_INDEX(cpu_first_el) > CPU_INDEX(cpu_el->prev)) { - break; - } - cpu_el = cpu_el->prev; - } - cpu_el = cpu_el->prev; - // If cpu_el for thread "i" must be moved in the list - if (cpu_first_el != cpu_el) { - // Thread "i" is used the least times. It must be set as - // the m_cpu_head. - if (!cpu_el) { - if (!cpu_first_el->prev) { - continue; - } - // remove cpu_el. - cpu_first_el->prev->next = cpu_first_el->next; - if (cpu_first_el->next) { - cpu_first_el->next->prev = cpu_first_el->prev; - } - // make cpu_first_el as new m_cpu_head - cpu_first_el->prev = NULL; - cpu_first_el->next = m_cpu_head; - m_cpu_head->prev = cpu_first_el; - m_cpu_head = cpu_first_el; - } - else { - move_cpu_el_after(cpu_first_el, cpu_el); - } - } - } - } - print_stream_cpu_list("stream_destroy"); - delete stream; - } - else { - LIBOFFLOAD_ERROR(c_offload_no_stream, m_index); - LIBOFFLOAD_ABORT; - } -} - -uint64_t Engine::get_thread_id(void) -{ - Thread* thread = (Thread*) thread_getspecific(mic_thread_key); - if (thread == 0) { - thread = new Thread(&m_proc_number); - thread_setspecific(mic_thread_key, thread); - } - - return reinterpret_cast<uint64_t>(thread); -} - -AutoSet& Engine::get_auto_vars(void) -{ - Thread* thread = (Thread*) thread_getspecific(mic_thread_key); - if (thread == 0) { - thread = new Thread(&m_proc_number); - thread_setspecific(mic_thread_key, thread); - } - - return thread->get_auto_vars(); -} - -void Engine::destroy_thread_data(void *data) -{ - delete static_cast<Thread*>(data); -} diff --git a/liboffloadmic/runtime/offload_engine.h b/liboffloadmic/runtime/offload_engine.h deleted file mode 100644 index b4cdad5..0000000 --- a/liboffloadmic/runtime/offload_engine.h +++ /dev/null @@ -1,724 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#ifndef OFFLOAD_ENGINE_H_INCLUDED -#define OFFLOAD_ENGINE_H_INCLUDED - -#include <limits.h> -#include <bitset> -#include <list> -#include <set> -#include <map> -#include "offload_common.h" -#include "coi/coi_client.h" - -#define SIGNAL_HAS_COMPLETED ((OffloadDescriptor *)-1) -const int64_t no_stream = -1; - -// Address range -class MemRange { -public: - MemRange() : m_start(0), m_length(0) {} - MemRange(const void *addr, uint64_t len) : m_start(addr), m_length(len) {} - - const void* start() const { - return m_start; - } - - const void* end() const { - return static_cast<const char*>(m_start) + m_length; - } - - uint64_t length() const { - return m_length; - } - - // returns true if given range overlaps with another one - bool overlaps(const MemRange &o) const { - // Two address ranges A[start, end) and B[start,end) overlap - // if A.start < B.end and A.end > B.start. - return start() < o.end() && end() > o.start(); - } - - // returns true if given range contains the other range - bool contains(const MemRange &o) const { - return start() <= o.start() && o.end() <= end(); - } - -private: - const void* m_start; - uint64_t m_length; -}; - -// Data associated with a pointer variable -class PtrData { -public: - PtrData(const void *addr, uint64_t len) : - cpu_addr(addr, len), cpu_buf(0), - mic_addr(0), alloc_disp(0), mic_buf(0), mic_offset(0), - ref_count(0), is_static(false), is_omp_associate(false) - {} - - // - // Copy constructor - // - PtrData(const PtrData& ptr): - cpu_addr(ptr.cpu_addr), cpu_buf(ptr.cpu_buf), - mic_addr(ptr.mic_addr), alloc_disp(ptr.alloc_disp), - mic_buf(ptr.mic_buf), mic_offset(ptr.mic_offset), - ref_count(ptr.ref_count), is_static(ptr.is_static), - is_omp_associate(ptr.is_omp_associate), - var_alloc_type(0) - {} - - bool operator<(const PtrData &o) const { - // Variables are sorted by the CPU start address. - // Overlapping memory ranges are considered equal. - return (cpu_addr.start() < o.cpu_addr.start()) && - !cpu_addr.overlaps(o.cpu_addr); - } - - long add_reference() { - if (is_omp_associate || (is_static && !var_alloc_type)) { - return LONG_MAX; - } -#ifndef TARGET_WINNT - return __sync_fetch_and_add(&ref_count, 1); -#else // TARGET_WINNT - return _InterlockedIncrement(&ref_count) - 1; -#endif // TARGET_WINNT - } - - long remove_reference() { - if (is_omp_associate || (is_static && !var_alloc_type)) { - return LONG_MAX; - } -#ifndef TARGET_WINNT - return __sync_sub_and_fetch(&ref_count, 1); -#else // TARGET_WINNT - return _InterlockedDecrement(&ref_count); -#endif // TARGET_WINNT - } - - long get_reference() const { - if (is_omp_associate || (is_static && !var_alloc_type)) { - return LONG_MAX; - } - return ref_count; - } - -public: - // CPU address range - const MemRange cpu_addr; - - // CPU and MIC buffers - COIBUFFER cpu_buf; - COIBUFFER mic_buf; - - // placeholder for buffer address on mic - uint64_t mic_addr; - - uint64_t alloc_disp; - - // additional offset to pointer data on MIC for improving bandwidth for - // data which is not 4K aligned - uint32_t mic_offset; - - // if true buffers are created from static memory - bool is_static; - - // true if MIC buffer created by omp_target_associate - bool is_omp_associate; - - bool var_alloc_type; - mutex_t alloc_ptr_data_lock; - -private: - // reference count for the entry - long ref_count; -}; - -typedef std::list<PtrData*> PtrDataList; - -class PtrDataTable { -public: - typedef std::set<PtrData> PtrSet; - - PtrData* find_ptr_data(const void *ptr) { - m_ptr_lock.lock(); - PtrSet::iterator res = list.find(PtrData(ptr, 0)); - - m_ptr_lock.unlock(); - if (res == list.end()) { - return 0; - } - return const_cast<PtrData*>(res.operator->()); - } - - PtrData* insert_ptr_data(const void *ptr, uint64_t len, bool &is_new) { - m_ptr_lock.lock(); - std::pair<PtrSet::iterator, bool> res = - list.insert(PtrData(ptr, len)); - - PtrData* ptr_data = const_cast<PtrData*>(res.first.operator->()); - m_ptr_lock.unlock(); - - is_new = res.second; - if (is_new) { - // It's necessary to lock as soon as possible. - // unlock must be done at call site of insert_ptr_data at - // branch for is_new - ptr_data->alloc_ptr_data_lock.lock(); - } - return ptr_data; - } - - void remove_ptr_data(const void *ptr) { - m_ptr_lock.lock(); - list.erase(PtrData(ptr, 0)); - m_ptr_lock.unlock(); - } -private: - - PtrSet list; - mutex_t m_ptr_lock; -}; - -// Data associated with automatic variable -class AutoData { -public: - AutoData(const void *addr, uint64_t len) : - cpu_addr(addr, len), ref_count(0) - {} - - bool operator<(const AutoData &o) const { - // Variables are sorted by the CPU start address. - // Overlapping memory ranges are considered equal. - return (cpu_addr.start() < o.cpu_addr.start()) && - !cpu_addr.overlaps(o.cpu_addr); - } - - long add_reference() { -#ifndef TARGET_WINNT - return __sync_fetch_and_add(&ref_count, 1); -#else // TARGET_WINNT - return _InterlockedIncrement(&ref_count) - 1; -#endif // TARGET_WINNT - } - - long remove_reference() { -#ifndef TARGET_WINNT - return __sync_sub_and_fetch(&ref_count, 1); -#else // TARGET_WINNT - return _InterlockedDecrement(&ref_count); -#endif // TARGET_WINNT - } - - long nullify_reference() { -#ifndef TARGET_WINNT - return __sync_lock_test_and_set(&ref_count, 0); -#else // TARGET_WINNT - return _InterlockedExchange(&ref_count,0); -#endif // TARGET_WINNT - } - - long get_reference() const { - return ref_count; - } - -public: - // CPU address range - const MemRange cpu_addr; - -private: - // reference count for the entry - long ref_count; -}; - -// Set of autimatic variables -typedef std::set<AutoData> AutoSet; - -// Target image data -struct TargetImage -{ - TargetImage(const char *_name, const void *_data, uint64_t _size, - const char *_origin, uint64_t _offset) : - name(_name), data(_data), size(_size), - origin(_origin), offset(_offset) - {} - - // library name - const char* name; - - // contents and size - const void* data; - uint64_t size; - - // file of origin and offset within that file - const char* origin; - uint64_t offset; -}; - -typedef std::list<TargetImage> TargetImageList; - -// dynamic library and Image associated with lib -struct DynLib -{ - DynLib(const char *_name, const void *_data, - COILIBRARY _lib) : - name(_name), data(_data), lib(_lib) - {} - // library name - const char* name; - - // contents - const void* data; - - COILIBRARY lib; -}; -typedef std::list<DynLib> DynLibList; - -// Data associated with persistent auto objects -struct PersistData -{ - PersistData(const void *addr, uint64_t routine_num, - uint64_t size, uint64_t thread) : - stack_cpu_addr(addr), routine_id(routine_num), thread_id(thread) - { - stack_ptr_data = new PtrData(0, size); - } - // 1-st key value - beginning of the stack at CPU - const void * stack_cpu_addr; - // 2-nd key value - identifier of routine invocation at CPU - uint64_t routine_id; - // 3-rd key value - thread identifier - uint64_t thread_id; - - // corresponded PtrData; only stack_ptr_data->mic_buf is used - PtrData * stack_ptr_data; - // used to get offset of the variable in stack buffer - char * cpu_stack_addr; -}; - -typedef std::list<PersistData> PersistDataList; - -// Data associated with stream -struct Stream -{ - Stream(int device, int num_of_cpus) : - m_number_of_cpus(num_of_cpus), m_pipeline(0), m_last_offload(0), - m_device(device) - {} - ~Stream() { - if (m_pipeline) { - COI::PipelineDestroy(m_pipeline); - } - } - - COIPIPELINE get_pipeline(void) { - return(m_pipeline); - } - - int get_device(void) { - return(m_device); - } - - int get_cpu_number(void) { - return(m_number_of_cpus); - } - - void set_pipeline(COIPIPELINE pipeline) { - m_pipeline = pipeline; - } - - OffloadDescriptor* get_last_offload(void) { - return(m_last_offload); - } - - void set_last_offload(OffloadDescriptor* last_offload) { - m_last_offload = last_offload; - } - - static Stream* find_stream(uint64_t handle, bool remove); - - static _Offload_stream add_stream(int device, int number_of_cpus) { - _Offload_stream result; - m_stream_lock.lock(); - result = ++m_streams_count; - all_streams[m_streams_count] = new Stream(device, number_of_cpus); - m_stream_lock.unlock(); - return(result); - } - - static uint64_t get_streams_count() { - return m_streams_count; - } - - typedef std::map<uint64_t, Stream*> StreamMap; - - static uint64_t m_streams_count; - static StreamMap all_streams; - static mutex_t m_stream_lock; - - int m_device; - - // number of cpus - int m_number_of_cpus; - - // The pipeline associated with the stream - COIPIPELINE m_pipeline; - - // The last offload occured via the stream - OffloadDescriptor* m_last_offload; - - // Cpus used by the stream - std::bitset<COI_MAX_HW_THREADS> m_stream_cpus; -}; - -typedef std::map<uint64_t, Stream*> StreamMap; -typedef std::bitset<COI_MAX_HW_THREADS> micLcpuMask; - -// ordered by count double linked list of cpus used by streams -typedef struct CpuEl{ - uint64_t count; // number of streams using the cpu - struct CpuEl* prev; // cpu with the same or lesser count - struct CpuEl* next; // cpu with the same or greater count -} CpuEl; - -// class representing a single engine -struct Engine { - friend void __offload_init_library_once(void); - friend void __offload_fini_library(void); - -#define CPU_INDEX(x) (x - m_cpus) -#define check_result(res, tag, ...) \ - { \ - if (res == COI_PROCESS_DIED) { \ - fini_process(true); \ - exit(1); \ - } \ - if (res != COI_SUCCESS) { \ - __liboffload_error_support(tag, __VA_ARGS__); \ - exit(1); \ - } \ - } - - int get_logical_index() const { - return m_index; - } - - int get_physical_index() const { - return m_physical_index; - } - - const COIPROCESS& get_process() const { - return m_process; - } - - bool get_ready() { - return m_ready; - } - - uint64_t get_thread_id(void); - - // initialize device - void init(void); - - // unload library - void unload_library(const void *data, const char *name); - - // add new library - void add_lib(const TargetImage &lib) - { - m_lock.lock(); - m_ready = false; - m_images.push_back(lib); - m_lock.unlock(); - } - - COIRESULT compute( - _Offload_stream stream, - const std::list<COIBUFFER> &buffers, - const void* data, - uint16_t data_size, - void* ret, - uint16_t ret_size, - uint32_t num_deps, - const COIEVENT* deps, - COIEVENT* event - ); - -#ifdef MYO_SUPPORT - // temporary workaround for blocking behavior for myoiLibInit/Fini calls - void init_myo(COIEVENT *event) { - COIRESULT res; - res = COI::PipelineRunFunction(get_pipeline(), - m_funcs[c_func_myo_init], - 0, 0, 0, 0, 0, 0, 0, 0, 0, - event); - check_result(res, c_pipeline_run_func, m_index, res); - } - - void fini_myo(COIEVENT *event) { - COIRESULT res; - res = COI::PipelineRunFunction(get_pipeline(), - m_funcs[c_func_myo_fini], - 0, 0, 0, 0, 0, 0, 0, 0, 0, - event); - check_result(res, c_pipeline_run_func, m_index, res); - } -#endif // MYO_SUPPORT - - // - // Memory association table - // - PtrData* find_ptr_data(const void *ptr) { - return m_ptr_set.find_ptr_data(ptr); - } - - PtrData* find_targetptr_data(const void *ptr) { - return m_targetptr_set.find_ptr_data(ptr); - } - - PtrData* insert_ptr_data(const void *ptr, uint64_t len, bool &is_new) { - return m_ptr_set.insert_ptr_data(ptr, len, is_new); - } - - PtrData* insert_targetptr_data(const void *ptr, uint64_t len, - bool &is_new) { - return m_targetptr_set.insert_ptr_data(ptr, len, is_new); - } - - void remove_ptr_data(const void *ptr) { - m_ptr_set.remove_ptr_data(ptr); - } - - void remove_targetptr_data(const void *ptr) { - m_targetptr_set.remove_ptr_data(ptr); - } - - // - // Automatic variables - // - AutoData* find_auto_data(const void *ptr) { - AutoSet &auto_vars = get_auto_vars(); - AutoSet::iterator res = auto_vars.find(AutoData(ptr, 0)); - if (res == auto_vars.end()) { - return 0; - } - return const_cast<AutoData*>(res.operator->()); - } - - AutoData* insert_auto_data(const void *ptr, uint64_t len) { - AutoSet &auto_vars = get_auto_vars(); - std::pair<AutoSet::iterator, bool> res = - auto_vars.insert(AutoData(ptr, len)); - return const_cast<AutoData*>(res.first.operator->()); - } - - void remove_auto_data(const void *ptr) { - get_auto_vars().erase(AutoData(ptr, 0)); - } - - // - // Signals - // - void add_signal(const void *signal, OffloadDescriptor *desc) { - m_signal_lock.lock(); - m_signal_map[signal] = desc; - m_signal_lock.unlock(); - } - - OffloadDescriptor* find_signal(const void *signal, bool remove) { - OffloadDescriptor *desc = 0; - - m_signal_lock.lock(); - { - SignalMap::iterator it = m_signal_map.find(signal); - if (it != m_signal_map.end()) { - desc = it->second; - if (remove) { - it->second = SIGNAL_HAS_COMPLETED; - } - } - } - m_signal_lock.unlock(); - - return desc; - } - - void complete_signaled_ofld(const void *signal) { - - m_signal_lock.lock(); - { - SignalMap::iterator it = m_signal_map.find(signal); - if (it != m_signal_map.end()) { - it->second = SIGNAL_HAS_COMPLETED; - } - } - m_signal_lock.unlock(); - } - - void stream_destroy(_Offload_stream handle); - - void move_cpu_el_after(CpuEl* cpu_what, CpuEl* cpu_after); - void print_stream_cpu_list(const char *); - - COIPIPELINE get_pipeline(_Offload_stream stream); - - StreamMap get_stream_map() { - return m_stream_map; - } - - // stop device process - void fini_process(bool verbose); - - // list of stacks active at the engine - PersistDataList m_persist_list; - -private: - Engine() : m_index(-1), m_physical_index(-1), m_process(0), m_ready(false), - m_proc_number(0), m_assigned_cpus(0), m_cpus(0), m_cpu_head(0) - {} - - ~Engine() { - m_ready = false; - for (StreamMap::iterator it = m_stream_map.begin(); - it != m_stream_map.end(); it++) { - Stream * stream = it->second; - delete stream; - } - if (m_process != 0) { - fini_process(false); - } - if (m_assigned_cpus) { - delete m_assigned_cpus; - } - } - - // set indexes - void set_indexes(int logical_index, int physical_index) { - m_index = logical_index; - m_physical_index = physical_index; - } - - // set CPU mask - void set_cpu_mask(micLcpuMask *cpu_mask) - { - m_assigned_cpus = cpu_mask; - } - - // start process on device - void init_process(); - - void load_libraries(void); - void init_ptr_data(void); - - // performs library intialization on the device side - pid_t init_device(void); - -private: - // get pipeline associated with a calling thread - COIPIPELINE get_pipeline(void); - - // get automatic vars set associated with the calling thread - AutoSet& get_auto_vars(void); - - // destructor for thread data - static void destroy_thread_data(void *data); - -private: - typedef std::set<PtrData> PtrSet; - typedef std::map<const void*, OffloadDescriptor*> SignalMap; - - // device indexes - int m_index; - int m_physical_index; - - // cpu mask - micLcpuMask *m_assigned_cpus; - - // number of COI pipes created for the engine - long m_proc_number; - - // process handle - COIPROCESS m_process; - - // If false, device either has not been initialized or new libraries - // have been added. - bool m_ready; - mutex_t m_lock; - - // List of libraries to be loaded - TargetImageList m_images; - - // var tables - PtrDataTable m_ptr_set; - PtrDataTable m_targetptr_set; - - // signals - SignalMap m_signal_map; - mutex_t m_signal_lock; - - // streams - StreamMap m_stream_map; - mutex_t m_stream_lock; - int m_num_cores; - int m_num_threads; - CpuEl* m_cpus; - CpuEl* m_cpu_head; - - // List of dynamic libraries to be registred - DynLibList m_dyn_libs; - - // constants for accessing device function handles - enum { - c_func_compute = 0, -#ifdef MYO_SUPPORT - c_func_myo_init, - c_func_myo_fini, -#endif // MYO_SUPPORT - c_func_init, - c_func_var_table_size, - c_func_var_table_copy, - c_func_set_stream_affinity, - c_funcs_total - }; - static const char* m_func_names[c_funcs_total]; - - // device function handles - COIFUNCTION m_funcs[c_funcs_total]; - - // int -> name mapping for device signals - static const int c_signal_max = 32; - static const char* c_signal_names[c_signal_max]; -}; - -#endif // OFFLOAD_ENGINE_H_INCLUDED diff --git a/liboffloadmic/runtime/offload_env.cpp b/liboffloadmic/runtime/offload_env.cpp deleted file mode 100644 index d1f52f1..0000000 --- a/liboffloadmic/runtime/offload_env.cpp +++ /dev/null @@ -1,384 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#include "offload_env.h" -#include <string.h> -#include <ctype.h> -#include "offload_util.h" -#include "liboffload_error_codes.h" - -// for environment variables valid on all cards -const int MicEnvVar::any_card = -1; - -MicEnvVar::~MicEnvVar() -{ - for (std::list<MicEnvVar::CardEnvVars*>::const_iterator - it = card_spec_list.begin(); - it != card_spec_list.end(); it++) { - CardEnvVars *card_data = *it; - delete card_data; - } -} - -MicEnvVar::VarValue::~VarValue() -{ - free(env_var_value); -} - -MicEnvVar::CardEnvVars::~CardEnvVars() -{ - for (std::list<MicEnvVar::VarValue*>::const_iterator it = env_vars.begin(); - it != env_vars.end(); it++) { - VarValue *var_value = *it; - delete var_value; - } -} - -// Searching for card in "card_spec_list" list with the same "number" - -MicEnvVar::CardEnvVars* MicEnvVar::get_card(int number) -{ - if (number == any_card) { - return &common_vars; - } - for (std::list<MicEnvVar::CardEnvVars*>::const_iterator - it = card_spec_list.begin(); - it != card_spec_list.end(); it++) { - CardEnvVars *card_data = *it; - if (card_data->card_number == number) { - return card_data; - } - } - return NULL; -} - -// Searching for environment variable in "env_var" list with the same name - -MicEnvVar::VarValue* MicEnvVar::CardEnvVars::find_var( - char* env_var_name, - int env_var_name_length -) -{ - for (std::list<MicEnvVar::VarValue*>::const_iterator it = env_vars.begin(); - it != env_vars.end(); it++) { - VarValue *var_value = *it; - if (var_value->length == env_var_name_length && - !strncmp(var_value->env_var, env_var_name, - env_var_name_length)) { - return var_value; - } - } - return NULL; -} - -void MicEnvVar::analyze_env_var(char *env_var_string) -{ - char *env_var_name; - char *env_var_def; - int card_number; - int env_var_name_length; - MicEnvVarKind env_var_kind; - - env_var_kind = get_env_var_kind(env_var_string, - &card_number, - &env_var_name, - &env_var_name_length, - &env_var_def); - switch (env_var_kind) { - case c_mic_var: - case c_mic_card_var: - add_env_var(card_number, - env_var_name, - env_var_name_length, - env_var_def); - break; - case c_mic_card_env: - mic_parse_env_var_list(card_number, env_var_def); - break; - case c_no_mic: - default: - break; - } -} - -void MicEnvVar::add_env_var( - int card_number, - char *env_var_name, - int env_var_name_length, - char *env_var_def -) -{ - VarValue *var; - CardEnvVars *card; - - // The case corresponds to common env var definition of kind - // <mic-prefix>_<var> - if (card_number == any_card) { - card = &common_vars; - } - else { - card = get_card(card_number); - if (!card) { - // definition for new card occurred - card = new CardEnvVars(card_number); - card_spec_list.push_back(card); - } - - } - var = card->find_var(env_var_name, env_var_name_length); - if (!var) { - // put new env var definition in "env_var" list - var = new VarValue(env_var_name, env_var_name_length, env_var_def); - card->env_vars.push_back(var); - } -} - -// The routine analyses string pointed by "env_var_string" argument -// according to the following syntax: -// -// Specification of prefix for MIC environment variables -// MIC_ENV_PREFIX=<mic-prefix> -// -// Setting single MIC environment variable -// <mic-prefix>_<var>=<value> -// <mic-prefix>_<card-number>_<var>=<value> - -// Setting multiple MIC environment variables -// <mic-prefix>_<card-number>_ENV=<env-vars> - -MicEnvVarKind MicEnvVar::get_env_var_kind( - char *env_var_string, - int *card_number, - char **env_var_name, - int *env_var_name_length, - char **env_var_def -) -{ - int len = strlen(prefix); - char *c = env_var_string; - int num = 0; - bool card_is_set = false; - - if (strncmp(c, prefix, len) != 0 || c[len] != '_') { - return c_no_mic; - } - c += len + 1; - - *card_number = any_card; - if (isdigit(*c)) { - while (isdigit (*c)) { - num = (*c++ - '0') + (num * 10); - } - if (*c != '_') { - return c_no_mic; - } - c++; - *card_number = num; - card_is_set = true; - } - if (!isalpha(*c)) { - return c_no_mic; - } - *env_var_name = *env_var_def = c; - if (strncmp(c, "ENV=", 4) == 0) { - if (!card_is_set) { - *env_var_name_length = 3; - *env_var_name = *env_var_def = c; - *env_var_def = strdup(*env_var_def); - if (*env_var_def == NULL) - LIBOFFLOAD_ERROR(c_malloc); - return c_mic_var; - } - *env_var_def = c + strlen("ENV="); - *env_var_def = strdup(*env_var_def); - if (*env_var_def == NULL) - LIBOFFLOAD_ERROR(c_malloc); - return c_mic_card_env; - } - if (isalpha(*c)) { - *env_var_name_length = 0; - while (isalnum(*c) || *c == '_') { - c++; - (*env_var_name_length)++; - } - } - if (*c != '=') { - return c_no_mic; - } - *env_var_def = strdup(*env_var_def); - if (*env_var_def == NULL) - LIBOFFLOAD_ERROR(c_malloc); - return card_is_set? c_mic_card_var : c_mic_var; -} - -// analysing <env-vars> in form: -// <mic-prefix>_<card-number>_ENV=<env-vars> -// where: -// -// <env-vars>: -// <env-var> -// <env-vars> | <env-var> -// -// <env-var>: -// variable=value -// variable="value" -// variable= - -void MicEnvVar::mic_parse_env_var_list( - int card_number, char *env_vars_def_list) -{ - char *c = env_vars_def_list; - char *env_var_name; - int env_var_name_length; - char *env_var_def; - bool var_is_quoted; - - if (*c == '"') { - c++; - } - while (*c != 0) { - var_is_quoted = false; - env_var_name = c; - env_var_name_length = 0; - if (isalpha(*c)) { - while (isalnum(*c) || *c == '_') { - c++; - env_var_name_length++; - } - } - else { - LIBOFFLOAD_ERROR(c_mic_parse_env_var_list1); - return; - } - if (*c != '=') { - LIBOFFLOAD_ERROR(c_mic_parse_env_var_list2); - return; - } - c++; - - if (*c == '"') { - var_is_quoted = true; - c++; - } - // Environment variable values that contain | will need to be escaped. - while (*c != 0 && *c != '|' && - (!var_is_quoted || *c != '"')) - { - // skip escaped symbol - if (*c == '\\') { - c++; - } - c++; - } - if (var_is_quoted) { - c++; // for " - while (*c != 0 && *c != '|') { - c++; - } - } - - int sz = c - env_var_name; - env_var_def = (char*)malloc(sz); - if (env_var_def == NULL) - LIBOFFLOAD_ERROR(c_malloc); - memcpy(env_var_def, env_var_name, sz); - env_var_def[sz] = 0; - - if (*c == '|') { - c++; - while (*c != 0 && *c == ' ') { - c++; - } - } - add_env_var(card_number, - env_var_name, - env_var_name_length, - env_var_def); - } -} - -// Collect all definitions for the card with number "card_num". -// The returned result is vector of string pointers defining one -// environment variable. The vector is terminated by NULL pointer. -// In the beginning of the vector there are env vars defined as -// <mic-prefix>_<card-number>_<var>=<value> -// or -// <mic-prefix>_<card-number>_ENV=<env-vars> -// where <card-number> is equal to "card_num" -// They are followed by definitions valid for any card -// and absent in previous definitions. - -char** MicEnvVar::create_environ_for_card(int card_num) -{ - VarValue *var_value; - VarValue *var_value_find; - CardEnvVars *card_data = get_card(card_num); - CardEnvVars *card_data_common; - std::list<char*> new_env; - char **rez; - - if (!prefix) { - return NULL; - } - // There is no personel env var definitions for the card with - // number "card_num" - if (!card_data) { - return create_environ_for_card(any_card); - } - - for (std::list<MicEnvVar::VarValue*>::const_iterator - it = card_data->env_vars.begin(); - it != card_data->env_vars.end(); it++) { - var_value = *it; - new_env.push_back(var_value->env_var_value); - } - - if (card_num != any_card) { - card_data_common = get_card(any_card); - for (std::list<MicEnvVar::VarValue*>::const_iterator - it = card_data_common->env_vars.begin(); - it != card_data_common->env_vars.end(); it++) { - var_value = *it; - var_value_find = card_data->find_var(var_value->env_var, - var_value->length); - if (!var_value_find) { - new_env.push_back(var_value->env_var_value); - } - } - } - - int new_env_size = new_env.size(); - rez = (char**) malloc((new_env_size + 1) * sizeof(char*)); - if (rez == NULL) - LIBOFFLOAD_ERROR(c_malloc); - std::copy(new_env.begin(), new_env.end(), rez); - rez[new_env_size] = 0; - return rez; -} diff --git a/liboffloadmic/runtime/offload_env.h b/liboffloadmic/runtime/offload_env.h deleted file mode 100644 index 166b5d9..0000000 --- a/liboffloadmic/runtime/offload_env.h +++ /dev/null @@ -1,112 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#ifndef OFFLOAD_ENV_H_INCLUDED -#define OFFLOAD_ENV_H_INCLUDED - -#include <list> -#include "offload_util.h" - -// data structure and routines to parse MIC user environment and pass to MIC - -enum MicEnvVarKind -{ - c_no_mic, // not MIC env var - c_mic_var, // for <mic-prefix>_<var> - c_mic_card_var, // for <mic-prefix>_<card-number>_<var> - c_mic_card_env // for <mic-prefix>_<card-number>_ENV -}; - -struct DLL_LOCAL MicEnvVar { -public: - MicEnvVar() : prefix(0) {} - ~MicEnvVar(); - - void analyze_env_var(char *env_var_string); - char** create_environ_for_card(int card_num); - MicEnvVarKind get_env_var_kind( - char *env_var_string, - int *card_number, - char **env_var_name, - int *env_var_name_length, - char **env_var_def - ); - void add_env_var( - int card_number, - char *env_var_name, - int env_var_name_length, - char *env_var_def - ); - - void set_prefix(const char *pref) { - prefix = (pref && *pref != '\0') ? pref : 0; - } - - struct VarValue { - public: - char* env_var; - int length; - char* env_var_value; - - VarValue(char* var, int ln, char* value) - { - env_var = var; - length = ln; - env_var_value = value; - } - ~VarValue(); - }; - - struct CardEnvVars { - public: - - int card_number; - std::list<struct VarValue*> env_vars; - - CardEnvVars() { card_number = any_card; } - CardEnvVars(int num) { card_number = num; } - ~CardEnvVars(); - - void add_new_env_var(int number, char *env_var, int length, - char *env_var_value); - VarValue* find_var(char* env_var_name, int env_var_name_length); - }; - static const int any_card; - -private: - void mic_parse_env_var_list(int card_number, char *env_var_def); - CardEnvVars* get_card(int number); - - const char *prefix; - std::list<struct CardEnvVars *> card_spec_list; - CardEnvVars common_vars; -}; - -#endif // OFFLOAD_ENV_H_INCLUDED diff --git a/liboffloadmic/runtime/offload_host.cpp b/liboffloadmic/runtime/offload_host.cpp deleted file mode 100644 index cab08c4..0000000 --- a/liboffloadmic/runtime/offload_host.cpp +++ /dev/null @@ -1,7255 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -// Forward declaration as the following 2 functions are declared as friend -// in offload_engine.h. -// CLANG does not like static to been after friend declaration. -static void __offload_init_library_once(void); -static void __offload_fini_library(void); - -#include "offload_host.h" -#ifdef MYO_SUPPORT -#include "offload_myo_host.h" -#endif - -#include <malloc.h> -#ifndef TARGET_WINNT -#include <alloca.h> -#include <elf.h> -#endif // TARGET_WINNT -#include <errno.h> -#include <fcntl.h> -#include <stdlib.h> -#include <string.h> -#include <sys/stat.h> -#include <sys/types.h> - -#include <algorithm> -#include <bitset> -#include <iostream> - -#if defined(HOST_WINNT) -#define PATH_SEPARATOR ";" -#else -#define PATH_SEPARATOR ":" -#endif - -#define GET_OFFLOAD_NUMBER(timer_data) \ - timer_data? timer_data->offload_number : 0 - -static void (*task_completion_callback)(void *); - -extern "C" { -#ifdef TARGET_WINNT -// Windows does not support imports from libraries without actually -// including them as dependence. We don't want to include in the -// dependence since is it used only for Fortran when traceback is enabled. -// Chose to implement it with GetProcAddress. -#define FORTRAN_TRACE_BACK win_for__continue_traceback -int win_for__continue_traceback( _Offload_result coi_offload_result ) -{ - HINSTANCE hDLL; - int (* TraceBackRoutine)(_Offload_result value); - - hDLL = LoadLibrary("libifcoremd.dll"); - if (hDLL != 0) { - TraceBackRoutine = (int (*)(_Offload_result)) GetProcAddress(hDLL, - "for__continue_traceback"); - if (TraceBackRoutine != 0) { - return TraceBackRoutine(coi_offload_result); - } - else { - OFFLOAD_TRACE(3, - "Cannot find for__continue_traceback routine in libifcorert.dll\n"); - exit(1); - } - } - else { - OFFLOAD_TRACE(3, "Cannot load libifcorert.dll\n"); - exit(1); - } - return 0; -} - -#else // TARGET_WINNT - -#define FORTRAN_TRACE_BACK for__continue_traceback - -// for__continue_traceback is provided as a dummy to resolve link time symbols -// for C/C++ programs. For Fortran the actual fortran library function in -// libifcore.so is used. -#pragma weak for__continue_traceback -int for__continue_traceback( _Offload_result coi_offload_result ) -{ - OFFLOAD_TRACE(3, - "liboffload function for_continue_traceback should not be called.\n"); - exit(1); -} -#endif //TARGET_WINNT -} // extern "C" - -#ifdef TARGET_WINNT -// Small subset of ELF declarations for Windows which is needed to compile -// this file. ELF header is used to understand what binary type is contained -// in the target image - shared library or executable. - -typedef uint16_t Elf64_Half; -typedef uint32_t Elf64_Word; -typedef uint64_t Elf64_Addr; -typedef uint64_t Elf64_Off; - -#define EI_NIDENT 16 - -#define ET_EXEC 2 -#define ET_DYN 3 - -typedef struct -{ - unsigned char e_ident[EI_NIDENT]; - Elf64_Half e_type; - Elf64_Half e_machine; - Elf64_Word e_version; - Elf64_Addr e_entry; - Elf64_Off e_phoff; - Elf64_Off e_shoff; - Elf64_Word e_flags; - Elf64_Half e_ehsize; - Elf64_Half e_phentsize; - Elf64_Half e_phnum; - Elf64_Half e_shentsize; - Elf64_Half e_shnum; - Elf64_Half e_shstrndx; -} Elf64_Ehdr; -#endif // TARGET_WINNT - -// Host console and file logging -const char *prefix; -int console_enabled = 0; -int offload_number = 0; - -static const char *htrace_envname = "H_TRACE"; -static const char *offload_report_envname = "OFFLOAD_REPORT"; -static const char *timer_envname = "H_TIME"; - -// DMA channel count used by COI and set via -// OFFLOAD_DMA_CHANNEL_COUNT environment variable -uint32_t mic_dma_channel_count; - -// Trace information -static const char* vardesc_direction_as_string[] = { - "NOCOPY", - "IN", - "OUT", - "INOUT" -}; -static const char* vardesc_type_as_string[] = { - "unknown", - "data", - "data_ptr", - "func_ptr", - "void_ptr", - "string_ptr", - "dv", - "dv_data", - "dv_data_slice", - "dv_ptr", - "dv_ptr_data", - "dv_ptr_data_slice", - "cean_var", - "cean_var_ptr", - "c_data_ptr_array", - "c_extended_type", - "c_func_ptr_array", - "c_void_ptr_array", - "c_string_ptr_array", - "c_data_ptr_ptr", - "c_func_ptr_ptr", - "c_void_ptr_ptr", - "c_string_ptr_ptr", - "c_cean_var_ptr_ptr", -}; - -Engine* mic_engines = 0; -uint32_t mic_engines_total = 0; -pthread_key_t mic_thread_key; -MicEnvVar mic_env_vars; -uint64_t cpu_frequency = 0; - -// MIC_STACKSIZE -uint32_t mic_stack_size = 12 * 1024 * 1024; - -// MIC_BUFFERSIZE -uint64_t mic_buffer_size = 0; - -// Preallocated 4K page memory size for buffers on MIC -uint64_t mic_4k_buffer_size = 0; - -// Preallocated 2M page memory size for buffers on MIC -uint64_t mic_2m_buffer_size = 0; - - -// LD_LIBRARY_PATH for KNC -char* knc_library_path = 0; - -// LD_LIBRARY_PATH for KNL -char* knl_library_path = 0; - - -// MIC_PROXY_IO -bool mic_proxy_io = true; - -// MIC_PROXY_FS_ROOT -char* mic_proxy_fs_root = 0; - -// Threshold for creating buffers with large pages. Buffer is created -// with large pages hint if its size exceeds the threshold value. -// By default large pages are disabled right now (by setting default -// value for threshold to MAX) due to HSD 4114629. -uint64_t __offload_use_2mb_buffers = 0xffffffffffffffffULL; -static const char *mic_use_2mb_buffers_envname = - "MIC_USE_2MB_BUFFERS"; - -static uint64_t __offload_use_async_buffer_write = 2 * 1024 * 1024; -static const char *mic_use_async_buffer_write_envname = - "MIC_USE_ASYNC_BUFFER_WRITE"; - -static uint64_t __offload_use_async_buffer_read = 2 * 1024 * 1024; -static const char *mic_use_async_buffer_read_envname = - "MIC_USE_ASYNC_BUFFER_READ"; - -// device initialization type -OffloadInitType __offload_init_type = c_init_on_offload_all; -static const char *offload_init_envname = "OFFLOAD_INIT"; - -// active wait -static bool __offload_active_wait = true; -static const char *offload_active_wait_envname = "OFFLOAD_ACTIVE_WAIT"; - -// wait even for asynchronous offload -// true for now still the performance issue with COI is not fixed -static bool __offload_always_wait = true; -static const char *offload_always_wait_envname = "OFFLOAD_ALWAYS_WAIT"; - -// OMP_DEFAULT_DEVICE -int __omp_device_num = 0; -static const char *omp_device_num_envname = "OMP_DEFAULT_DEVICE"; - -//OFFLOAD_PARALLEL_COPY -static bool __offload_parallel_copy = false; -static const char *parallel_copy_envname = "OFFLOAD_PARALLEL_COPY"; - -//Use COI interface for noncontiguous transfer if it exists. -static bool __offload_use_coi_noncontiguous_transfer = false; -static const char *use_coi_noncontiguous_transfer_envname = - "MIC_USE_COI_MULTI_D"; - -// The list of pending target libraries -static bool __target_libs; -static TargetImageList __target_libs_list; -static mutex_t __target_libs_lock; -static mutex_t stack_alloc_lock; -static mutex_t lock_complete; - -// Set of OffloadDescriptors of asynchronous offloads that are not destroyed -std::map<void *, bool> offload_descr_map; - -// Target executable -TargetImage* __target_exe; -// is true if last loaded image is dll -bool __current_image_is_dll = false; -// is true if myo library is loaded when dll is loaded -bool __myo_init_in_so = false; - -// Print readable offload flags -static void trace_offload_flags( - OffloadHostTimerData* timer_data, - OffloadFlags offload_flags -) -{ - // Sized big enough for all flag names - char fbuffer[256]; - bool first = true; - if (!OFFLOAD_DO_TRACE && (console_enabled >= 1)) { - sprintf(fbuffer, " OffloadFlags=("); - if (offload_flags.bits.fortran_traceback) { - sprintf(fbuffer+strlen(fbuffer), "fortran_traceback"); - first = false; - } - if (offload_flags.bits.omp_async) { - sprintf(fbuffer+strlen(fbuffer), first ? "omp_async" : ",omp_async"); - first = false; - } - OFFLOAD_DEBUG_TRACE_1(1, - GET_OFFLOAD_NUMBER(timer_data), c_offload_init_func, - "%s)\n", fbuffer); - } -} - -// Print readable varDesc flags -static void trace_varDesc_flags( - OffloadHostTimerData* timer_data, - varDescFlags offload_flags -) -{ - // Sized big enough for all flag names - char fbuffer[256]; - bool first = true; - if (!OFFLOAD_DO_TRACE && (console_enabled >= 1)) { - sprintf(fbuffer, " varDescFlags=("); - if (offload_flags.is_static) { - sprintf(fbuffer+strlen(fbuffer), "is_static"); - first = false; - } - if (offload_flags.is_static_dstn) { - sprintf(fbuffer+strlen(fbuffer), - first ? "is_static_dstn" : ",is_static_dstn"); - first = false; - } - if (offload_flags.has_length) { - sprintf(fbuffer+strlen(fbuffer), - first ? "has_length" : ",has_length"); - first = false; - } - if (offload_flags.is_stack_buf) { - sprintf(fbuffer+strlen(fbuffer), - first ? "is_stack_buf" : ",is_stack_buf"); - first = false; - } - if (offload_flags.targetptr) { - sprintf(fbuffer+strlen(fbuffer), - first ? "targetptr" : ",targetptr"); - first = false; - } - if (offload_flags.preallocated) { - sprintf(fbuffer+strlen(fbuffer), - first ? "preallocated" : ",preallocated"); - first = false; - } - if (offload_flags.is_pointer) { - sprintf(fbuffer+strlen(fbuffer), - first ? "is_pointer" : ",is_pointer"); - first = false; - } - if (offload_flags.sink_addr) { - sprintf(fbuffer+strlen(fbuffer), - first ? "sink_addr" : ",sink_addr"); - first = false; - } - if (offload_flags.alloc_disp) { - sprintf(fbuffer+strlen(fbuffer), - first ? "alloc_disp" : ",alloc_disp"); - first = false; - } - if (offload_flags.is_noncont_src) { - sprintf(fbuffer+strlen(fbuffer), - first ? "is_noncont_src" : ",is_noncont_src"); - first = false; - } - if (offload_flags.is_noncont_dst) { - sprintf(fbuffer+strlen(fbuffer), - first ? "is_noncont_dst" : ",is_noncont_dst"); - first = false; - } - if (offload_flags.always_copy) { - sprintf(fbuffer+strlen(fbuffer), - first ? "always_copy" : ",always_copy"); - first = false; - } - if (offload_flags.always_delete) { - sprintf(fbuffer+strlen(fbuffer), - first ? "always_delete" : ",always_delete"); - first = false; - } - if (offload_flags.is_non_cont_struct) { - sprintf(fbuffer+strlen(fbuffer), - first ? "is_non_cont_struct" : ",is_non_cont_struct"); - first = false; - } - if (offload_flags.pin) { - sprintf(fbuffer+strlen(fbuffer), - first ? "pin" : ",pin"); - first = false; - } - if (offload_flags.is_device_ptr) { - sprintf(fbuffer+strlen(fbuffer), - first ? "is_device_ptr" : ",is_device_ptr"); - first = false; - } - if (offload_flags.use_device_ptr) { - sprintf(fbuffer+strlen(fbuffer), - first ? "use_device_ptr" : ",use_device_ptr"); - } - OFFLOAD_DEBUG_TRACE_1(1, - GET_OFFLOAD_NUMBER(timer_data), c_offload_init_func, - "%s)\n", fbuffer); - } -} - -static char * offload_get_src_base(void * ptr, uint8_t type) -{ - char *base; - if (VAR_TYPE_IS_PTR(type)) { - base = *static_cast<char**>(ptr); - } - else if (VAR_TYPE_IS_SCALAR(type)) { - base = static_cast<char*>(ptr); - } - else if (VAR_TYPE_IS_DV_DATA_SLICE(type) || VAR_TYPE_IS_DV_DATA(type)) { - ArrDesc *dvp; - if (VAR_TYPE_IS_DV_DATA_SLICE(type)) { - const Arr_Desc *ap = static_cast<const Arr_Desc*>(ptr); - dvp = (type == c_dv_data_slice) ? - reinterpret_cast<ArrDesc*>(ap->base) : - *reinterpret_cast<ArrDesc**>(ap->base); - } - else { - dvp = (type == c_dv_data) ? - static_cast<ArrDesc*>(ptr) : - *static_cast<ArrDesc**>(ptr); - } - base = reinterpret_cast<char*>(dvp->Base); - } - else { - base = NULL; - } - return base; -} - -void OffloadDescriptor::report_coi_error(error_types msg, COIRESULT res) -{ - // special case for the 'process died' error - if (res == COI_PROCESS_DIED) { - m_device.fini_process(true); - } - else { - switch (msg) { - case c_buf_create: - if (res == COI_OUT_OF_MEMORY) { - msg = c_buf_create_out_of_mem; - } - /* fallthru */ - - case c_buf_create_from_mem: - case c_buf_get_address: - case c_pipeline_create: - case c_pipeline_run_func: - LIBOFFLOAD_ERROR(msg, m_device.get_logical_index(), res); - break; - - case c_buf_read: - case c_buf_write: - case c_buf_copy: - case c_buf_map: - case c_buf_unmap: - case c_buf_destroy: - case c_buf_set_state: - LIBOFFLOAD_ERROR(msg, res); - break; - - default: - break; - } - } - - exit(1); -} - -_Offload_result OffloadDescriptor::translate_coi_error(COIRESULT res) const -{ - switch (res) { - case COI_SUCCESS: - return OFFLOAD_SUCCESS; - - case COI_PROCESS_DIED: - return OFFLOAD_PROCESS_DIED; - - case COI_OUT_OF_MEMORY: - return OFFLOAD_OUT_OF_MEMORY; - - default: - return OFFLOAD_ERROR; - } -} - -// is_targetptr == 0 && is_prealloc == 0 - allocation of pointer data; -// is_targetptr == 1 && is_prealloc == 0 - allocation of target memory: -// allocate memory at target; use its value as base in target table. -// is_targetptr == 1 && is_prealloc == 1 - use preallocated target memory: -// base - is address at target of preallocated memory; use its value as -// base in target table. - -bool OffloadDescriptor::alloc_ptr_data( - PtrData* &ptr_data, - void *base, - int64_t disp, - int64_t size, - int64_t alloc_disp, - int align, - bool is_targptr, - bool is_prealloc, - bool pin -) -{ - // total length of base - int64_t length = size; - bool is_new; - COIBUFFER targptr_buf; - COIRESULT res; - uint32_t buffer_flags = 0; - char * base_disp = reinterpret_cast<char *>(base) + disp; - - // create buffer with large pages if data length exceeds - // large page threshold - if (length >= __offload_use_2mb_buffers) { - buffer_flags = COI_OPTIMIZE_HUGE_PAGE_SIZE; - } - // Allocate memory at target for targetptr without preallocated as we need - // its address as base argument in call to m_device.insert_ptr_data - if (is_targptr && !is_prealloc) { - length = alloc_disp ? length : size + disp; - res = COI::BufferCreate( - length, - COI_BUFFER_OPENCL, - buffer_flags, - 0, - 1, - &m_device.get_process(), - &targptr_buf); - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - } - else if (m_is_mandatory) { - report_coi_error(c_buf_create, res); - } - return false; - } - - res = COI::BufferGetSinkAddress( - targptr_buf, reinterpret_cast<uint64_t *>(&base)); - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - } - else if (m_is_mandatory) { - report_coi_error(c_buf_get_address, res); - } - return false; - } - } - - OFFLOAD_TRACE(3, "Creating association for data: addr %p, length %lld\n", - alloc_disp ? base : base_disp, - alloc_disp ? length : size + disp); - - // add new entry - - ptr_data = is_targptr ? - m_device.find_targetptr_data(base_disp) : - m_device.find_ptr_data(base_disp); - // if ptr_data is found just need to check it for overlapping - if (ptr_data) { - is_new = false; - base = base_disp; - } - else { - // If association is not found we must create it. - length = alloc_disp ? length : size + disp; - ptr_data = is_targptr ? - m_device.insert_targetptr_data(base, length, is_new) : - m_device.insert_ptr_data(base, length, is_new); - } - if (is_new) { - - OFFLOAD_TRACE(3, "Added new association\n"); - - if (length > 0) { - OffloadTimer timer(get_timer_data(), c_offload_host_alloc_buffers); - - // align should be a power of 2 - if (!pin && !is_targptr && - align > 0 && (align & (align - 1)) == 0) { - // offset within mic_buffer. Can do offset optimization - // only when source address alignment satisfies requested - // alignment on the target (cq172736). - if ((reinterpret_cast<intptr_t>(base) & (align - 1)) == 0) { - ptr_data->mic_offset = - reinterpret_cast<intptr_t>(base) & 4095; - } - } - - // buffer size and flags - uint64_t buffer_size = length + ptr_data->mic_offset; - - // For targetptr there is no CPU buffer - if (pin || !is_targptr) { - // create CPU buffer - OFFLOAD_DEBUG_TRACE_1(3, - GET_OFFLOAD_NUMBER(get_timer_data()), - c_offload_create_buf_host, - "Creating buffer from source memory %p, " - "length %lld\n", base, length); - - // result is not checked because we can continue without cpu - // buffer. In this case we will use COIBufferRead/Write - // instead of COIBufferCopy. - - COI::BufferCreateFromMemory(length, - COI_BUFFER_OPENCL, - 0, - base, - 1, - &m_device.get_process(), - &ptr_data->cpu_buf); - } - - // create MIC buffer - if (is_prealloc) { - OFFLOAD_DEBUG_TRACE_1(3, - GET_OFFLOAD_NUMBER(get_timer_data()), - c_offload_create_buf_mic, - "Creating buffer from sink memory: " - "addr %p, size %lld, offset %d, flags 0x%x\n", - base, buffer_size, ptr_data->mic_offset, - buffer_flags); - res = COI::BufferCreateFromMemory(ptr_data->cpu_addr.length(), - COI_BUFFER_NORMAL, - COI_SINK_MEMORY, - base, - 1, - &m_device.get_process(), - &ptr_data->mic_buf); - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - } - else if (m_is_mandatory) { - report_coi_error(c_buf_create, res); - } - ptr_data->alloc_ptr_data_lock.unlock(); - return false; - } - } - else if (is_targptr) { - ptr_data->mic_buf = targptr_buf; - } - else if (!pin) { - OFFLOAD_DEBUG_TRACE_1(3, - GET_OFFLOAD_NUMBER(get_timer_data()), - c_offload_create_buf_mic, - "Creating buffer for sink: size %lld, offset %d, " - "flags =0x%x\n", buffer_size, - ptr_data->mic_offset, buffer_flags); - res = COI::BufferCreate(buffer_size, - COI_BUFFER_NORMAL, - buffer_flags, - 0, - 1, - &m_device.get_process(), - &ptr_data->mic_buf); - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - } - else if (m_is_mandatory) { - report_coi_error(c_buf_create, res); - } - ptr_data->alloc_ptr_data_lock.unlock(); - return false; - } - } - - if (!pin) { - // make buffer valid on the device. - res = COI::BufferSetState(ptr_data->mic_buf, - m_device.get_process(), - COI_BUFFER_VALID, - COI_BUFFER_NO_MOVE, - 0, 0, 0); - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - } - else if (m_is_mandatory) { - report_coi_error(c_buf_set_state, res); - } - ptr_data->alloc_ptr_data_lock.unlock(); - return false; - } - - res = COI::BufferSetState(ptr_data->mic_buf, - COI_PROCESS_SOURCE, - COI_BUFFER_INVALID, - COI_BUFFER_NO_MOVE, - 0, 0, 0); - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - } - else if (m_is_mandatory) { - report_coi_error(c_buf_set_state, res); - } - ptr_data->alloc_ptr_data_lock.unlock(); - return false; - } - } - } - ptr_data->alloc_disp = alloc_disp; - ptr_data->alloc_ptr_data_lock.unlock(); - } - else { - mutex_locker_t locker(ptr_data->alloc_ptr_data_lock); - - OFFLOAD_TRACE(3, "Found existing association: addr %p, length %lld, " - "is_static %d\n", - ptr_data->cpu_addr.start(), ptr_data->cpu_addr.length(), - ptr_data->is_static); - - // This is not a new entry. Make sure that provided address range fits - // into existing one. - MemRange addr_range(base, length); - if (!ptr_data->cpu_addr.contains(addr_range)) { - LIBOFFLOAD_ERROR(c_bad_ptr_mem_alloc, base, length, - const_cast<void *>(ptr_data->cpu_addr.start()), - ptr_data->cpu_addr.length()); - exit(1); - } - - // if the entry is associated with static data it may not have buffers - // created because they are created on demand. - if (ptr_data->is_static && !init_static_ptr_data(ptr_data)) { - return false; - } - } - - return true; -} - -bool OffloadDescriptor::find_ptr_data( - PtrData* &ptr_data, - void *in_base, - int64_t disp, - int64_t size, - bool is_targetptr, - bool report_error -) -{ - // total length of base - int64_t length = size; - char *base = reinterpret_cast<char *>(in_base) + disp; - - OFFLOAD_TRACE(3, "Looking for association for data: addr %p, " - "length %lld\n", base, length); - - // find existing association in pointer table - ptr_data = is_targetptr ? - m_device.find_targetptr_data(base) : - m_device.find_ptr_data(base); - if (ptr_data == 0) { - if (report_error) { - LIBOFFLOAD_ERROR(c_no_ptr_data, base); - exit(1); - } - OFFLOAD_TRACE(3, "Association does not exist\n"); - return true; - } - - OFFLOAD_TRACE(3, "Found association: base %p, length %lld, is_static %d\n", - ptr_data->cpu_addr.start(), ptr_data->cpu_addr.length(), - ptr_data->is_static); - - // make sure that provided address range fits into existing one - MemRange addr_range(base, length); - if (!ptr_data->cpu_addr.contains(addr_range)) { - if (report_error) { - LIBOFFLOAD_ERROR(c_bad_ptr_mem_range, base, length, - const_cast<void *>(ptr_data->cpu_addr.start()), - ptr_data->cpu_addr.length()); - exit(1); - } - OFFLOAD_TRACE(3, "Existing association partially overlaps with " - "data address range\n"); - ptr_data = 0; - return true; - } - - // if the entry is associated with static data it may not have buffers - // created because they are created on demand. - if (ptr_data->is_static && !init_static_ptr_data(ptr_data)) { - return false; - } - - return true; -} - -void OffloadDescriptor::find_device_ptr( - int64_t* &device_ptr, - void *host_ptr -) -{ - PtrData* ptr_data; - char *base = reinterpret_cast<char *>(host_ptr); - - OFFLOAD_TRACE(3, "Looking for association for data: addr %p\n", base); - - // find existing association in pointer table - ptr_data = m_device.find_ptr_data(base); - -// MIC address should have been assigned. -// For now assume does not exist and get the addr -// if ((ptr_data == 0) || ptr_data->mic_addr) { - - if (ptr_data == 0) { - OFFLOAD_TRACE(3, "Association does not exist\n"); - LIBOFFLOAD_ERROR(c_no_ptr_data, base); - exit(1); - } - if (!ptr_data->mic_addr) { - COIRESULT res = COI::BufferGetSinkAddress(ptr_data->mic_buf, - &ptr_data->mic_addr); - if (res != COI_SUCCESS) { - if (m_status != 0) - m_status->result = translate_coi_error(res); - report_coi_error(c_buf_get_address, res); - } - } - - device_ptr = (int64_t *) ptr_data->mic_addr; - - OFFLOAD_TRACE(3, "Found association: host_ptr %p, device_ptr = %p\n", - ptr_data->cpu_addr.start(), device_ptr); -} - -bool OffloadDescriptor::init_static_ptr_data(PtrData *ptr_data) -{ - OffloadTimer timer(get_timer_data(), c_offload_host_alloc_buffers); - - if (ptr_data->cpu_buf == 0) { - OFFLOAD_TRACE(3, "Creating buffer from source memory %llx\n", - ptr_data->cpu_addr.start()); - - COIRESULT res = COI::BufferCreateFromMemory( - ptr_data->cpu_addr.length(), - COI_BUFFER_OPENCL, - 0, - const_cast<void*>(ptr_data->cpu_addr.start()), - 1, &m_device.get_process(), - &ptr_data->cpu_buf); - - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - return false; - } - report_coi_error(c_buf_create_from_mem, res); - } - } - - if (ptr_data->mic_buf == 0) { - OFFLOAD_TRACE(3, "Creating buffer from sink memory %llx\n", - ptr_data->mic_addr); - - COIRESULT res = COI::BufferCreateFromMemory( - ptr_data->cpu_addr.length(), - COI_BUFFER_NORMAL, - COI_SINK_MEMORY, - reinterpret_cast<void*>(ptr_data->mic_addr), - 1, &m_device.get_process(), - &ptr_data->mic_buf); - - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - return false; - } - report_coi_error(c_buf_create_from_mem, res); - } - } - - return true; -} - -bool OffloadDescriptor::init_mic_address(PtrData *ptr_data) -{ - if (ptr_data->mic_buf != 0 && ptr_data->mic_addr == 0) { - COIRESULT res = COI::BufferGetSinkAddress(ptr_data->mic_buf, - &ptr_data->mic_addr); - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - } - else if (m_is_mandatory) { - report_coi_error(c_buf_get_address, res); - } - return false; - } - } - return true; -} - -bool OffloadDescriptor::nullify_target_stack( - COIBUFFER targ_buf, - uint64_t size -) -{ - char * ptr = (char*)malloc(size); - if (ptr == NULL) - LIBOFFLOAD_ERROR(c_malloc); - COIRESULT res; - - memset(ptr, 0, size); - res = COI::BufferWrite( - targ_buf, - 0, - ptr, - size, - COI_COPY_UNSPECIFIED, - 0, 0, 0); - free(ptr); - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - return false; - } - report_coi_error(c_buf_write, res); - } - return true; -} - -static void print_persistList_item( - const char *msg, - PersistData *cur_el -) -{ - OFFLOAD_TRACE(4, "%s\n", msg); - OFFLOAD_TRACE(4, " stack_cpu_addr = %p\n", cur_el->stack_cpu_addr); - OFFLOAD_TRACE(4, " routine_id = %d\n", cur_el->routine_id); - OFFLOAD_TRACE(4, " thread_id = %lld\n", cur_el->thread_id); - OFFLOAD_TRACE(4, " stack_ptr_data = %p\n", cur_el->stack_ptr_data); - OFFLOAD_TRACE(4, " MIC buffer = %p\n", cur_el->stack_ptr_data->mic_buf); - OFFLOAD_TRACE(4, " MIC addr = %p\n", cur_el->stack_ptr_data->mic_addr); - OFFLOAD_TRACE(4, " cpu_stack_addr = %p\n", cur_el->cpu_stack_addr); -} - -static mutex_t stack_memory_manager_lock; - -bool OffloadDescriptor::offload_stack_memory_manager( - const void * stack_begin, - int routine_id, - int buf_size, - int align, - bool thread_specific_function_locals, - bool *is_new) -{ - //mutex_locker_t locker(stack_alloc_lock); - stack_memory_manager_lock.lock(); - - PersistData * new_el; - PersistDataList::iterator it_begin = m_device.m_persist_list.begin(); - PersistDataList::iterator it_end; - int erase = 0; - uint64_t cur_thread_id = m_device.get_thread_id(); - - OFFLOAD_TRACE(3, "offload_stack_memory_manager(" - "stack_begin=%p, routine_id=%d, buf_size=%d," - "align=%d, thread_specific_function_locals=%d, bool=%p)\n", - stack_begin, routine_id, buf_size, - align, thread_specific_function_locals, is_new); - OFFLOAD_TRACE(3, "cur_thread_id=%lld\n", cur_thread_id); - *is_new = false; - - for (PersistDataList::iterator it = m_device.m_persist_list.begin(); - it != m_device.m_persist_list.end(); it++) { - PersistData cur_el = *it; - - print_persistList_item("Current element in persist list:", &cur_el); - if (stack_begin > it->stack_cpu_addr) { - if (cur_thread_id == cur_el.thread_id) { - // this stack data must be destroyed - m_destroy_stack.push_front(cur_el.stack_ptr_data); - it_end = it; - erase++; - OFFLOAD_TRACE(3, "Current element below TOS: so delete\n"); - } - } - else if (stack_begin == it->stack_cpu_addr) { - if (routine_id != it-> routine_id) { - // this stack data must be destroyed - // because the current function is a dynamic sibling - m_destroy_stack.push_front(cur_el.stack_ptr_data); - it_end = it; - erase++; - OFFLOAD_TRACE(3, "Current element is sibling: so delete\n"); - break; - } - else if (!thread_specific_function_locals || - cur_thread_id == cur_el.thread_id) { - // stack data is reused - m_stack_ptr_data = it->stack_ptr_data; - if (erase > 0) { - // all obsolete stack sections must be erased from the list - m_device.m_persist_list.erase(it_begin, ++it_end); - m_in_datalen += - erase * sizeof(new_el->stack_ptr_data->mic_addr); - } - OFFLOAD_TRACE(3, "Reuse of stack buffer with addr %p\n", - m_stack_ptr_data->mic_addr); - stack_memory_manager_lock.unlock(); - return true; - } - } - else if (stack_begin < it->stack_cpu_addr && - cur_thread_id == cur_el.thread_id) { - OFFLOAD_TRACE(3, "Current element is above TOS\n"); - break; - } - } - - if (erase > 0) { - // all obsolete stack sections must be erased from the list - m_device.m_persist_list.erase(it_begin, ++it_end); - m_in_datalen += erase * sizeof(new_el->stack_ptr_data->mic_addr); - } - // new stack table is created - new_el = new PersistData(stack_begin, routine_id, buf_size, cur_thread_id); - // create MIC buffer - COIRESULT res; - uint32_t buffer_flags = 0; - - // create buffer with large pages if data length exceeds - // large page threshold - if (buf_size >= __offload_use_2mb_buffers) { - buffer_flags = COI_OPTIMIZE_HUGE_PAGE_SIZE; - } - res = COI::BufferCreate(buf_size, - COI_BUFFER_NORMAL, - buffer_flags, - 0, - 1, - &m_device.get_process(), - &new_el->stack_ptr_data->mic_buf); - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - } - else if (m_is_mandatory) { - report_coi_error(c_buf_create, res); - } - stack_memory_manager_lock.unlock(); - return false; - } - // make buffer valid on the device. - res = COI::BufferSetState(new_el->stack_ptr_data->mic_buf, - m_device.get_process(), - COI_BUFFER_VALID, - COI_BUFFER_NO_MOVE, - 0, 0, 0); - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - } - else if (m_is_mandatory) { - report_coi_error(c_buf_set_state, res); - } - stack_memory_manager_lock.unlock(); - return false; - } - res = COI::BufferSetState(new_el->stack_ptr_data->mic_buf, - COI_PROCESS_SOURCE, - COI_BUFFER_INVALID, - COI_BUFFER_NO_MOVE, - 0, 0, 0); - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - } - else if (m_is_mandatory) { - report_coi_error(c_buf_set_state, res); - } - stack_memory_manager_lock.unlock(); - return false; - } - // persistence algorithm requires target stack initialy to be nullified - if (!nullify_target_stack(new_el->stack_ptr_data->mic_buf, buf_size)) { - stack_memory_manager_lock.unlock(); - return false; - } - - m_stack_ptr_data = new_el->stack_ptr_data; - init_mic_address(m_stack_ptr_data); - OFFLOAD_TRACE(3, "Allocating stack buffer with addr %p\n", - m_stack_ptr_data->mic_addr); - m_device.m_persist_list.push_front(*new_el); - init_mic_address(new_el->stack_ptr_data); - *is_new = true; - - stack_memory_manager_lock.unlock(); - return true; -} - -// Search through persistent stack buffers -// for the top-of-stack buffer for this thread -char* OffloadDescriptor::get_this_threads_cpu_stack_addr( - const void * stack_begin, - int routine_id, - bool thread_specific_function_locals -) -{ - uint64_t cur_thread_id = m_device.get_thread_id(); - char* matched = 0; - - OFFLOAD_TRACE(3, "get_this_threads_cpu_stack_addr(" - "stack_begin=%p, routine_id=%d, thread_specific_function_locals=%d)\n", - stack_begin, routine_id, thread_specific_function_locals); - OFFLOAD_TRACE(3, "cur_thread_id=%lld\n", cur_thread_id); - - stack_memory_manager_lock.lock(); - for (PersistDataList::iterator it = m_device.m_persist_list.begin(); - it != m_device.m_persist_list.end(); it++) - { - PersistData cur_el = *it; - print_persistList_item("Current element in persist list:", &cur_el); - if (stack_begin == cur_el.stack_cpu_addr) - { - // For OpenMP shared function locals matching is done without - // regard to thread id. But, we return the last match, which - // corresponds to the outer stack. - if (!thread_specific_function_locals) - { - matched = cur_el.cpu_stack_addr; - continue; - } - // For non-OpenMP shared function-local variables - // the thread-id must match - if (cur_thread_id == cur_el.thread_id) - { - matched = cur_el.cpu_stack_addr; - break; - } - } - } - stack_memory_manager_lock.unlock(); - if (matched != 0) - { - OFFLOAD_TRACE(3, "get_this_threads_cpu_stack_addr() => %p\n", matched); - return matched; - } - - OFFLOAD_TRACE(1, - "Could not find persistent data; expect Read/Write failure\n"); - return 0; -} - -// Search through persistent stack buffers -// for the top-of-stack MIC buffer for this thread -PtrData* OffloadDescriptor::get_this_threads_mic_stack_addr( - const void * stack_begin, - int routine_id, - bool thread_specific_function_locals -) -{ - uint64_t cur_thread_id = m_device.get_thread_id(); - PtrData* matched = 0; - - OFFLOAD_TRACE(3, "get_this_threads_mic_stack_addr(" - "stack_begin=%p, routine_id=%d, thread_specific_function_locals=%d)\n", - stack_begin, routine_id, thread_specific_function_locals); - OFFLOAD_TRACE(3, "cur_thread_id=%lld\n", cur_thread_id); - - stack_memory_manager_lock.lock(); - for (PersistDataList::iterator it = m_device.m_persist_list.begin(); - it != m_device.m_persist_list.end(); it++) - { - PersistData cur_el = *it; - print_persistList_item("Current element in persist list:", &cur_el); - if (stack_begin == cur_el.stack_cpu_addr) - { - // For OpenMP shared function locals matching is done without - // regard to thread id. But, we return the last match, which - // corresponds to the outer stack. - if (!thread_specific_function_locals) - { - matched = cur_el.stack_ptr_data; - continue; - } - // For non-OpenMP shared function-local variables - // the thread-id must match - if (cur_thread_id == cur_el.thread_id) - { - matched = cur_el.stack_ptr_data; - break; - } - } - } - stack_memory_manager_lock.unlock(); - if (matched != 0) - { - OFFLOAD_TRACE(3, "get_this_threads_mic_stack_addr() => %p\n", matched); - return matched; - } - - OFFLOAD_TRACE(1, - "Could not find persistent data; expect Read/Write failure\n"); - return 0; -} - -void OffloadDescriptor::setup_use_device_ptr(int i) -{ - PtrData *ptr_data; - ArrDesc *dvp; - void *base; - if (m_vars_extra[i].type_src == c_dv_ptr) { - dvp = *static_cast<ArrDesc**>(m_vars[i].ptr); - base = reinterpret_cast<void*>(dvp->Base); - } - else { - base = *static_cast<void**>(m_vars[i].ptr); - } - if (m_vars[i].direction.in) { - int64_t *device_ptr; - bool is_new = true; - - find_device_ptr(device_ptr, base); - - // Create a entry in targetptr table using device_ptr - // as lookup for later recover the host pointer - ptr_data = m_device.insert_targetptr_data(device_ptr, - 0, is_new); - - // Actually the base is a host pointer and cpu_addr is - // device pointer. This is special case where the 2 - // address usage is reversed to enable using existing - // PtrData structure instead of adding new fields. - ptr_data->mic_addr = (uint64_t) base; - - ptr_data->alloc_ptr_data_lock.unlock(); - - // Replace host pointer with device pointer - if (m_vars_extra[i].type_src == c_dv_ptr) { - dvp->Base = reinterpret_cast<dv_size>(device_ptr); - } - else { - *static_cast<void**>(m_vars[i].ptr) = device_ptr; - } - } - else if (m_vars[i].direction.out) { - // For use_device_ptr and out find associated host ptr - // and assign to host ptr - ptr_data = m_device.find_targetptr_data(base); - if (!ptr_data) { - LIBOFFLOAD_ERROR(c_no_ptr_data, base); - exit(1); - } - if (m_vars_extra[i].type_src == c_dv_ptr) { - dvp->Base = ptr_data->mic_addr; - } - else { - *static_cast<void**>(m_vars[i].ptr) = - reinterpret_cast<void*>(ptr_data->mic_addr); - } - m_device.remove_targetptr_data( - ptr_data->cpu_addr.start()); - } -} - -bool OffloadDescriptor::setup_descriptors( - VarDesc *vars, - VarDesc2 *vars2, - int vars_total, - int entry_id, - const void *stack_addr -) -{ - COIRESULT res; - // To enable caching the CPU stack base address for stack variables - char* this_threads_cpu_stack_addr = 0; - // To properly deal with non-OpenMP threading and function-local variables - // For OpenMP threading we support all function-locals in shared mode only - bool thread_specific_function_locals = !omp_in_parallel(); - - OffloadTimer timer(get_timer_data(), c_offload_host_setup_buffers); - // make a copy of variable descriptors - m_vars_total = vars_total; - if (vars_total > 0) { - m_vars = (VarDesc*) malloc(m_vars_total * sizeof(VarDesc)); - if (m_vars == NULL) - LIBOFFLOAD_ERROR(c_malloc); - memcpy(m_vars, vars, m_vars_total * sizeof(VarDesc)); - m_vars_extra = (VarExtra*) malloc(m_vars_total * sizeof(VarExtra)); - if (m_vars_extra == NULL) - LIBOFFLOAD_ERROR(c_malloc); - } - - // dependencies - m_in_deps_allocated = m_vars_total + 1; - m_in_deps = (COIEVENT*) malloc(sizeof(COIEVENT) * m_in_deps_allocated); - if (m_in_deps == NULL) - LIBOFFLOAD_ERROR(c_malloc); - if (m_vars_total > 0) { - m_out_deps_allocated = m_vars_total; - m_out_deps = (COIEVENT*) malloc(sizeof(COIEVENT) * m_out_deps_allocated); - if (m_out_deps == NULL) - LIBOFFLOAD_ERROR(c_malloc); - } - // copyin/copyout data length - m_in_datalen = 0; - m_out_datalen = 0; - - // First pass over variable descriptors - // - Calculate size of the input and output non-pointer data - // - Allocate buffers for input and output pointers - for (int i = 0; i < m_vars_total; i++) { - void* alloc_base = NULL; - int64_t alloc_disp = 0; - int64_t alloc_size = 0; - bool src_is_for_mic = (m_vars[i].direction.out || - m_vars[i].into == NULL); - bool src_is_for_host = (m_vars[i].direction.in || - m_vars[i].into == NULL); - const char *var_sname = ""; - if (vars2 != NULL && i < vars_total) { - if (vars2[i].sname != NULL) { - var_sname = vars2[i].sname; - } - } - - // instead of m_vars[i].type.src we will use m_vars_extra[i].type_src - if (m_vars[i].type.src == c_extended_type) { - VarDescExtendedType *etype = - reinterpret_cast<VarDescExtendedType*>(m_vars[i].ptr); - m_vars_extra[i].type_src = etype->extended_type; - m_vars[i].ptr = etype->ptr; - } - else { - m_vars_extra[i].type_src = m_vars[i].type.src; - } - // instead of m_vars[i].type.dst we will use m_vars_extra[i].type_dst - if (m_vars[i].type.dst == c_extended_type) { - VarDescExtendedType *etype = - reinterpret_cast<VarDescExtendedType*>(m_vars[i].into); - if (etype) { - m_vars_extra[i].type_dst = etype->extended_type; - m_vars[i].into = etype->ptr; - } - else { - m_vars_extra[i].type_dst = m_vars_extra[i].type_src; - } - } - else { - m_vars_extra[i].type_dst = m_vars[i].type.dst; - } - OFFLOAD_TRACE(2, " VarDesc %d, var=%s, %s, %s\n", - i, var_sname, - vardesc_direction_as_string[m_vars[i].direction.bits], - vardesc_type_as_string[m_vars_extra[i].type_src]); - if (vars2 != NULL && i < vars_total && vars2[i].dname != NULL) { - OFFLOAD_TRACE(2, " into=%s, %s\n", vars2[i].dname, - vardesc_type_as_string[m_vars_extra[i].type_dst]); - } - OFFLOAD_TRACE(2, - " type_src=%d, type_dstn=%d, direction=%d, " - "alloc_if=%d, free_if=%d, align=%d, mic_offset=%d, flags=0x%x, " - "offset=%lld, size=%lld, count/disp=%lld, ptr=%p, into=%p\n", - m_vars_extra[i].type_src, - m_vars_extra[i].type_dst, - m_vars[i].direction.bits, - m_vars[i].alloc_if, - m_vars[i].free_if, - m_vars[i].align, - m_vars[i].mic_offset, - m_vars[i].flags.bits, - m_vars[i].offset, - m_vars[i].size, - m_vars[i].count, - m_vars[i].ptr, - m_vars[i].into); - // If any varDesc flags bits set, show them - if (console_enabled >= 1 && m_vars[i].flags.bits != 0) { - trace_varDesc_flags(get_timer_data(), m_vars[i].flags); - } - - // preallocated implies targetptr - if (m_vars[i].flags.preallocated) { - // targetptr preallocated alloc_if(1) may not be used with - // an in clause - if (m_vars[i].direction.in && m_vars[i].alloc_if) { - LIBOFFLOAD_ERROR(c_in_with_preallocated); - exit(1); - } - m_vars[i].flags.targetptr = 1; - } - if (m_vars[i].alloc != NULL) { - // array descriptor - const Arr_Desc *ap = - static_cast<const Arr_Desc*>(m_vars[i].alloc); - - // debug dump - ARRAY_DESC_DUMP(" ", "ALLOC", ap, 0, 1); - - __arr_data_offset_and_length(ap, alloc_disp, alloc_size); - - alloc_base = reinterpret_cast<void*>(ap->base); - } - - m_vars_extra[i].alloc = m_vars[i].alloc; - m_vars_extra[i].auto_data = 0; - m_vars_extra[i].cpu_disp = 0; - m_vars_extra[i].cpu_offset = 0; - m_vars_extra[i].src_data = 0; - m_vars_extra[i].read_rng_src = 0; - m_vars_extra[i].read_rng_dst = 0; - m_vars_extra[i].omp_last_event_type = c_last_not; - // flag is_arr_ptr_el is 1 only for var_descs generated - // for c_data_ptr_array type - if (i < vars_total) { - m_vars_extra[i].is_arr_ptr_el = 0; - } - if (TYPE_IS_PTR_TO_PTR(m_vars_extra[i].type_src) || - TYPE_IS_PTR_TO_PTR(m_vars_extra[i].type_dst) || - m_vars[i].flags.is_pointer) { - m_vars_extra[i].pointer_offset = m_vars[i].offset; - m_vars[i].offset = 0; - m_in_datalen += sizeof(m_vars[i].offset); - } - - switch (m_vars_extra[i].type_src) { - case c_data_ptr_array: - { - const Arr_Desc *ap; - const VarDesc3 *vd3 = - static_cast<const VarDesc3*>(m_vars[i].ptr); - int flags = vd3->array_fields; - OFFLOAD_TRACE(2, - " pointer array flags = %04x\n", flags); - OFFLOAD_TRACE(2, - " pointer array type is %s\n", - vardesc_type_as_string[flags & 0x3f]); - ap = static_cast<const Arr_Desc*>(vd3->ptr_array); - ARRAY_DESC_DUMP(" ", "ptr array", ap, - m_vars[i].flags.is_pointer, 1); - if (m_vars[i].into) { - ap = static_cast<const Arr_Desc*>(m_vars[i].into); - ARRAY_DESC_DUMP( - " ", "into array", ap, 0, 1); - } - if ((flags & (1<<flag_align_is_array)) != 0) { - ap = static_cast<const Arr_Desc*>(vd3->align_array); - ARRAY_DESC_DUMP( - " ", "align array", ap, 0, 1); - } - if ((flags & (1<<flag_alloc_if_is_array)) != 0) { - ap = static_cast<const Arr_Desc*>(vd3->alloc_if_array); - ARRAY_DESC_DUMP( - " ", "alloc_if array", ap, 0, 1); - } - if ((flags & (1<<flag_free_if_is_array)) != 0) { - ap = static_cast<const Arr_Desc*>(vd3->free_if_array); - ARRAY_DESC_DUMP( - " ", "free_if array", ap, 0, 1); - } - if ((flags & (1<<flag_extent_start_is_array)) != 0) { - ap = static_cast<const Arr_Desc*>(vd3->extent_start); - ARRAY_DESC_DUMP( - " ", "extent_start array", ap, 0, 1); - } else if ((flags & - (1<<flag_extent_start_is_scalar)) != 0) { - OFFLOAD_TRACE(2, - " extent_start scalar = %d\n", - (int64_t)vd3->extent_start); - } - if ((flags & (1<<flag_extent_elements_is_array)) != 0) { - ap = static_cast<const Arr_Desc*> - (vd3->extent_elements); - ARRAY_DESC_DUMP(" ", - "extent_elements array", ap, 0, 1); - } else if ((flags & - (1<<flag_extent_elements_is_scalar)) != 0) { - OFFLOAD_TRACE(2, - " extent_elements scalar = %d\n", - (int64_t)vd3->extent_elements); - } - if ((flags & (1<<flag_into_start_is_array)) != 0) { - ap = static_cast<const Arr_Desc*>(vd3->into_start); - ARRAY_DESC_DUMP( - " ", "into_start array", ap, 0, 1); - } else if ((flags & - (1<<flag_into_start_is_scalar)) != 0) { - OFFLOAD_TRACE(2, - " into_start scalar = %d\n", - (int64_t)vd3->into_start); - } - if ((flags & (1<<flag_into_elements_is_array)) != 0) { - ap = static_cast<const Arr_Desc*>(vd3->into_elements); - ARRAY_DESC_DUMP( - " ", "into_elements array", ap, 0, 1); - } else if ((flags & - (1<<flag_into_elements_is_scalar)) != 0) { - OFFLOAD_TRACE(2, - " into_elements scalar = %d\n", - (int64_t)vd3->into_elements); - } - if ((flags & (1<<flag_alloc_start_is_array)) != 0) { - ap = static_cast<const Arr_Desc*>(vd3->alloc_start); - ARRAY_DESC_DUMP( - " ", "alloc_start array", ap, 0, 1); - } else if ((flags & - (1<<flag_alloc_start_is_scalar)) != 0) { - OFFLOAD_TRACE(2, - " alloc_start scalar = %d\n", - (int64_t)vd3->alloc_start); - } - if ((flags & (1<<flag_alloc_elements_is_array)) != 0) { - ap = static_cast<const Arr_Desc*>(vd3->alloc_elements); - ARRAY_DESC_DUMP(" ", - "alloc_elements array", ap, 0, 1); - } else if ((flags & - (1<<flag_alloc_elements_is_scalar)) != 0) { - OFFLOAD_TRACE(2, - " alloc_elements scalar = %d\n", - (int64_t)vd3->alloc_elements); - } - } - if (!gen_var_descs_for_pointer_array(i)) { - return false; - } - break; - - case c_data: - case c_void_ptr: - case c_void_ptr_ptr: - case c_cean_var: - // In all uses later - // VarDesc.size will have the length of the data to be - // transferred - // VarDesc.disp will have an offset from base - - if (m_vars[i].flags.is_non_cont_struct && src_is_for_host) { - NonContigDesc *desc = - static_cast<NonContigDesc*>(m_vars[i].ptr); - noncont_struct_dump(" ", "DATA", desc); - m_vars_extra[i].noncont_desc = desc; - m_vars[i].ptr = reinterpret_cast<void*>(desc->base); - m_vars[i].size = get_noncont_struct_size(desc); - m_vars[i].disp = 0; - } - else if (m_vars_extra[i].type_src == c_cean_var) { - // array descriptor - const Arr_Desc *ap = - static_cast<const Arr_Desc*>(m_vars[i].ptr); - - // debug dump - ARRAY_DESC_DUMP("", "IN/OUT", ap, 0, !src_is_for_mic); - - // offset and length are derived from the array descriptor - __arr_data_offset_and_length(ap, m_vars[i].disp, - m_vars[i].size); - if (!is_arr_desc_contiguous(ap)) { - m_vars[i].flags.is_noncont_src = 1; - m_vars_extra[i].read_rng_src = - init_read_ranges_arr_desc(ap); - } - // all necessary information about length and offset is - // transferred in var descriptor. There is no need to send - // array descriptor to the target side. - m_vars[i].ptr = reinterpret_cast<void*>(ap->base); - } - else { - m_vars[i].size *= m_vars[i].count; - m_vars[i].disp = 0; - } - - if (m_vars[i].direction.bits) { - // make sure that transfer size > 0 - if (m_vars[i].size <= 0) { - LIBOFFLOAD_ERROR(c_zero_or_neg_transfer_size); - exit(1); - } - - if (m_vars[i].flags.is_static) { - PtrData *ptr_data; - // find data associated with variable - if (!find_ptr_data(ptr_data, - m_vars[i].ptr, - m_vars[i].disp, - m_vars[i].size, - false, false)) { - return false; - } - - if (ptr_data != 0) { - // offset to base from the beginning of the buffer - // memory - m_vars[i].offset = - (char*) m_vars[i].ptr - - (char*) ptr_data->cpu_addr.start(); - } - else { - m_vars[i].flags.is_static = false; - if (m_vars[i].into == NULL) { - m_vars[i].flags.is_static_dstn = false; - } - } - m_vars_extra[i].src_data = ptr_data; - } - - if (m_vars[i].direction.in && - !m_vars[i].flags.is_static && - !m_vars[i].flags.is_stack_buf) { - m_in_datalen += m_vars[i].size; - - // for non-static target destination defined as CEAN - // expression we pass to target its size and dist - if (m_vars[i].into == NULL && - m_vars_extra[i].type_src == c_cean_var) { - m_in_datalen += 2 * sizeof(uint64_t); - } - m_need_runfunction = true; - } - if (m_vars[i].direction.out && - !m_vars[i].flags.is_static && - !m_vars[i].flags.is_stack_buf) { - m_out_datalen += m_vars[i].size; - m_need_runfunction = true; - } - } - if (m_is_openmp && src_is_for_host && - !m_vars[i].flags.is_device_ptr) { - if (m_vars[i].flags.is_static) { - PtrData *ptr_data = m_vars_extra[i].src_data; - // Static data is transferred either by omp target - // update construct which passes zeros for - // alloc_if and free_if or by always modifier. - // Implicit openmp reference is transfered also - // if its reference count is equal to 1 - if (ptr_data && - IS_OPENMP_IMPLICIT_OR_LINK(ptr_data->var_alloc_type)) { - if (m_vars[i].alloc_if) { - ptr_data->add_reference(); - } - - if (!m_vars[i].flags.always_copy && - (m_vars[i].alloc_if || m_vars[i].free_if) && - ptr_data->get_reference() != 1) { - m_vars[i].direction.bits = c_parameter_nocopy; - } - } - else if ( - !m_vars[i].flags.always_copy && - (m_vars[i].alloc_if || m_vars[i].free_if)) { - m_vars[i].direction.bits = c_parameter_nocopy; - } - } - else { - AutoData *auto_data; - if (m_vars[i].alloc_if) { - auto_data = m_device.insert_auto_data( - m_vars[i].ptr, m_vars[i].size); - auto_data->add_reference(); - } - else { - // TODO: what should be done if var is not in - // the table? - auto_data = m_device.find_auto_data( - m_vars[i].ptr); - } - - // For automatic variables data is transferred: - // - if always modifier is used OR - // - if alloc_if == 0 && free_if == 0 OR - // - if reference count is 1 - if (!m_vars[i].flags.always_copy && - (m_vars[i].alloc_if || m_vars[i].free_if) && - auto_data != 0 && - auto_data->get_reference() != 1) { - m_vars[i].direction.bits = c_parameter_nocopy; - } - - // save data for later use - m_vars_extra[i].auto_data = auto_data; - } - } - break; - - case c_dv: - if (m_vars[i].flags.use_device_ptr) { - setup_use_device_ptr(i); - break; - } - else if (m_vars[i].direction.bits || - m_vars[i].alloc_if || - m_vars[i].free_if) { - ArrDesc *dvp = static_cast<ArrDesc*>(m_vars[i].ptr); - - // debug dump - __dv_desc_dump("IN/OUT", dvp); - - // send dope vector contents excluding base - m_in_datalen += m_vars[i].size - sizeof(uint64_t); - m_need_runfunction = true; - } - break; - - case c_string_ptr: - case c_string_ptr_ptr: - if ((m_vars[i].direction.bits || - m_vars[i].alloc_if || - m_vars[i].free_if) && - m_vars[i].size == 0) { - m_vars[i].size = 1; - m_vars[i].count = - strlen(*static_cast<char**>(m_vars[i].ptr)) + 1; - } - /* fallthru */ - - case c_data_ptr: - case c_data_ptr_ptr: - if (m_vars[i].flags.is_stack_buf && - !m_vars[i].direction.bits && - m_vars[i].alloc_if) { - // this var_desc is for stack buffer - bool is_new; - - if (!offload_stack_memory_manager( - stack_addr, entry_id, - m_vars[i].count, m_vars[i].align, - thread_specific_function_locals, &is_new)) { - return false; - } - if (is_new) { - m_compute_buffers.push_back( - m_stack_ptr_data->mic_buf); - m_device.m_persist_list.front().cpu_stack_addr = - static_cast<char*>(m_vars[i].ptr); - PersistData *new_el = &m_device.m_persist_list.front(); - print_persistList_item( - "New element in persist list:", - new_el); - } - else { - m_vars[i].flags.sink_addr = 1; - m_in_datalen += sizeof(m_stack_ptr_data->mic_addr); - if (thread_specific_function_locals) { - m_stack_ptr_data = get_this_threads_mic_stack_addr( - stack_addr, entry_id, - thread_specific_function_locals); - } - } - m_vars[i].size = m_destroy_stack.size(); - m_vars_extra[i].src_data = m_stack_ptr_data; - - // need to add or remove references for stack buffer at target - if (is_new || m_destroy_stack.size()) { - m_need_runfunction = true; - } - - break; - } - /* fallthru */ - - case c_cean_var_ptr: - case c_cean_var_ptr_ptr: - case c_dv_ptr: - if (m_vars[i].flags.is_non_cont_struct && src_is_for_host) { - NonContigDesc *desc = - static_cast<NonContigDesc*>(m_vars[i].ptr); - noncont_struct_dump(" ", "PTR", desc); - m_vars_extra[i].noncont_desc = desc; - m_vars[i].ptr = reinterpret_cast<void*>(desc->base); - m_vars[i].disp = 0; - } - else if (m_vars_extra[i].type_src == c_cean_var_ptr || - m_vars_extra[i].type_src == c_cean_var_ptr_ptr) { - // array descriptor - const Arr_Desc *ap = - static_cast<const Arr_Desc*>(m_vars[i].ptr); - - // debug dump - ARRAY_DESC_DUMP("", "IN/OUT", ap, 1, !src_is_for_mic); - - // offset and length are derived from the array descriptor - __arr_data_offset_and_length(ap, m_vars[i].disp, - m_vars[i].size); - - if (!is_arr_desc_contiguous(ap)) { - m_vars[i].flags.is_noncont_src = 1; - m_vars_extra[i].read_rng_src = - init_read_ranges_arr_desc(ap); - } - // all necessary information about length and offset is - // transferred in var descriptor. There is no need to send - // array descriptor to the target side. - m_vars[i].ptr = reinterpret_cast<void*>(ap->base); - } - else if (m_vars_extra[i].type_src == c_dv_ptr) { - // need to send DV to the device unless it is 'nocopy' - if (m_vars[i].direction.bits || - m_vars[i].alloc_if || - m_vars[i].free_if) { - ArrDesc *dvp = *static_cast<ArrDesc**>(m_vars[i].ptr); - - // debug dump - __dv_desc_dump("IN/OUT", dvp); - - // for use_device_ptr don't need to change - // OUT direction to IN direction - if (!m_vars[i].flags.use_device_ptr) { - m_vars[i].direction.bits = c_parameter_in; - } - } - - // no displacement - m_vars[i].disp = 0; - } - else { - // For "use_device_ptr" if direction is "in" then need to - // find the associated device pointer and replace the host - // pointer with device pointer. Also save the host pointer - // to restore when "out" is encountered. - // For "out" find the host pointer associated with the - // device pointer and restore the host pointer - if (m_vars[i].flags.use_device_ptr && src_is_for_host) { - setup_use_device_ptr(i); - break; - } - - // c_data_ptr or c_string_ptr - m_vars[i].size *= m_vars[i].count; - m_vars[i].disp = 0; - } - - if (m_vars[i].direction.bits || - m_vars[i].alloc_if || - m_vars[i].free_if) { - PtrData *ptr_data; - - // check that buffer length > 0 - if (m_vars[i].alloc_if && - m_vars[i].disp + m_vars[i].size < - (m_is_openmp ? 0 : 1)) { - LIBOFFLOAD_ERROR(c_zero_or_neg_ptr_len); - exit(1); - } - - // base address - void *base = *static_cast<void**>(m_vars[i].ptr); - - // allocate buffer if we have no INTO and don't need - // allocation for the ptr at target - if (src_is_for_mic) { - if (m_vars[i].flags.is_stack_buf) { - // for stack persistent objects ptr data is created - // by var_desc with number 0. - // Its ptr_data is stored at m_stack_ptr_data - ptr_data = m_stack_ptr_data; - } - else if (m_vars[i].alloc_if) { - if (m_vars[i].flags.preallocated) { - m_out_datalen += sizeof(void*); - m_need_runfunction = true; - break; - } - // add new entry - if (!alloc_ptr_data( - ptr_data, - reinterpret_cast<char *>(base) + alloc_disp, - (alloc_base != NULL) ? - alloc_disp : m_vars[i].disp, - (alloc_base != NULL) ? - alloc_size : m_vars[i].size, - alloc_disp, - (alloc_base != NULL) ? - 0 : m_vars[i].align, - m_vars[i].flags.targetptr, - 0, - m_vars[i].flags.pin)) { - return false; - } - if (m_vars[i].flags.targetptr) { - if (!init_mic_address(ptr_data)) { - return false; - } - *static_cast<void**>(m_vars[i].ptr) = base = - reinterpret_cast<void*>(ptr_data->mic_addr); - } - if (ptr_data->add_reference() == 0 && - ptr_data->mic_buf != 0) { - // add buffer to the list of buffers that - // are passed to dispatch call - m_compute_buffers.push_back( - ptr_data->mic_buf); - } - else if (!m_vars[i].flags.pin && - !m_vars[i].flags.preallocated) { - // will send buffer address to device - m_vars[i].flags.sink_addr = 1; - m_in_datalen += sizeof(ptr_data->mic_addr); - } - - if (!m_vars[i].flags.pin && - !ptr_data->is_static) { - // need to add reference for buffer - m_need_runfunction = true; - } - } - else { - bool error_if_not_found = true; - if (m_is_openmp) { - // For omp target update variable is ignored - // if it does not exist. - if (m_vars[i].flags.always_copy || - (!m_vars[i].alloc_if && - !m_vars[i].free_if)) { - error_if_not_found = false; - } - } - - // use existing association from pointer table - if (!find_ptr_data(ptr_data, - base, - m_vars[i].disp, - m_vars[i].size, - m_vars[i].flags.targetptr, - error_if_not_found)) { - return false; - } - - if (m_is_openmp) { - // make var nocopy if it does not exist - if (ptr_data == 0) { - m_vars[i].direction.bits = - c_parameter_nocopy; - } - } - - if (ptr_data != 0) { - m_vars[i].flags.sink_addr = 1; - m_in_datalen += sizeof(ptr_data->mic_addr); - } - } - - if (ptr_data != 0) { - - if (ptr_data->alloc_disp != 0) { - m_vars[i].flags.alloc_disp = 1; - m_in_datalen += sizeof(alloc_disp); - } - - if (m_vars[i].flags.sink_addr) { - // get buffers's address on the sink - if (!init_mic_address(ptr_data)) { - return false; - } - - m_in_datalen += sizeof(ptr_data->mic_addr); - } - - if (!m_vars[i].flags.pin && - !ptr_data->is_static && m_vars[i].free_if) { - // need to decrement buffer reference on target - m_need_runfunction = true; - } - - // offset to base from the beginning of the buffer - // memory - m_vars[i].offset = (char*) base - - (char*) ptr_data->cpu_addr.start(); - - // copy other pointer properties to var descriptor - m_vars[i].mic_offset = ptr_data->mic_offset; - m_vars[i].flags.is_static = ptr_data->is_static; - } - } - else { - if (!find_ptr_data(ptr_data, - base, - m_vars[i].disp, - m_vars[i].size, - false, false)) { - return false; - } - if (ptr_data) { - m_vars[i].offset = - (char*) base - - (char*) ptr_data->cpu_addr.start(); - } - } - - if (m_is_openmp) { - if (m_vars[i].flags.use_device_ptr) { - setup_use_device_ptr(i); - } - // for TO transfer of stack buffer's variable - if (src_is_for_host && m_vars[i].flags.is_stack_buf) { - AutoData *auto_data; - char *base = *static_cast<char**>(m_vars[i].ptr); - if (m_vars[i].alloc_if) { - auto_data =m_device.insert_auto_data( - base + m_vars[i].disp, - m_vars[i].size); - auto_data->add_reference(); - } - else { - auto_data = m_device.find_auto_data( - base + m_vars[i].disp); - } - // save data for later use - m_vars_extra[i].auto_data = auto_data; - - // For automatic variables - // data is transferred: - // - if always modifier is used OR - // - if alloc_if == 0 && free_if == 0 OR - // - if reference count is 1 - if (!m_vars[i].flags.always_copy && - (m_vars[i].alloc_if || - m_vars[i].free_if) && - auto_data != 0 && - auto_data->get_reference() != 1) { - m_vars[i].direction.bits = - c_parameter_nocopy; - } - } - // for FROM transfer of global pointer variable - // FROM transfer of stack buffer's variable - // is treated at INTO branch - else if (src_is_for_mic && - !m_vars[i].flags.is_stack_buf) { - // data is transferred only if - // alloc_if == 0 && free_if == 0 - // or reference count is 1 - if (!m_vars[i].flags.always_copy && - (m_vars[i].alloc_if || - m_vars[i].free_if) && - ptr_data && - ptr_data->get_reference() != 1) - { - m_vars[i].direction.bits = - c_parameter_nocopy; - } - } - } - // save pointer data - m_vars_extra[i].src_data = ptr_data; - } - break; - - case c_func_ptr: - case c_func_ptr_ptr: - if (m_vars[i].direction.in) { - m_in_datalen += __offload_funcs.max_name_length(); - } - if (m_vars[i].direction.out) { - m_out_datalen += __offload_funcs.max_name_length(); - } - m_need_runfunction = true; - break; - - case c_dv_data: - case c_dv_ptr_data: - case c_dv_data_slice: - case c_dv_ptr_data_slice: - ArrDesc *dvp; - if (m_vars[i].flags.is_non_cont_struct) { - NonContigDesc *desc = - static_cast<NonContigDesc*>(m_vars[i].ptr); - noncont_struct_dump(" ", "DV-DATA", desc); - dvp = reinterpret_cast<ArrDesc*>(desc->base); - } - else if (VAR_TYPE_IS_DV_DATA_SLICE(m_vars_extra[i].type_src)) { - const Arr_Desc *ap; - ap = static_cast<const Arr_Desc*>(m_vars[i].ptr); - - dvp = (m_vars_extra[i].type_src == c_dv_data_slice) ? - reinterpret_cast<ArrDesc*>(ap->base) : - *reinterpret_cast<ArrDesc**>(ap->base); - } - else { - dvp = (m_vars_extra[i].type_src == c_dv_data) ? - static_cast<ArrDesc*>(m_vars[i].ptr) : - *static_cast<ArrDesc**>(m_vars[i].ptr); - } - - // if allocatable dope vector isn't allocated don't - // transfer its data - if (!__dv_is_allocated(dvp)) { - m_vars[i].direction.bits = c_parameter_nocopy; - m_vars[i].alloc_if = 0; - m_vars[i].free_if = 0; - } - if (m_vars[i].direction.bits || - m_vars[i].alloc_if || - m_vars[i].free_if) { - const Arr_Desc *ap; - - if (VAR_TYPE_IS_DV_DATA_SLICE(m_vars_extra[i].type_src)) { - ap = static_cast<const Arr_Desc*>(m_vars[i].ptr); - - // debug dump - ARRAY_DESC_DUMP("", "IN/OUT", ap, 0, !src_is_for_mic); - } - if (!__dv_is_contiguous(dvp)) { - m_vars[i].flags.is_noncont_src = 1; - m_vars_extra[i].read_rng_src = - init_read_ranges_dv(dvp); - } - - // size and displacement - if (VAR_TYPE_IS_DV_DATA_SLICE(m_vars_extra[i].type_src)) { - // offset and length are derived from the - // array descriptor - __arr_data_offset_and_length(ap, - m_vars[i].disp, - m_vars[i].size); - if (m_vars[i].direction.bits) { - if (!is_arr_desc_contiguous(ap)) { - if (m_vars[i].flags.is_noncont_src) { - LIBOFFLOAD_ERROR(c_slice_of_noncont_array); - return false; - } - m_vars[i].flags.is_noncont_src = 1; - m_vars_extra[i].read_rng_src = - init_read_ranges_arr_desc(ap); - } - } - } - else { - if (m_vars[i].flags.has_length) { - m_vars[i].size = - __dv_data_length(dvp, m_vars[i].count); - } - else { - m_vars[i].size = __dv_data_length(dvp); - } - m_vars[i].disp = 0; - } - - // check that length >= 0 - if (m_vars[i].alloc_if && - (m_vars[i].disp + m_vars[i].size < 0)) { - LIBOFFLOAD_ERROR(c_zero_or_neg_ptr_len); - exit(1); - } - - // base address - void *base = reinterpret_cast<void*>(dvp->Base); - PtrData *ptr_data; - - // allocate buffer if we have no INTO and don't need - // allocation for the ptr at target - if (src_is_for_mic) { - if (m_vars[i].alloc_if) { - // add new entry - if (!alloc_ptr_data( - ptr_data, - reinterpret_cast<char *>(base) + alloc_disp, - (alloc_base != NULL) ? - alloc_disp : m_vars[i].disp, - (alloc_base != NULL) ? - alloc_size : m_vars[i].size, - alloc_disp, - (alloc_base != NULL) ? - 0 : m_vars[i].align, - m_vars[i].flags.targetptr, - m_vars[i].flags.preallocated, - m_vars[i].flags.pin)) { - return false; - } - - if (ptr_data->add_reference() == 0 && - ptr_data->mic_buf != 0) { - // add buffer to the list of buffers - // that are passed to dispatch call - m_compute_buffers.push_back( - ptr_data->mic_buf); - } - else { - // will send buffer address to device - m_vars[i].flags.sink_addr = 1; - } - - if (!ptr_data->is_static) { - // need to add reference for buffer - m_need_runfunction = true; - } - } - else { - bool error_if_not_found = true; - if (m_is_openmp) { - // For omp target update variable is ignored - // if it does not exist. - if (m_vars[i].flags.always_copy || - (!m_vars[i].alloc_if && - !m_vars[i].free_if)) { - error_if_not_found = false; - } - } - - // use existing association from pointer table - if (!find_ptr_data(ptr_data, - base, - m_vars[i].disp, - m_vars[i].size, - m_vars[i].flags.targetptr, - error_if_not_found)) { - return false; - } - - if (m_is_openmp) { - // make var nocopy if it does not exist - if (ptr_data == 0) { - m_vars[i].direction.bits = - c_parameter_nocopy; - } - } - - if (ptr_data != 0) { - // need to update base in dope vector on device - m_vars[i].flags.sink_addr = 1; - } - } - - if (ptr_data != 0) { - if (m_is_openmp) { - // data is transferred if - // - if always modifier is used OR - // - if alloc_if == 0 && free_if == 0 OR - // - if reference count is 1 - if (!m_vars[i].flags.always_copy && - (m_vars[i].alloc_if || - m_vars[i].free_if) && - ptr_data->get_reference() != 1) { - m_vars[i].direction.bits = - c_parameter_nocopy; - } - } - - if (ptr_data->alloc_disp != 0) { - m_vars[i].flags.alloc_disp = 1; - m_in_datalen += sizeof(alloc_disp); - } - - if (m_vars[i].flags.sink_addr) { - // get buffers's address on the sink - if (!init_mic_address(ptr_data)) { - return false; - } - - m_in_datalen += sizeof(ptr_data->mic_addr); - } - - if (!ptr_data->is_static && m_vars[i].free_if) { - // need to decrement buffer reference on target - m_need_runfunction = true; - } - - // offset to base from the beginning of the buffer - // memory - m_vars[i].offset = - (char*) base - - (char*) ptr_data->cpu_addr.start(); - - // copy other pointer properties to var descriptor - m_vars[i].mic_offset = ptr_data->mic_offset; - m_vars[i].flags.is_static = ptr_data->is_static; - } - } - else { // !src_is_for_mic - if (!find_ptr_data(ptr_data, - base, - m_vars[i].disp, - m_vars[i].size, - false, false)) { - return false; - } - m_vars[i].offset = !ptr_data ? 0 : - (char*) base - - (char*) ptr_data->cpu_addr.start(); - } - - // save pointer data - m_vars_extra[i].src_data = ptr_data; - } - break; - - default: - LIBOFFLOAD_ERROR(c_unknown_var_type, m_vars_extra[i].type_src); - LIBOFFLOAD_ABORT; - } - if (m_vars_extra[i].type_src == c_data_ptr_array) { - continue; - } - - if (src_is_for_mic && m_vars[i].flags.is_stack_buf) { - if (this_threads_cpu_stack_addr == 0) { - this_threads_cpu_stack_addr = - get_this_threads_cpu_stack_addr( - stack_addr, entry_id, thread_specific_function_locals); - } - m_vars[i].offset = static_cast<char*> - (m_vars[i].ptr) - - this_threads_cpu_stack_addr; - } - // if source is used at CPU save its offset and disp - if (m_vars[i].into == NULL || m_vars[i].direction.in) { - m_vars_extra[i].cpu_offset = m_vars[i].offset; - m_vars_extra[i].cpu_disp = m_vars[i].disp; - } - - // If "into" is define we need to do the similar work for it - if (!m_vars[i].into) { - continue; - } - - int64_t into_disp =0, into_offset = 0; - - switch (m_vars_extra[i].type_dst) { - case c_data_ptr_array: - break; - case c_data: - case c_void_ptr: - case c_void_ptr_ptr: - case c_cean_var: { - int64_t size = m_vars[i].size; - - if (m_vars[i].flags.is_non_cont_struct && src_is_for_mic) { - NonContigDesc *desc = - static_cast<NonContigDesc*>(m_vars[i].into); - noncont_struct_dump("", "INTO DATA", desc); - m_vars_extra[i].noncont_desc = desc; - m_vars[i].into = reinterpret_cast<void*>(desc->base); - size = get_noncont_struct_size(desc); - into_disp = 0; - } - else if (m_vars_extra[i].type_dst == c_cean_var) { - // array descriptor - const Arr_Desc *ap = - static_cast<const Arr_Desc*>(m_vars[i].into); - - // debug dump - ARRAY_DESC_DUMP(" ", "INTO", ap, 0, src_is_for_mic); - - // offset and length are derived from the array descriptor - __arr_data_offset_and_length(ap, into_disp, size); - - if (!is_arr_desc_contiguous(ap)) { - m_vars[i].flags.is_noncont_dst = 1; - m_vars_extra[i].read_rng_dst = - init_read_ranges_arr_desc(ap); - if (!cean_ranges_match( - m_vars_extra[i].read_rng_src, - m_vars_extra[i].read_rng_dst)) { - LIBOFFLOAD_ERROR(c_ranges_dont_match); - exit(1); - } - } - m_vars[i].into = reinterpret_cast<void*>(ap->base); - } - - int64_t size_src = m_vars_extra[i].read_rng_src && - !m_vars[i].flags.is_non_cont_struct ? - cean_get_transf_size(m_vars_extra[i].read_rng_src) : - m_vars[i].size; - int64_t size_dst = m_vars_extra[i].read_rng_dst ? - cean_get_transf_size(m_vars_extra[i].read_rng_dst) : - size; - // It's supposed that "into" size must be not less - // than src size - if (size_src > size_dst) { - LIBOFFLOAD_ERROR(c_different_src_and_dstn_sizes, - size_src, size_dst); - exit(1); - } - - if (m_vars[i].direction.bits) { - if (m_vars[i].flags.is_static_dstn) { - PtrData *ptr_data; - - // find data associated with variable - if (!find_ptr_data(ptr_data, m_vars[i].into, - into_disp, size, false, false)) { - return false; - } - if (ptr_data != 0) { - // offset to base from the beginning of the buffer - // memory - into_offset = - (char*) m_vars[i].into - - (char*) ptr_data->cpu_addr.start(); - } - else { - m_vars[i].flags.is_static_dstn = false; - } - m_vars_extra[i].dst_data = ptr_data; - } - } - - if (m_vars[i].direction.in && - !m_vars[i].flags.is_static_dstn) { - m_in_datalen += m_vars[i].size; - - // for non-static target destination defined as CEAN - // expression we pass to target its size and dist - if (m_vars_extra[i].type_dst == c_cean_var) { - m_in_datalen += 2 * sizeof(uint64_t); - } - m_need_runfunction = true; - } - - if (m_is_openmp && src_is_for_mic) { - if (m_vars[i].flags.is_static_dstn) { - // Static data is transferred either by omp target - // update construct which passes zeros for - // alloc_if and free_if or by always modifier. - if (!m_vars[i].flags.always_copy && - (m_vars[i].alloc_if || m_vars[i].free_if)) { - m_vars[i].direction.bits = c_parameter_nocopy; - } - } - else { - AutoData *auto_data; - if (m_vars[i].alloc_if) { - auto_data = m_device.insert_auto_data( - m_vars[i].into, size_dst); - auto_data->add_reference(); - } - else { - // TODO: what should be done if var is not in - // the table? - auto_data = m_device.find_auto_data( - m_vars[i].into); - } - - // For automatic variables data is transferred: - // - if always modifier is used OR - // - if alloc_if == 0 && free_if == 0 OR - // - if reference count is 1 - if (!m_vars[i].flags.always_copy && - (m_vars[i].alloc_if || m_vars[i].free_if) && - (auto_data == 0 || - auto_data->get_reference() != 1)) { - m_vars[i].direction.bits = c_parameter_nocopy; - } - // save data for later use - m_vars_extra[i].auto_data = auto_data; - } - } - break; - } - - case c_dv: - if (m_vars[i].direction.bits || - m_vars[i].alloc_if || - m_vars[i].free_if) { - ArrDesc *dvp = static_cast<ArrDesc*>(m_vars[i].into); - - // debug dump - __dv_desc_dump("INTO", dvp); - - // send dope vector contents excluding base - m_in_datalen += m_vars[i].size - sizeof(uint64_t); - m_need_runfunction = true; - } - break; - - case c_string_ptr: - case c_data_ptr: - case c_string_ptr_ptr: - case c_data_ptr_ptr: - case c_cean_var_ptr: - case c_cean_var_ptr_ptr: - case c_dv_ptr: { - int64_t size = m_vars[i].size; - - if (m_vars_extra[i].type_dst == c_cean_var_ptr || - m_vars_extra[i].type_dst == c_cean_var_ptr_ptr) { - // array descriptor - const Arr_Desc *ap = - static_cast<const Arr_Desc*>(m_vars[i].into); - - // debug dump - ARRAY_DESC_DUMP(" ", "INTO", ap, 1, src_is_for_mic); - - // offset and length are derived from the array descriptor - __arr_data_offset_and_length(ap, into_disp, size); - - if (!is_arr_desc_contiguous(ap)) { - m_vars[i].flags.is_noncont_src = 1; - m_vars_extra[i].read_rng_dst = - init_read_ranges_arr_desc(ap); - if (!cean_ranges_match( - m_vars_extra[i].read_rng_src, - m_vars_extra[i].read_rng_dst)) { - LIBOFFLOAD_ERROR(c_ranges_dont_match); - } - } - m_vars[i].into = reinterpret_cast<char**>(ap->base); - } - else if (m_vars_extra[i].type_dst == c_dv_ptr) { - // need to send DV to the device unless it is 'nocopy' - if (m_vars[i].direction.bits || - m_vars[i].alloc_if || - m_vars[i].free_if) { - ArrDesc *dvp = *static_cast<ArrDesc**>(m_vars[i].into); - - // debug dump - __dv_desc_dump("INTO", dvp); - - m_vars[i].direction.bits = c_parameter_in; - } - } - - int64_t size_src = m_vars_extra[i].read_rng_src && - !m_vars[i].flags.is_non_cont_struct ? - cean_get_transf_size(m_vars_extra[i].read_rng_src) : - m_vars[i].size; - int64_t size_dst = m_vars_extra[i].read_rng_dst ? - cean_get_transf_size(m_vars_extra[i].read_rng_dst) : - size; - // It's supposed that "into" size must be not less than - // src size - if (size_src > size_dst) { - LIBOFFLOAD_ERROR(c_different_src_and_dstn_sizes, - size_src, size_dst); - exit(1); - } - - if (m_vars[i].direction.bits) { - PtrData *ptr_data; - - // base address - void *base = *static_cast<void**>(m_vars[i].into); - - if (m_vars[i].direction.in) { - // allocate buffer - if (m_vars[i].flags.is_stack_buf) { - // for stack persistent objects ptr data is created - // by var_desc with number 0. - // Its ptr_data is stored at m_stack_ptr_data - ptr_data = m_stack_ptr_data; - } - else if (m_vars[i].alloc_if) { - if (m_vars[i].flags.preallocated) { - m_out_datalen += sizeof(void*); - m_need_runfunction = true; - break; - } - // add new entry - if (!alloc_ptr_data( - ptr_data, - reinterpret_cast<char *>(base) + alloc_disp, - (alloc_base != NULL) ? - alloc_disp : into_disp, - (alloc_base != NULL) ? - alloc_size : size, - alloc_disp, - (alloc_base != NULL) ? - 0 : m_vars[i].align, - m_vars[i].flags.targetptr, - m_vars[i].flags.preallocated, - m_vars[i].flags.pin)) { - return false; - } - if (m_vars[i].flags.targetptr) { - if (!init_mic_address(ptr_data)) { - return false; - } - *static_cast<void**>(m_vars[i].into) = base = - reinterpret_cast<void*>(ptr_data->mic_addr); - } - if (ptr_data->add_reference() == 0 && - ptr_data->mic_buf != 0) { - // add buffer to the list of buffers that - // are passed to dispatch call - m_compute_buffers.push_back( - ptr_data->mic_buf); - } - else { - // will send buffer address to device - m_vars[i].flags.sink_addr = 1; - } - - if (!ptr_data->is_static) { - // need to add reference for buffer - m_need_runfunction = true; - } - } - else { - // use existing association from pointer table - if (!find_ptr_data(ptr_data, base, into_disp, - size, m_vars[i].flags.targetptr, true)) { - return false; - } - m_vars[i].flags.sink_addr = 1; - } - - if (ptr_data->alloc_disp != 0) { - m_vars[i].flags.alloc_disp = 1; - m_in_datalen += sizeof(alloc_disp); - } - - if (m_vars[i].flags.sink_addr) { - // get buffers's address on the sink - if (!init_mic_address(ptr_data)) { - return false; - } - - m_in_datalen += sizeof(ptr_data->mic_addr); - } - - if (!ptr_data->is_static && m_vars[i].free_if) { - // need to decrement buffer reference on target - m_need_runfunction = true; - } - - // copy other pointer properties to var descriptor - m_vars[i].mic_offset = ptr_data->mic_offset; - m_vars[i].flags.is_static_dstn = ptr_data->is_static; - } - else { - if (!find_ptr_data(ptr_data, - base, - into_disp, - m_vars[i].size, - false, false)) { - return false; - } - } - if (ptr_data) { - into_offset = ptr_data ? - (char*) base - - (char*) ptr_data->cpu_addr.start() : - 0; - } - - if (m_is_openmp) { - // for FROM transfer of stack buffer's variable - if (src_is_for_mic && m_vars[i].flags.is_stack_buf) { - AutoData *auto_data; - char *base = *static_cast<char**>(m_vars[i].into); - if (m_vars[i].alloc_if) { - auto_data =m_device.insert_auto_data( - base + into_disp, - size); - auto_data->add_reference(); - } - else { - auto_data = m_device.find_auto_data( - base + into_disp); - } - // save data for later use - m_vars_extra[i].auto_data = auto_data; - // For automatic variables - // data is transferred: - // - if always modifier is used OR - // - if alloc_if == 0 && free_if == 0 OR - // - if reference count is 1 - if (!m_vars[i].flags.always_copy && - (m_vars[i].alloc_if || - m_vars[i].free_if) && - auto_data != 0 && - auto_data->get_reference() != 1) { - m_vars[i].direction.bits = - c_parameter_nocopy; - } - } - } - // save pointer data - m_vars_extra[i].dst_data = ptr_data; - } - break; - } - - case c_func_ptr: - case c_func_ptr_ptr: - break; - - case c_dv_data: - case c_dv_ptr_data: - case c_dv_data_slice: - case c_dv_ptr_data_slice: - if (m_vars[i].direction.bits || - m_vars[i].alloc_if || - m_vars[i].free_if) { - const Arr_Desc *ap; - ArrDesc *dvp; - PtrData *ptr_data; - int64_t disp; - int64_t size; - - if (VAR_TYPE_IS_DV_DATA_SLICE(m_vars_extra[i].type_dst)) { - ap = static_cast<const Arr_Desc*>(m_vars[i].into); - - // debug dump - ARRAY_DESC_DUMP(" ", "INTO", ap, 0, src_is_for_mic); - - dvp = (m_vars_extra[i].type_dst == c_dv_data_slice) ? - reinterpret_cast<ArrDesc*>(ap->base) : - *reinterpret_cast<ArrDesc**>(ap->base); - } - else { - dvp = (m_vars_extra[i].type_dst == c_dv_data) ? - static_cast<ArrDesc*>(m_vars[i].into) : - *static_cast<ArrDesc**>(m_vars[i].into); - } - if (!__dv_is_contiguous(dvp)) { - m_vars[i].flags.is_noncont_dst = 1; - m_vars_extra[i].read_rng_dst = - init_read_ranges_dv(dvp); - } - // size and displacement - if (VAR_TYPE_IS_DV_DATA_SLICE(m_vars_extra[i].type_dst)) { - // offset and length are derived from the array - // descriptor - __arr_data_offset_and_length(ap, into_disp, size); - if (m_vars[i].direction.bits) { - if (!is_arr_desc_contiguous(ap)) { - if (m_vars[i].flags.is_noncont_dst) { - LIBOFFLOAD_ERROR(c_slice_of_noncont_array); - return false; - } - m_vars[i].flags.is_noncont_dst = 1; - m_vars_extra[i].read_rng_dst = - init_read_ranges_arr_desc(ap); - if (!cean_ranges_match( - m_vars_extra[i].read_rng_src, - m_vars_extra[i].read_rng_dst)) { - LIBOFFLOAD_ERROR(c_ranges_dont_match); - } - } - } - } - else { - if (m_vars[i].flags.has_length) { - size = __dv_data_length(dvp, m_vars[i].count); - } - else { - size = __dv_data_length(dvp); - } - disp = 0; - } - - int64_t size_src = - m_vars_extra[i].read_rng_src && - (!m_vars[i].flags.is_non_cont_struct || - src_is_for_mic) ? - cean_get_transf_size(m_vars_extra[i].read_rng_src) : - m_vars[i].size; - int64_t size_dst = - m_vars_extra[i].read_rng_dst ? - cean_get_transf_size(m_vars_extra[i].read_rng_dst) : - size; - // It's supposed that "into" size must be not less - // than src size - if (size_src > size_dst) { - LIBOFFLOAD_ERROR(c_different_src_and_dstn_sizes, - size_src, size_dst); - exit(1); - } - - // base address - void *base = reinterpret_cast<void*>(dvp->Base); - - // allocate buffer - if (m_vars[i].direction.in) { - if (m_vars[i].alloc_if) { - // add new entry - if (!alloc_ptr_data( - ptr_data, - reinterpret_cast<char *>(base) + alloc_disp, - (alloc_base != NULL) ? - alloc_disp : into_disp, - (alloc_base != NULL) ? - alloc_size : size, - alloc_disp, - (alloc_base != NULL) ? - 0 : m_vars[i].align, - m_vars[i].flags.targetptr, - m_vars[i].flags.preallocated, - m_vars[i].flags.pin)) { - return false; - } - if (ptr_data->add_reference() == 0 && - ptr_data->mic_buf !=0) { - // add buffer to the list of buffers - // that are passed to dispatch call - m_compute_buffers.push_back( - ptr_data->mic_buf); - } - else { - // will send buffer address to device - m_vars[i].flags.sink_addr = 1; - } - - if (!ptr_data->is_static) { - // need to add reference for buffer - m_need_runfunction = true; - } - } - else { - // use existing association from pointer table - if (!find_ptr_data(ptr_data, base, into_disp, - size, m_vars[i].flags.targetptr, true)) { - return false; - } - - // need to update base in dope vector on device - m_vars[i].flags.sink_addr = 1; - } - - if (ptr_data->alloc_disp != 0) { - m_vars[i].flags.alloc_disp = 1; - m_in_datalen += sizeof(alloc_disp); - } - - if (m_vars[i].flags.sink_addr) { - // get buffers's address on the sink - if (!init_mic_address(ptr_data)) { - return false; - } - m_in_datalen += sizeof(ptr_data->mic_addr); - } - - if (!ptr_data->is_static && m_vars[i].free_if) { - // need to decrement buffer reference on target - m_need_runfunction = true; - } - - // offset to base from the beginning of the buffer - // memory - into_offset = - (char*) base - (char*) ptr_data->cpu_addr.start(); - - // copy other pointer properties to var descriptor - m_vars[i].mic_offset = ptr_data->mic_offset; - m_vars[i].flags.is_static_dstn = ptr_data->is_static; - } - else { // src_is_for_mic - if (!find_ptr_data(ptr_data, - base, - into_disp, - size, - false, false)) { - return false; - } - into_offset = !ptr_data ? - 0 : - (char*) base - (char*) ptr_data->cpu_addr.start(); - } - - // save pointer data - m_vars_extra[i].dst_data = ptr_data; - } - break; - - default: - LIBOFFLOAD_ERROR(c_unknown_var_type, m_vars_extra[i].type_src); - LIBOFFLOAD_ABORT; - } - // if into is used at CPU save its offset and disp - if (m_vars[i].direction.out) { - m_vars_extra[i].cpu_offset = into_offset; - m_vars_extra[i].cpu_disp = into_disp; - } - else { - if (m_vars[i].flags.is_stack_buf) { - if (this_threads_cpu_stack_addr == 0) { - this_threads_cpu_stack_addr = - get_this_threads_cpu_stack_addr( - stack_addr, entry_id, - thread_specific_function_locals); - } - into_offset = static_cast<char*> - (m_vars[i].into) - - this_threads_cpu_stack_addr; - } - m_vars[i].offset = into_offset; - m_vars[i].disp = into_disp; - } - } - - return true; -} - -bool OffloadDescriptor::setup_misc_data(const char *name) -{ - OffloadTimer timer(get_timer_data(), c_offload_host_setup_misc_data); - - // we can skip run functon call together with wait if offloaded - // region is empty and there is no user defined non-pointer IN/OUT data - if (m_need_runfunction) { - // variable descriptors are sent as input data - m_in_datalen += m_vars_total * sizeof(VarDesc); - - // timer data is sent as a part of the output data - m_out_datalen += OFFLOAD_TIMER_DATALEN(); - - // max from input data and output data length - uint64_t data_len = m_in_datalen > m_out_datalen ? m_in_datalen : - m_out_datalen; - - // Misc data has the following layout - // <Function Descriptor> - // <Function Name> - // <In/Out Data> (optional) - // - // We can transfer copyin/copyout data in misc/return data which can - // be passed to run function call if its size does not exceed - // COI_PIPELINE_MAX_IN_MISC_DATA_LEN. Otherwise we have to allocate - // buffer for it. - - m_func_desc_size = sizeof(FunctionDescriptor) + strlen(name) + 1; - m_func_desc_size = (m_func_desc_size + 7) & ~7; - - int misc_data_offset = 0; - int misc_data_size = 0; - if (data_len > 0) { - if (m_func_desc_size + - m_in_datalen <= COI_PIPELINE_MAX_IN_MISC_DATA_LEN && - m_out_datalen <= COI_PIPELINE_MAX_IN_MISC_DATA_LEN) { - // use misc/return data for copyin/copyout - misc_data_offset = m_func_desc_size; - misc_data_size = data_len; - } - else { - OffloadTimer timer_buf(get_timer_data(), - c_offload_host_alloc_data_buffer); - - // send/receive data using buffer - COIRESULT res = COI::BufferCreate(data_len, - COI_BUFFER_OPENCL, - 0, 0, - 1, &m_device.get_process(), - &m_inout_buf); - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - return false; - } - report_coi_error(c_buf_create, res); - } - - m_compute_buffers.push_back(m_inout_buf); - m_destroy_buffers.push_back(m_inout_buf); - } - } - - // initialize function descriptor - m_func_desc = (FunctionDescriptor*) malloc(m_func_desc_size + - misc_data_size); - if (m_func_desc == NULL) - LIBOFFLOAD_ERROR(c_malloc); - m_func_desc->console_enabled = console_enabled; - m_func_desc->timer_enabled = offload_report_enabled && - (timer_enabled || offload_report_level); - m_func_desc->offload_report_level = offload_report_enabled ? - offload_report_level : 0; - m_func_desc->offload_number = GET_OFFLOAD_NUMBER(get_timer_data()); - m_func_desc->in_datalen = m_in_datalen; - m_func_desc->out_datalen = m_out_datalen; - m_func_desc->vars_num = m_vars_total; - m_func_desc->data_offset = misc_data_offset; - - // append entry name - strcpy(m_func_desc->data, name); - } - - return true; -} - -void OffloadDescriptor::setup_omp_async_info() -{ - OFFLOAD_TRACE(2, "setup_omp_async_info\n"); - OmpAsyncLastEventType event_type = m_need_runfunction ? - c_last_runfunc : c_last_write; - int last_in = m_need_runfunction ? 0 : -1; - int i; - - for (i = m_vars_total - 1; i >=0; i--) { - bool src_is_target = (m_vars[i].direction.out || !m_vars[i].into); - int var_type = src_is_target ? m_vars_extra[i].type_src : - m_vars_extra[i].type_dst; - bool target_is_static = src_is_target ? m_vars[i].flags.is_static : - m_vars[i].flags.is_static_dstn; - switch (var_type) { - case c_data: - case c_void_ptr: - case c_cean_var: - if (m_vars[i].direction.out && target_is_static) { - event_type = c_last_read; - } - else if (last_in < 0 && m_vars[i].direction.in && - target_is_static) { - last_in = i; - } - break; - case c_string_ptr: - case c_data_ptr: - case c_string_ptr_ptr: - case c_data_ptr_ptr: - case c_cean_var_ptr: - case c_cean_var_ptr_ptr: - case c_dv_ptr: - case c_dv_data: - case c_dv_ptr_data: - case c_dv_data_slice: - case c_dv_ptr_data_slice: - - if (m_vars[i].direction.out) { - event_type = c_last_read; - } - else if (last_in < 0 && m_vars[i].direction.in) { - last_in = i; - } - break; - default: - break; - } - if (event_type == c_last_read) { - break; - } - } - - if (event_type == c_last_read) { - m_vars_extra[i].omp_last_event_type = c_last_read; - } - else if (event_type == c_last_write) { - m_vars_extra[last_in].omp_last_event_type = c_last_write; - } - m_omp_async_last_event_type = event_type; - OFFLOAD_TRACE(2, "setup_omp_async_info: event_type=%d\n", - m_omp_async_last_event_type); -} - -extern "C" { - void offload_proxy_task_completed_ooo( - COIEVENT e, - const COIRESULT r, - const void *info - ) - { - task_completion_callback ((void *) info); - } - - // Callback function for asynchronous offloads - void offload_complete_task( - COIEVENT e, - const COIRESULT r, - const void *info - ) - { - Stream *stream; - OffloadDescriptor *task = const_cast<OffloadDescriptor*>( - reinterpret_cast<const OffloadDescriptor*>(info)); - uint32_t events_remained; - - lock_complete.lock(); - if (!offload_descr_map[task]) { - lock_complete.unlock(); - return; - } - -#ifndef TARGET_WINNT - events_remained = __sync_sub_and_fetch(&task->m_event_count, 1); -#else // TARGET_WINNT - events_remained = _InterlockedDecrement(&task->m_event_count); -#endif // TARGET_WINNT - // Waiting for the last event - if (events_remained != 0) { - lock_complete.unlock(); - return; - } - - // Callback could be called when execution at host is completed. - // Do nothing as engine data is destructed - if (!task->get_device().get_ready()) { - lock_complete.unlock(); - return; - } - - void * signal = task->get_signal(); - _Offload_stream stream_handle = task->get_stream(); - - OFFLOAD_TRACE(2, "Call function offload_complete_task(%p)\n", info); - - // Completed offload has a signal - if (task->m_has_signal) { - if (!offload_descr_map[task]) { - lock_complete.unlock(); - return; - } - task->get_device().complete_signaled_ofld(signal); - // Asynchronous offload can have both signal and stream. Need to - // clean stream if any. - stream_handle = task->get_stream(); - if (stream_handle != -1) { - stream = Stream::find_stream(stream_handle, false); - if (stream && stream->get_last_offload() == task) { - stream->set_last_offload(NULL); - } - } - offload_descr_map[task] = false; - lock_complete.unlock(); - - if (task->offload_finish(0)) { //arg is 0 for is_traceback - task->cleanup(); - } - delete task; - } - // Asynchronous by stream - else { - if (stream_handle != 0) { - stream = Stream::find_stream(stream_handle, false); - - // the stream was not created or was destroyed - if (!stream) { - LIBOFFLOAD_ERROR(c_offload_no_stream, - task->get_device().get_logical_index()); - LIBOFFLOAD_ABORT; - } - if (!offload_descr_map[task]) { - lock_complete.unlock(); - return; - } - if (task == stream->get_last_offload()) { - stream->set_last_offload(NULL); - } - // if the offload has both signal and stream we will complete - // it as it has the signal. So we don't need to mark signal - // as completed. - offload_descr_map[task] = false; - lock_complete.unlock(); - if (task->offload_finish(0)) { //arg is 0 for is_traceback - task->cleanup(); - } - delete task; - } - } - } -} - -void OffloadDescriptor::register_omp_event_call_back( - const COIEVENT *event, - const void *info) -{ - register_event_call_back(&offload_proxy_task_completed_ooo, event, info); -} - -void OffloadDescriptor::register_event_call_back( - void (*func)(COIEVENT, const COIRESULT, const void*), - const COIEVENT *event, - const void *info) -{ - OFFLOAD_TRACE(2, "register_event_call_back(event=%p, info=%p)\n", - event, info); - if (COI::EventRegisterCallback) { - COI::EventRegisterCallback( - *event, - func, - info, 0); - OFFLOAD_TRACE(2, - "COI::EventRegisterCallback found; callback registered\n"); - } -} - -bool OffloadDescriptor::wait_dependencies( - const void **waits, - int num_waits, - _Offload_stream handle -) -{ - OffloadTimer timer(get_timer_data(), c_offload_host_wait_deps); - bool ret = true; - OffloadDescriptor *task; - void * signal; - - if (num_waits == 0) { - // Prepare in dependencies for stream - get_stream_in_dependencies(m_num_in_dependencies,m_p_in_dependencies); - return true; - } - - // wait for streams - if (num_waits == -1) { - Stream * stream; - // some specific stream of the device - if (handle != 0) { - lock_complete.lock(); - stream = Stream::find_stream(handle, false); - - // the stream was not created or was destroyed - if (!stream) { - LIBOFFLOAD_ERROR(c_offload_no_stream, m_device.get_logical_index()); - LIBOFFLOAD_ABORT; - } - task = stream->get_last_offload(); - - // offload was completed by previous offload_wait pragma - // or wait clause - if (!offload_descr_map[task]) { - lock_complete.unlock(); - return true; - } - stream->set_last_offload(NULL); - if (task->m_has_signal) { - signal = task->get_signal(); - if (m_device.find_signal(signal, false) == task) { - m_device.complete_signaled_ofld(signal); - } - } - offload_descr_map[task] = false; - lock_complete.unlock(); - - if (!task->offload_finish(0)) { //arg is 0 for is_traceback - ret = false; - } - task->cleanup(); - delete task; - } - // all streams of the device or over all devices - else { - StreamMap stream_map = Stream::all_streams; - for (StreamMap::iterator it = stream_map.begin(); - it != stream_map.end(); it++) { - Stream * stream = it->second; - if (!m_wait_all_devices && - stream->get_device() != m_device.get_logical_index()) { - continue; - } - lock_complete.lock(); - - // get associated async task - OffloadDescriptor *task = stream->get_last_offload(); - // offload was completed by offload_wait pragma or wait clause - if (!offload_descr_map[task]) { - lock_complete.unlock(); - continue; - } - if (task->m_has_signal) { - signal = task->get_signal(); - if (task->get_device().find_signal(signal, false) == - task) { - task->get_device().complete_signaled_ofld(signal); - } - } - stream->set_last_offload(NULL); - offload_descr_map[task] = false; - lock_complete.unlock(); - if (!task->offload_finish(0)) { //arg is 0 for is_traceback - ret = false; - } - task->cleanup(); - delete task; - } - // no uncompleted streams - return true; - } - } - else { - - // If offload is asynchronous we will not really wait for signals. - // We will collect all waited events into m_p_in_dependencies vector - // to be used in future calls to COI::Copy... API. - - if (!__offload_always_wait && (m_has_signal || (get_stream() > 0))) { - uint64_t num_in_dep = 0, - num_in_dep_prev = 0; - COIEVENT *p_in_dep = NULL; - _Offload_stream stream_handle = get_stream(); - Stream *stream; - bool stream_need_connection = stream_handle > 0; - - if (stream_need_connection) { - stream = Stream::find_stream(stream_handle, false); - // check previous offload with the stream_handle - // to be noncompleted - if (!stream) { - stream_need_connection = false; - } - } - for (int i = 0; i < num_waits; i++) { - task = m_device.find_signal(waits[i], false); - if (task == 0) { - LIBOFFLOAD_ERROR(c_offload1, m_device.get_logical_index(), - waits[i]); - LIBOFFLOAD_ABORT; - } - else if (task == SIGNAL_HAS_COMPLETED) { - continue; - } - if (stream_need_connection && - stream->get_last_offload() == task) { - stream_need_connection = false; - } - if (!task->m_num_in_dependencies) { - continue; - } - num_in_dep += task->m_num_in_dependencies; - p_in_dep = (COIEVENT*)realloc(p_in_dep, - sizeof(COIEVENT) * num_in_dep); - if (p_in_dep == NULL) - LIBOFFLOAD_ERROR(c_malloc); - memcpy(p_in_dep + num_in_dep_prev, task->m_p_in_dependencies, - task->m_num_in_dependencies * sizeof(COIEVENT)); - num_in_dep_prev = num_in_dep; - } - if (stream_need_connection) { - task = stream->get_last_offload(); - if (task) { - num_in_dep += task->m_num_in_dependencies; - p_in_dep = (COIEVENT*)realloc(p_in_dep, - sizeof(COIEVENT) * num_in_dep); - if (p_in_dep == NULL) - LIBOFFLOAD_ERROR(c_malloc); - memcpy(p_in_dep + num_in_dep_prev, - task->m_p_in_dependencies, - task->m_num_in_dependencies * sizeof(COIEVENT)); - num_in_dep_prev = num_in_dep; - } - } - m_num_in_dependencies = num_in_dep ? num_in_dep : - m_num_in_dependencies; - m_p_in_dependencies = num_in_dep ? p_in_dep : m_p_in_dependencies; - } - // wait and do offload_finish for serial offload - else { - for (int i = 0; i < num_waits; i++) { - _Offload_stream stream_handle; - Stream *stream; - - lock_complete.lock(); - task = m_device.find_signal(waits[i], false); - if (task == 0) { - LIBOFFLOAD_ERROR(c_offload1, m_device.get_logical_index(), - waits[i]); - LIBOFFLOAD_ABORT; - } - else if (!offload_descr_map[task]) { - lock_complete.unlock(); - continue; - } - // Need to mark signal as completed to prevent run condition - // with the call to "offload_complete_task" for the same - // signal. - m_device.complete_signaled_ofld(waits[i]); - - // Asynchronous offload can have both signal and stream. - // Need to clean stream if any. - - stream_handle = task->m_stream; - if (stream_handle != -1) { - stream = Stream::find_stream(stream_handle, false); - if (stream && stream->get_last_offload() == task) { - stream->set_last_offload(NULL); - } - } - offload_descr_map[task] = false; - lock_complete.unlock(); - - if (!task->offload_finish(0)) { //arg is 0 for is_traceback - ret = false; - } - task->cleanup(); - - delete task; - } - } - } - return ret; -} - -bool OffloadDescriptor::offload_wrap( - const char *name, - bool is_empty, - VarDesc *vars, - VarDesc2 *vars2, - int vars_total, - const void **waits, - int num_waits, - const void **signal, - int entry_id, - const void *stack_addr, - OffloadFlags offload_flags -) -{ - OffloadWaitKind wait_kind = c_offload_wait_signal; - bool is_traceback = offload_flags.bits.fortran_traceback; - - // define kind of wait if any; - // there can be one of the following kind: - // 1. c_offload_wait_signal for "offload_wait wait(signal)" - // 2. c_offload_wait_stream for "offload_wait stream(stream)" - // 3. c_offload_wait_all_streams for "offload_wait stream(0)" - if (num_waits == -1) { - wait_kind = (m_stream == 0) ? - c_offload_wait_all_streams : - c_offload_wait_stream; - } - char buf[35]; - const char *stream_str; - - if (m_stream == no_stream || num_waits ==-1) { - stream_str = "none"; - } - else if (m_stream == 0) { - stream_str = "all"; - } - else { - sprintf(buf, "%#llx", m_stream); - stream_str = buf; - } - - if (m_has_signal) { - OFFLOAD_DEBUG_TRACE_1(1, - GET_OFFLOAD_NUMBER(get_timer_data()), - c_offload_init_func, - "Offload function %s, is_empty=%d, #varDescs=%d, " - "signal=none, stream=%s, #waits=%d%c", - name, is_empty, vars_total, stream_str, num_waits, - num_waits == 0 ? '\n' : ' '); - // Breaks the norm of using OFFLOAD_DEBUG_TRACE to print the waits - // since the number of waits is not fixed. - if (!OFFLOAD_DO_TRACE && (console_enabled >= 1)) { - if (num_waits) { - printf("("); - if (m_stream == no_stream) { - printf("%p", waits[0]); - for (int i = 1; i < num_waits; i++) { - printf(", %p", waits[i]); - } - } - else if (m_stream != 0) { - printf("%#x", m_stream); - } - else { - printf(" all streams"); - } - printf(")"); - } - printf("\n"); - fflush(NULL); - } - // stream in wait is reported further in OFFLOAD_REPORT for waits - if (m_stream != no_stream && num_waits == 0) { - OFFLOAD_REPORT(3, GET_OFFLOAD_NUMBER(get_timer_data()), - c_offload_stream, - "%d\n", m_stream); - } - OFFLOAD_REPORT(3, GET_OFFLOAD_NUMBER(get_timer_data()), - c_offload_signal, - "none %d\n", 0); - } - else { - OFFLOAD_DEBUG_TRACE_1(1, - GET_OFFLOAD_NUMBER(get_timer_data()), - c_offload_init_func, - "Offload function %s, is_empty=%d, #varDescs=%d, " - "signal=%p, stream=%s, #waits=%d%c", - name, is_empty, vars_total, signal, stream_str, - num_waits, num_waits == 0 ? '\n' : ' '); - // Breaks the norm of using OFFLOAD_DEBUG_TRACE to print the waits - // since the number of waits is not fixed. - if (!OFFLOAD_DO_TRACE && (console_enabled >= 1)) { - if (num_waits) { - printf("("); - if (m_stream == no_stream) { - printf("%p", waits[0]); - for (int i = 1; i < num_waits; i++) { - printf(", %p", waits[i]); - } - printf(")"); - } - else if (m_stream != 0) { - printf("%#x", m_stream); - } - else { - printf(" all streams"); - } - printf(")"); - } - printf("\n"); - fflush(NULL); - } - // stream in wait is reported further in OFFLOAD_REPORT for waits - if (m_stream != no_stream && num_waits == 0) { - OFFLOAD_REPORT(3, GET_OFFLOAD_NUMBER(get_timer_data()), - c_offload_stream, - "%d\n", m_stream); - } - OFFLOAD_REPORT(3, GET_OFFLOAD_NUMBER(get_timer_data()), - c_offload_signal, - "%d\n", signal); - } - if (console_enabled >= 1 && offload_flags.flags != 0) { - trace_offload_flags(get_timer_data(), offload_flags); - } - - OFFLOAD_REPORT(3, GET_OFFLOAD_NUMBER(get_timer_data()), - c_offload_wait, "%d\n", - wait_kind, num_waits, - (wait_kind == c_offload_wait_signal) ? - waits : - reinterpret_cast<const void **>(m_stream)); - - if (m_status != 0) { - m_status->result = OFFLOAD_SUCCESS; - m_status->device_number = m_device.get_logical_index(); - } - - m_initial_need_runfunction = m_need_runfunction = !is_empty; - - // wait for dependencies to finish or set - // m_num_in_dependencies and m_p_in_dependencies for asynchronous offload - if (!wait_dependencies(waits, num_waits, m_stream)) { - cleanup(); - return false; - } - - // setup buffers - if (!setup_descriptors(vars, vars2, vars_total, entry_id, stack_addr)) { - cleanup(); - return false; - } - - if (offload_flags.bits.omp_async) { - setup_omp_async_info(); - } - - // initiate send for pointers. Want to do it as early as possible. - if (!send_pointer_data(signal != 0 || offload_flags.bits.omp_async, - signal)) { - cleanup(); - return false; - } - - // setup misc data for run function - if (!setup_misc_data(name)) { - cleanup(); - return false; - } - - // gather copyin data into buffer - if (!gather_copyin_data()) { - cleanup(); - return false; - } - - // Start the computation - if (!compute(signal)) { - cleanup(); - return false; - } - - // initiate receive for pointers - if (!receive_pointer_data(signal != 0 || offload_flags.bits.omp_async, - true, signal)) { - cleanup(); - return false; - } - - if (offload_flags.bits.omp_async) { - return true; - } - - // if there is a signal or stream save descriptor for the later use. - // num_waits == -1 is for offload_wait and there is nothing to save - if (num_waits != -1 && (signal != 0 || m_stream != no_stream)) { - - if (signal != 0) { - m_device.add_signal(*signal, this); - } - - if (m_stream != no_stream && m_stream != 0) { - Stream* stream = Stream::find_stream(m_stream, false); - if (stream) { - stream->set_last_offload(this); - } - else { - LIBOFFLOAD_ERROR(c_offload_no_stream, m_device.get_logical_index()); - LIBOFFLOAD_ABORT; - } - } - // Register callback function "offload_complete_task" for all out - // events or for all in events if there are no out transfers - if (!m_preallocated_alloc) { - m_event_count = m_out_deps_total ? - m_out_deps_total : m_in_deps_total; - COIEVENT *event_list = m_out_deps_total ? m_out_deps : m_in_deps; - - for (int i = 0; i < m_event_count; i++) { - register_event_call_back(&offload_complete_task, - &event_list[i], this); - } - offload_descr_map[this] = true; - return true; - } - } - - // wait for the offload to finish. - if (!offload_finish(is_traceback)) { - cleanup(); - return false; - } - - cleanup(); - return true; -} - -bool OffloadDescriptor::offload( - const char *name, - bool is_empty, - VarDesc *vars, - VarDesc2 *vars2, - int vars_total, - const void **waits, - int num_waits, - const void **signal, - int entry_id, - const void *stack_addr, - OffloadFlags offload_flags -) -{ - bool res; - res = offload_wrap(name, is_empty, vars, vars2, vars_total, - waits, num_waits, signal, entry_id, - stack_addr, offload_flags); - if (res == false && !m_traceback_called) { - if (offload_flags.bits.fortran_traceback) { - OFFLOAD_TRACE(3, - "Calling Fortran library to continue traceback from MIC\n"); - FORTRAN_TRACE_BACK(m_status->result); - m_traceback_called = true; - } - } - return res; -} - -bool OffloadDescriptor::offload_finish( - bool is_traceback -) -{ - COIRESULT res; - - // wait for compute dependencies to become signaled - if (m_in_deps_total > 0 && - (m_out_deps_total <= 0 || m_preallocated_alloc)) { - OffloadTimer timer(get_timer_data(), c_offload_host_wait_compute); - - if (__offload_active_wait) { - // keep CPU busy - do { - res = COI::EventWait(m_in_deps_total, m_in_deps, 0, 1, 0, 0); - } - while (res == COI_TIME_OUT_REACHED); - } - else { - res = COI::EventWait(m_in_deps_total, m_in_deps, -1, 1, 0, 0); - } - - if (res != COI_SUCCESS) { - if (m_status != 0 && !m_traceback_called) { - m_status->result = translate_coi_error(res); - if (is_traceback) { - OFFLOAD_TRACE(3, - "Calling Fortran library to continue traceback from MIC\n"); - FORTRAN_TRACE_BACK(m_status->result); - m_traceback_called = true; - } - return false; - } - if (is_traceback && !m_traceback_called) { - OFFLOAD_TRACE(3, - "Calling Fortran library to continue traceback from MIC\n"); - FORTRAN_TRACE_BACK(OFFLOAD_ERROR); - exit(1); - } - report_coi_error(c_event_wait, res); - } - } - - // need to do scatter copyout data received from target after - // completing in dependencies to get preallocated buffers. - // If there are no preallocated buffers we will scatter_copyout_data - // after completing out dependencies. In this case we dont need wait - // in dependencies as they are already in DAG. - if (m_out_with_preallocated) { - if (!scatter_copyout_data()) { - return false; - } - if (!receive_pointer_data(m_out_deps_total > 0, false, NULL)) { - cleanup(); - return false; - } - } - - // wait for receive dependencies to become signaled - if (m_out_deps_total > 0) { - OffloadTimer timer(get_timer_data(), c_offload_host_wait_buffers_reads); - - if (__offload_active_wait) { - // keep CPU busy - do { - res = COI::EventWait(m_out_deps_total, m_out_deps, 0, 1, 0, 0); - } - while (res == COI_TIME_OUT_REACHED); - } - else { - res = COI::EventWait(m_out_deps_total, m_out_deps, -1, 1, 0, 0); - } - - if (res != COI_SUCCESS) { - if (m_status != 0 && !m_traceback_called) { - m_status->result = translate_coi_error(res); - if (is_traceback) { - OFFLOAD_TRACE(3, - "Calling Fortran library to continue traceback from MIC\n"); - FORTRAN_TRACE_BACK(m_status->result); - m_traceback_called = true; - } - return false; - } - if (is_traceback && !m_traceback_called) { - OFFLOAD_TRACE(3, - "Calling Fortran library to continue traceback from MIC\n"); - FORTRAN_TRACE_BACK(OFFLOAD_ERROR); - exit(1); - } - report_coi_error(c_event_wait, res); - } - } - - if (!m_out_with_preallocated && !scatter_copyout_data()) { - return false; - } - // destroy buffers - { - OffloadTimer timer(get_timer_data(), c_offload_host_destroy_buffers); - - for (BufferList::const_iterator it = m_destroy_buffers.begin(); - it != m_destroy_buffers.end(); it++) { - res = COI::BufferDestroy(*it); - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - return false; - } - report_coi_error(c_buf_destroy, res); - } - } - } - - return true; -} - -void OffloadDescriptor::cleanup() -{ - // release device in orsl - ORSL::release(m_device.get_logical_index()); - - OFFLOAD_TIMER_STOP(get_timer_data(), c_offload_host_total_offload); - - // report stuff - Offload_Report_Epilog(get_timer_data()); -} - -bool OffloadDescriptor::is_signaled() -{ - bool signaled = true; - COIRESULT res; - - // check compute and receive dependencies - if (m_out_deps_total > 0) { - res = COI::EventWait(m_out_deps_total, m_out_deps, 0, 1, 0, 0); - signaled = signaled && (res == COI_SUCCESS); - } - else if (m_in_deps_total > 0) { - res = COI::EventWait(m_in_deps_total, m_in_deps, 0, 1, 0, 0); - signaled = signaled && (res == COI_SUCCESS); - } - - return signaled; -} - -static Arr_Desc * make_arr_desc( - void* ptr_val, - int64_t extent_start_val, - int64_t extent_elements_val, - int64_t size -) -{ - Arr_Desc *res; - res = (Arr_Desc *)malloc(sizeof(Arr_Desc)); - if (res == NULL) - LIBOFFLOAD_ERROR(c_malloc); - res->base = reinterpret_cast<int64_t>(ptr_val); - res->rank = 1; - res->dim[0].size = size; - res->dim[0].lindex = 0; - res->dim[0].lower = extent_start_val; - res->dim[0].upper = extent_elements_val + extent_start_val - 1; - res->dim[0].stride = 1; - return res; -} - -// Send pointer data if source or destination or both of them are -// noncontiguous. There is guarantee that length of destination enough for -// transferred data. -bool OffloadDescriptor::send_noncontiguous_pointer_data( - int i, - PtrData* src_data, - PtrData* dst_data, - COIEVENT *event, - uint64_t &data_sent, - uint32_t in_deps_amount, - COIEVENT *in_deps - ) -{ - NonContigDesc *desc; - int noncont_num; - int64_t offset_src, offset_dst; - int64_t length_src, length_dst; - int64_t length_src_cur, length_dst_cur; - int64_t send_size; - COIRESULT res; - bool dst_is_empty = true; - bool src_is_empty = true; - - // If BufferWriteMultiD is defined we can set values of required arguments - // and transfer noncontiguous data via call to the COI routine. - if (!m_vars[i].flags.is_non_cont_struct && - __offload_use_coi_noncontiguous_transfer && COI::BufferWriteMultiD) { - struct Arr_Desc* arr_desc_dst; - struct Arr_Desc* arr_desc_src; - int64_t size_src, size_dst; - char *base = offload_get_src_base(static_cast<char*>(m_vars[i].ptr), - m_vars_extra[i].type_src); - COIBUFFER dst_buf = m_vars[i].into ? - m_vars_extra[i].dst_data->mic_buf : - m_vars_extra[i].src_data->mic_buf; - - offset_src = (m_vars_extra[i].read_rng_src)? - m_vars_extra[i].read_rng_src->init_offset : m_vars_extra[i].cpu_disp; - size_src = m_vars_extra[i].read_rng_src ? - cean_get_transf_size(m_vars_extra[i].read_rng_src) : - m_vars[i].size; - - offset_dst = (m_vars_extra[i].read_rng_dst)? - m_vars_extra[i].read_rng_dst->init_offset : m_vars[i].disp; - size_dst = m_vars_extra[i].read_rng_dst ? - cean_get_transf_size(m_vars_extra[i].read_rng_dst) : m_vars[i].size; - - int64_t el_size = (!m_vars[i].into || - (m_vars_extra[i].read_rng_src && m_vars_extra[i].read_rng_dst)) ? - 1 : - m_vars_extra[i].read_rng_src ? - m_vars_extra[i].read_rng_src->arr_desc->dim[ - m_vars_extra[i].read_rng_src->arr_desc->rank - 1].size : - m_vars_extra[i].read_rng_dst->arr_desc->dim[ - m_vars_extra[i].read_rng_dst->arr_desc->rank - 1].size; - - arr_desc_src = (m_vars_extra[i].read_rng_src) ? - m_vars_extra[i].read_rng_src->arr_desc : - make_arr_desc(NULL, // don't required for source - offset_src/el_size, size_src/el_size, el_size); - - arr_desc_dst = !m_vars[i].into ? - arr_desc_src : - (m_vars_extra[i].read_rng_dst) ? - m_vars_extra[i].read_rng_dst->arr_desc : - make_arr_desc(NULL, - offset_dst/el_size, size_src/el_size, el_size); - - int64_t alloc_disp = m_vars[i].into ? - m_vars_extra[i].dst_data->alloc_disp : - m_vars_extra[i].src_data->alloc_disp; - - arr_desc_dst->base = 0; - arr_desc_src->base = reinterpret_cast<int64_t>(base); - - res = COI::BufferWriteMultiD( - dst_buf, // in_DestBuffer, - NULL, // DestProcess, - m_vars[i].offset + m_vars[i].mic_offset - - alloc_disp, // Offset - (void*)arr_desc_dst, // descriptor of DestArray - (void*)arr_desc_src, // descriptor of SrcArray - COI_COPY_UNSPECIFIED, // Type - m_num_in_dependencies, // Number of in Dependencies - m_p_in_dependencies, // array of in Dependencies - event); // out Dependency - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - return false; - } - report_coi_error(c_buf_copy, res); - } - return(true); - } - - data_sent = 0; - if (m_vars[i].flags.is_non_cont_struct) { - desc = m_vars_extra[i].noncont_desc; - noncont_num = 0; - } - else { - // Set length_src and length_dst - length_src = (m_vars_extra[i].read_rng_src) ? - m_vars_extra[i].read_rng_src->range_size : m_vars[i].size; - length_dst = !m_vars[i].into ? length_src : - (m_vars_extra[i].read_rng_dst) ? - m_vars_extra[i].read_rng_dst->range_size : - m_vars[i].size; - send_size = (length_src < length_dst) ? length_src : length_dst; - } - - // if event is defined we must multiplate it for all contiguous ranges - // that will be Copied/Write. - // Take in account that we already have 1 event. - if (event) { - uint32_t range_num = m_vars[i].flags.is_non_cont_struct ? - desc->interval_cnt : - (length_src / send_size) * - ((m_vars_extra[i].read_rng_src) ? - m_vars_extra[i].read_rng_src->range_max_number : 1) ; - m_in_deps_allocated += range_num ; - m_in_deps = - (COIEVENT*)realloc(m_in_deps, sizeof(COIEVENT) * m_in_deps_allocated); - m_in_deps_total--; - } - - // consequently get contiguous ranges, - // define corresponded destination offset and send data - do { - if (m_vars[i].flags.is_non_cont_struct) { - // ranges are over - if (noncont_num >= desc->interval_cnt) { - break; - } - offset_src = offset_dst = desc->interval[noncont_num].lower; - send_size = desc->interval[noncont_num].size; - noncont_num++; - } - else { - if (src_is_empty) { - if (m_vars_extra[i].read_rng_src) { - if (!get_next_range(m_vars_extra[i].read_rng_src, - &offset_src)) { - // source ranges are over - nothing to send - break; - } - } - else if (data_sent == 0) { - offset_src = m_vars_extra[i].cpu_disp; - } - else { - break; - } - length_src_cur = length_src; - } - else { - // if source is contiguous or its contiguous range is greater - // than destination one - offset_src += send_size; - } - length_src_cur -= send_size; - src_is_empty = length_src_cur == 0; - - if (dst_is_empty) { - if (m_vars[i].into) { - if (m_vars_extra[i].read_rng_dst) { - if (!get_next_range(m_vars_extra[i].read_rng_dst, - &offset_dst)) { - // destination ranges are over - LIBOFFLOAD_ERROR(c_destination_is_over); - return false; - } - } - // into is contiguous. - else { - offset_dst = m_vars[i].disp; - } - length_dst_cur = length_dst; - } - // same as source - else { - offset_dst = offset_src; - length_dst_cur = length_src; - } - } - else { - // if destination is contiguous or its contiguous range is greater - // than source one - offset_dst += send_size; - } - length_dst_cur -= send_size; - dst_is_empty = length_dst_cur == 0; - } - if (event) { - event = &m_in_deps[m_in_deps_total++]; - } - if (src_data != 0 && src_data->cpu_buf != 0) { - res = COI::BufferCopy( - dst_data->mic_buf, - src_data->cpu_buf, - m_vars[i].mic_offset + - m_vars[i].offset + offset_dst, - m_vars_extra[i].cpu_offset + offset_src, - send_size, - COI_COPY_UNSPECIFIED, - m_num_in_dependencies, - m_p_in_dependencies, - event); - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - return false; - } - report_coi_error(c_buf_copy, res); - } - } - else { - char *base = offload_get_src_base(m_vars[i].ptr, - m_vars_extra[i].type_src); - - res = COI::BufferWrite( - dst_data->mic_buf, - m_vars[i].mic_offset + - m_vars[i].offset + offset_dst, - base + offset_src, - send_size, - COI_COPY_UNSPECIFIED, - m_num_in_dependencies, - m_p_in_dependencies, - event); - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - return false; - } - report_coi_error(c_buf_write, res); - } - } - data_sent += send_size; - } - while (true); - return true; -} - -bool OffloadDescriptor::send_pointer_data(bool is_async, void* info) -{ - OffloadTimer timer(get_timer_data(), c_offload_host_send_pointers); - - bool should_use_async_buffer_write = m_initial_need_runfunction; - uint64_t ptr_sent = 0; - COIRESULT res; - uint32_t in_deps_amount = 0; - COIEVENT *in_deps = NULL; - - // For offload_transfer and offload with empty body without signal: - // - if there is only one buffer copy - send data synchronously - // - if there are multiple buffer copy and - // __offload_parallel_copy is false - send data synchronously - // - if there are multiple buffer copy and - // __offload_parallel_copy is true - send data asynchronously - // It concerns only big size data - greater than __offload_use_async_buffer_write. - // Data of size less than __offload_use_async_buffer_write are sent synchronously. - // Synchronous transfer results in better performance in COI. - // __offload_parallel_copy is false by default but can be changed - // via environment variable OFFLOAD_PARALLEL_COPY - if (!m_initial_need_runfunction && __offload_parallel_copy) { - int big_size_count = 0; - for (int i = 0; i < m_vars_total; i++) { - if (m_vars[i].direction.in && - m_vars[i].size >= __offload_use_async_buffer_write) { - switch (m_vars_extra[i].type_dst) { - case c_data: - case c_void_ptr: - case c_void_ptr_ptr: - case c_cean_var: - if (m_vars[i].flags.is_static_dstn) { - big_size_count++; - } - break; - case c_string_ptr: - case c_string_ptr_ptr: - case c_data_ptr: - case c_data_ptr_ptr: - case c_cean_var_ptr: - case c_cean_var_ptr_ptr: - case c_dv_ptr: - case c_dv_data: - case c_dv_ptr_data: - case c_dv_data_slice: - case c_dv_ptr_data_slice: - big_size_count++; - break; - default: - break; - } - } - } - if (big_size_count > 1) { - should_use_async_buffer_write = true; - } - } - - // Initiate send for pointer data - for (int i = 0; i < m_vars_total; i++) { - uint64_t sent_data = m_vars[i].size; - - if (m_vars_extra[i].omp_last_event_type == c_last_write && - m_in_deps_total > 0) { - m_num_in_dependencies = m_in_deps_total; - m_p_in_dependencies = m_in_deps; - } - switch (m_vars_extra[i].type_dst) { - case c_data_ptr_array: - break; - case c_data: - case c_void_ptr: - case c_void_ptr_ptr: - case c_cean_var: - if (m_vars[i].direction.in && - m_vars[i].flags.is_static_dstn) { - COIEVENT *event = - (m_stream != no_stream || - is_async || - (should_use_async_buffer_write && - m_vars[i].size >= __offload_use_async_buffer_write)) ? - &m_in_deps[m_in_deps_total++] : 0; - PtrData* dst_data = m_vars[i].into ? - m_vars_extra[i].dst_data : - m_vars_extra[i].src_data; - PtrData* src_data = - VAR_TYPE_IS_PTR(m_vars_extra[i].type_src) || - VAR_TYPE_IS_SCALAR(m_vars_extra[i].type_src) && - m_vars[i].flags.is_static ? - m_vars_extra[i].src_data : 0; - - if (m_vars[i].flags.is_non_cont_struct || - m_vars[i].flags.is_noncont_src || - m_vars[i].flags.is_noncont_dst) { - if (!send_noncontiguous_pointer_data( - i, src_data, dst_data, event, sent_data, - m_num_in_dependencies, m_p_in_dependencies)) { - return false; - } - } - else if (src_data != 0 && src_data->cpu_buf != 0) { - res = COI::BufferCopy( - dst_data->mic_buf, - src_data->cpu_buf, - m_vars[i].mic_offset + - m_vars[i].offset + m_vars[i].disp, - m_vars_extra[i].cpu_offset + - m_vars_extra[i].cpu_disp, - m_vars[i].size, - COI_COPY_UNSPECIFIED, - m_num_in_dependencies, - m_p_in_dependencies, - event); - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - return false; - } - report_coi_error(c_buf_copy, res); - } - } - else { - char *base = offload_get_src_base(m_vars[i].ptr, - m_vars_extra[i].type_src); - res = COI::BufferWrite( - dst_data->mic_buf, - m_vars[i].mic_offset + - m_vars[i].offset + m_vars[i].disp, - base + m_vars_extra[i].cpu_disp, - m_vars[i].size, - COI_COPY_UNSPECIFIED, - m_num_in_dependencies, - m_p_in_dependencies, - event); - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - return false; - } - report_coi_error(c_buf_write, res); - } - } - ptr_sent += sent_data; - } - break; - - case c_data_ptr: - // If use_device_ptr no data needs to be sent - if (m_vars[i].flags.use_device_ptr) { - break; - } - case c_string_ptr: - case c_string_ptr_ptr: - case c_data_ptr_ptr: - case c_cean_var_ptr: - case c_cean_var_ptr_ptr: - case c_dv_ptr: - if (m_vars[i].direction.in && m_vars[i].size > 0) { - COIEVENT *event = - (m_stream != no_stream || - is_async || - (should_use_async_buffer_write && - m_vars[i].size >= __offload_use_async_buffer_write)) ? - &m_in_deps[m_in_deps_total++] : 0; - PtrData* dst_data = m_vars[i].into ? - m_vars_extra[i].dst_data : - m_vars_extra[i].src_data; - PtrData* src_data = - VAR_TYPE_IS_PTR(m_vars_extra[i].type_src) || - VAR_TYPE_IS_SCALAR(m_vars_extra[i].type_src) && - m_vars[i].flags.is_static ? - m_vars_extra[i].src_data : 0; - - if (m_vars[i].flags.is_non_cont_struct || - m_vars[i].flags.is_noncont_src || - m_vars[i].flags.is_noncont_dst) { - send_noncontiguous_pointer_data( - i, src_data, dst_data, event, sent_data, - in_deps_amount, in_deps); - } - else if (src_data != 0 && src_data->cpu_buf != 0) { - res = COI::BufferCopy( - dst_data->mic_buf, - src_data->cpu_buf, - m_vars[i].mic_offset + - m_vars[i].offset + m_vars[i].disp, - m_vars_extra[i].cpu_offset + - m_vars_extra[i].cpu_disp, - m_vars[i].size, - COI_COPY_UNSPECIFIED, - m_num_in_dependencies, - m_p_in_dependencies, - event); - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - return false; - } - report_coi_error(c_buf_copy, res); - } - } - else { - char *base = offload_get_src_base(m_vars[i].ptr, - m_vars_extra[i].type_src); - res = COI::BufferWrite( - dst_data->mic_buf, - m_vars[i].mic_offset + - m_vars[i].offset + m_vars[i].disp, - base + m_vars_extra[i].cpu_disp, - m_vars[i].size, - COI_COPY_UNSPECIFIED, - m_num_in_dependencies, - m_p_in_dependencies, - event); - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - return false; - } - report_coi_error(c_buf_write, res); - } - } - - ptr_sent += sent_data; - } - break; - - case c_dv_data: - case c_dv_ptr_data: - if (m_vars[i].direction.in && - m_vars[i].size > 0) { - PtrData *ptr_data = m_vars[i].into ? - m_vars_extra[i].dst_data : - m_vars_extra[i].src_data; - PtrData* src_data = m_vars_extra[i].src_data; - - COIEVENT *event = - (m_stream != no_stream || - is_async || - (should_use_async_buffer_write && - m_vars[i].size >= __offload_use_async_buffer_write)) ? - &m_in_deps[m_in_deps_total++] : 0; - - if (m_vars[i].flags.is_non_cont_struct || - m_vars[i].flags.is_noncont_src || - m_vars[i].flags.is_noncont_dst) { - send_noncontiguous_pointer_data( - i, src_data, ptr_data, event, sent_data, - in_deps_amount, in_deps); - } - else if (src_data && src_data->cpu_buf != 0) { - res = COI::BufferCopy( - ptr_data->mic_buf, - src_data->cpu_buf, - m_vars[i].offset + ptr_data->mic_offset + - m_vars[i].disp, - m_vars_extra[i].cpu_offset + - m_vars_extra[i].cpu_disp, - m_vars[i].size, - COI_COPY_UNSPECIFIED, - m_num_in_dependencies, - m_p_in_dependencies, - event); - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - return false; - } - report_coi_error(c_buf_copy, res); - } - } - else { - char *base = offload_get_src_base(m_vars[i].ptr, - m_vars_extra[i].type_src); - res = COI::BufferWrite( - ptr_data->mic_buf, - ptr_data->mic_offset + - m_vars[i].offset + m_vars[i].disp, - base + m_vars_extra[i].cpu_disp, - m_vars[i].size, - COI_COPY_UNSPECIFIED, - m_num_in_dependencies, - m_p_in_dependencies, - event); - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - return false; - } - report_coi_error(c_buf_write, res); - } - } - ptr_sent += sent_data; - } - break; - - case c_dv_data_slice: - case c_dv_ptr_data_slice: - if (m_vars[i].direction.in && - m_vars[i].size > 0) { - PtrData *dst_data = m_vars[i].into ? - m_vars_extra[i].dst_data : - m_vars_extra[i].src_data; - PtrData* src_data = - (VAR_TYPE_IS_PTR(m_vars_extra[i].type_src) || - VAR_TYPE_IS_DV_DATA(m_vars_extra[i].type_src) || - VAR_TYPE_IS_DV_DATA_SLICE(m_vars_extra[i].type_src) || - VAR_TYPE_IS_SCALAR(m_vars_extra[i].type_src) && - m_vars[i].flags.is_static) ? - m_vars_extra[i].src_data : 0; - COIEVENT *event = - (m_stream != no_stream || - is_async || - (should_use_async_buffer_write && - m_vars[i].size >= __offload_use_async_buffer_write)) ? - &m_in_deps[m_in_deps_total++] : 0; - if (m_vars[i].flags.is_non_cont_struct || - m_vars[i].flags.is_noncont_src || - m_vars[i].flags.is_noncont_dst) { - send_noncontiguous_pointer_data( - i, src_data, dst_data, event, sent_data, - in_deps_amount, in_deps); - } - else if (src_data && src_data->cpu_buf != 0) { - res = COI::BufferCopy( - dst_data->mic_buf, - src_data->cpu_buf, - m_vars[i].offset + - dst_data->mic_offset + - m_vars[i].disp, - m_vars_extra[i].cpu_offset + - m_vars_extra[i].cpu_disp, - m_vars[i].size, - COI_COPY_UNSPECIFIED, - m_num_in_dependencies, - m_p_in_dependencies, - event); - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - return false; - } - report_coi_error(c_buf_copy, res); - } - } - else { - char *base = offload_get_src_base(m_vars[i].ptr, - m_vars_extra[i].type_src); - res = COI::BufferWrite( - dst_data->mic_buf, - dst_data->mic_offset + - m_vars[i].offset + m_vars[i].disp, - base + m_vars_extra[i].cpu_disp, - m_vars[i].size, - COI_COPY_UNSPECIFIED, - m_num_in_dependencies, - m_p_in_dependencies, - event); - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - return false; - } - report_coi_error(c_buf_write, res); - } - } - - ptr_sent += sent_data; - } - break; - - default: - break; - } - if (m_vars_extra[i].omp_last_event_type == c_last_write) { - register_omp_event_call_back(&m_in_deps[m_in_deps_total - 1], info); - } - // alloc field isn't used at target. - // We can reuse it for offset of array pointers. - if (m_vars_extra[i].is_arr_ptr_el) { - m_vars[i].ptr_arr_offset = m_vars_extra[i].ptr_arr_offset; - } - } - // list of out events created while send_pointer_data now became input - // dependencies for runfunction (or Read transfers from target if - // runfunction is absent) - m_num_in_dependencies = m_in_deps_total ? m_in_deps_total : - m_num_in_dependencies; - m_p_in_dependencies = m_in_deps_total ? m_in_deps : m_p_in_dependencies; - - if (m_status) { - m_status->data_sent += ptr_sent; - } - - OFFLOAD_TIMER_HOST_SDATA(get_timer_data(), ptr_sent); - OFFLOAD_DEBUG_TRACE_1(1, GET_OFFLOAD_NUMBER(get_timer_data()), - c_offload_sent_pointer_data, - "Total pointer data sent to target: [%lld] bytes\n", - ptr_sent); - - return true; -} - -bool OffloadDescriptor::gather_copyin_data() -{ - OffloadTimer timer(get_timer_data(), c_offload_host_gather_inputs); - - if (m_need_runfunction && m_in_datalen > 0) { - COIMAPINSTANCE map_inst; - char *data; - - // init marshaller - if (m_inout_buf != 0) { - OffloadTimer timer_map(get_timer_data(), - c_offload_host_map_in_data_buffer); - - COIRESULT res = COI::BufferMap(m_inout_buf, 0, m_in_datalen, - COI_MAP_WRITE_ENTIRE_BUFFER, - 0, 0, 0, &map_inst, - reinterpret_cast<void**>(&data)); - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - return false; - } - report_coi_error(c_buf_map, res); - } - } - else { - data = (char*) m_func_desc + m_func_desc->data_offset; - } - - // send variable descriptors - memcpy(data, m_vars, m_vars_total * sizeof(VarDesc)); - data += m_vars_total * sizeof(VarDesc); - - // init marshaller - m_in.init_buffer(data, m_in_datalen); - - // Gather copy data into buffer - for (int i = 0; i < m_vars_total; i++) { - bool src_is_for_mic = (m_vars[i].direction.out || - m_vars[i].into == NULL); - PtrData* ptr_data = src_is_for_mic ? - m_vars_extra[i].src_data : - m_vars_extra[i].dst_data; - if (m_vars[i].flags.alloc_disp) { - m_in.send_data(&ptr_data->alloc_disp, - sizeof(ptr_data->alloc_disp)); - } - if (TYPE_IS_PTR_TO_PTR(m_vars_extra[i].type_src) || - TYPE_IS_PTR_TO_PTR(m_vars_extra[i].type_dst) || - (m_vars_extra[i].type_src == c_data_ptr_array && - m_vars[i].flags.is_pointer)) { - m_in.send_data(&m_vars_extra[i].pointer_offset, - sizeof(m_vars_extra[i].pointer_offset)); - } - // send sink address to the target - if (m_vars[i].flags.sink_addr) { - m_in.send_data(&ptr_data->mic_addr, - sizeof(ptr_data->mic_addr)); - } - - switch (m_vars_extra[i].type_dst) { - case c_data_ptr_array: - break; - case c_data: - case c_void_ptr: - case c_void_ptr_ptr: - case c_cean_var: - if (m_vars[i].direction.in && - !m_vars[i].flags.is_static_dstn) { - - char *ptr = offload_get_src_base(m_vars[i].ptr, - m_vars_extra[i].type_src); - if (m_vars_extra[i].type_dst == c_cean_var) { - // offset and length are derived from the array - // descriptor - int64_t size = m_vars[i].size; - int64_t disp = m_vars[i].disp; - m_in.send_data(reinterpret_cast<char*>(&size), - sizeof(int64_t)); - m_in.send_data(reinterpret_cast<char*>(&disp), - sizeof(int64_t)); - } - - m_in.send_data(ptr + m_vars_extra[i].cpu_disp, - m_vars[i].size); - } - break; - - case c_dv: - if (m_vars[i].direction.bits || - m_vars[i].alloc_if || - m_vars[i].free_if) { - // send dope vector excluding base - char *ptr = static_cast<char*>(m_vars[i].ptr); - m_in.send_data(ptr + sizeof(uint64_t), - m_vars[i].size - sizeof(uint64_t)); - } - break; - - case c_data_ptr: - // send to target addresses of obsolete - // stacks to be released - if (m_vars[i].flags.is_stack_buf && - !m_vars[i].direction.bits && - m_vars[i].alloc_if && - m_vars[i].size != 0) { - for (PtrDataList::iterator it = - m_destroy_stack.begin(); - it != m_destroy_stack.end(); it++) { - PtrData * ptr_data = *it; - m_in.send_data(&(ptr_data->mic_addr), - sizeof(ptr_data->mic_addr)); - } - } - break; - case c_func_ptr: - case c_func_ptr_ptr: - if (m_vars[i].direction.in) { - m_in.send_func_ptr(*((const void**) m_vars[i].ptr)); - } - break; - - default: - break; - } - } - - if (m_status) { - m_status->data_sent += m_in.get_tfr_size(); - } - - if (m_func_desc->data_offset == 0) { - OffloadTimer timer_unmap(get_timer_data(), - c_offload_host_unmap_in_data_buffer); - COIRESULT res = COI::BufferUnmap(map_inst, 0, 0, 0); - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - return false; - } - report_coi_error(c_buf_unmap, res); - } - } - } - - OFFLOAD_TIMER_HOST_SDATA(get_timer_data(), m_in.get_tfr_size()); - OFFLOAD_DEBUG_TRACE_1(1, - GET_OFFLOAD_NUMBER(get_timer_data()), c_offload_copyin_data, - "Total copyin data sent to target: [%lld] bytes\n", - m_in.get_tfr_size()); - - return true; -} - -bool OffloadDescriptor::compute(void *info) -{ - OffloadTimer timer(get_timer_data(), c_offload_host_start_compute); - - if (m_need_runfunction) { - OFFLOAD_DEBUG_TRACE_1(2, GET_OFFLOAD_NUMBER(get_timer_data()), - c_offload_compute, "Compute task on MIC\n"); - - void* misc = m_func_desc; - int misc_len = m_func_desc_size; - void* ret = 0; - int ret_len = 0; - - if (m_func_desc->data_offset != 0) { - misc_len += m_in_datalen; - - if (m_out_datalen > 0) { - ret = (char*) m_func_desc + m_func_desc->data_offset; - ret_len = m_out_datalen; - } - } - - // dispatch task - COIRESULT res; - COIEVENT event; - - res = m_device.compute(m_stream, - m_compute_buffers, - misc, misc_len, - ret, ret_len, - m_num_in_dependencies, - m_p_in_dependencies, - &event); - - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - return false; - } - report_coi_error(c_pipeline_run_func, res); - } - - if (m_omp_async_last_event_type == c_last_runfunc) { - register_omp_event_call_back(&event, info); - } - - m_in_deps_total = m_num_in_dependencies = 1; - m_in_deps[0] = event; - m_p_in_dependencies = m_in_deps; - } - - return true; -} - -// receive pointer data if source or destination or both of them are -// noncontiguous. There is guarantee that length of destination enough for -// transferred data. -bool OffloadDescriptor::receive_noncontiguous_pointer_data( - int i, - COIBUFFER dst_buf, - COIEVENT *event, - uint64_t &received_data, - uint32_t in_deps_amount, - COIEVENT *in_deps -) -{ - NonContigDesc *desc; - int noncont_num; - int64_t offset_src, offset_dst; - int64_t length_src, length_dst; - int64_t length_src_cur, length_dst_cur; - int64_t receive_size; - COIRESULT res; - bool dst_is_empty = true; - bool src_is_empty = true; - - char *base = offload_get_src_base( - m_vars[i].into ? - static_cast<char*>(m_vars[i].into) : - static_cast<char*>(m_vars[i].ptr), - m_vars_extra[i].type_dst); - received_data = 0; - - // If BufferReadMultiD is defined we can set values of required arguments - // and transfer noncontiguous data via call to the COI routine. - if (__offload_use_coi_noncontiguous_transfer && COI::BufferReadMultiD) { - struct Arr_Desc* arr_desc_dst; - struct Arr_Desc* arr_desc_src; - int64_t size_src, size_dst; - - offset_src = (m_vars_extra[i].read_rng_src)? - m_vars_extra[i].read_rng_src->init_offset : m_vars[i].disp; - size_src = m_vars_extra[i].read_rng_src ? - cean_get_transf_size(m_vars_extra[i].read_rng_src) : - m_vars[i].size; - - offset_dst = (m_vars_extra[i].read_rng_dst)? - m_vars_extra[i].read_rng_dst->init_offset : m_vars_extra[i].cpu_disp; - size_dst = m_vars_extra[i].read_rng_dst ? - cean_get_transf_size(m_vars_extra[i].read_rng_dst) : m_vars[i].size; - - int64_t el_size = (!m_vars[i].into || - (m_vars_extra[i].read_rng_src && - m_vars_extra[i].read_rng_dst)) ? - 1 : - m_vars_extra[i].read_rng_src ? - m_vars_extra[i].read_rng_src->arr_desc->dim[ - m_vars_extra[i].read_rng_src->arr_desc->rank - 1].size : - m_vars_extra[i].read_rng_dst->arr_desc->dim[ - m_vars_extra[i].read_rng_dst->arr_desc->rank - 1].size; - arr_desc_src = (m_vars_extra[i].read_rng_src) ? - m_vars_extra[i].read_rng_src->arr_desc : - make_arr_desc(NULL, // don't required for source - offset_src/el_size, size_src/el_size, - el_size); - arr_desc_dst = !m_vars[i].into ? arr_desc_src : - (m_vars_extra[i].read_rng_dst) ? - m_vars_extra[i].read_rng_dst->arr_desc : - make_arr_desc(NULL, - offset_dst/el_size, size_src/el_size, el_size); - - arr_desc_dst->base = reinterpret_cast<int64_t>(base); - - res = COI::BufferReadMultiD( - m_vars_extra[i].src_data->mic_buf, // SourceBuffer - m_vars[i].offset + m_vars[i].mic_offset - - m_vars_extra[i].src_data->alloc_disp, // Offset - (void*)arr_desc_dst, // descriptor of DestArray - (void*)arr_desc_src, // descriptor of SrcArray - COI_COPY_UNSPECIFIED, // Type - m_num_in_dependencies, // Number of in Dependencies - m_p_in_dependencies, // array of in Dependencies - event); // out Dependency - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - return false; - } - report_coi_error(c_buf_copy, res); - } - return(true); - } - if (m_vars[i].flags.is_non_cont_struct) { - desc = m_vars_extra[i].noncont_desc; - noncont_num = 0; - } - else { - // Set length_src and length_dst - length_src = (m_vars_extra[i].read_rng_src) ? - m_vars_extra[i].read_rng_src->range_size : m_vars[i].size; - length_dst = !m_vars[i].into ? length_src : - (m_vars_extra[i].read_rng_dst) ? - m_vars_extra[i].read_rng_dst->range_size : m_vars[i].size; - receive_size = (length_src < length_dst) ? length_src : length_dst; - } - - // if event is defined we must multiplate for all contiguous intervals - // that will be Copied/Read. - // Take in account that we already have 1 event. - if (event) { - uint32_t range_num = m_vars[i].flags.is_non_cont_struct ? - desc->interval_cnt : - (length_src / receive_size) * - ((m_vars_extra[i].read_rng_src) ? - m_vars_extra[i].read_rng_src->range_max_number : 1) ; - m_out_deps_allocated += range_num; - m_out_deps = - (COIEVENT*)realloc(m_out_deps, sizeof(COIEVENT) * m_out_deps_allocated); - m_out_deps_total--; - } - - // consequently get contiguous ranges, - // define corresponded destination offset and receive data - do { - if (m_vars[i].flags.is_non_cont_struct) { - // ranges are over - if (noncont_num >= desc->interval_cnt) { - break; - } - offset_src = offset_dst = desc->interval[noncont_num].lower; - receive_size = desc->interval[noncont_num].size; - noncont_num++; - } - else { // get source offset - if (src_is_empty) { - if (m_vars_extra[i].read_rng_src) { - if (!get_next_range(m_vars_extra[i].read_rng_src, - &offset_src)) { - // source ranges are over - nothing to send - break; - } - } - else if (received_data == 0) { - offset_src = m_vars[i].disp; - } - else { - break; - } - length_src_cur = length_src; - } - else { - // if source is contiguous or its contiguous range is greater - // than destination one - offset_src += receive_size; - } - length_src_cur -= receive_size; - src_is_empty = length_src_cur == 0; - - // get destination offset - if (dst_is_empty) { - if (m_vars[i].into) { - if (m_vars_extra[i].read_rng_dst) { - if (!get_next_range(m_vars_extra[i].read_rng_dst, - &offset_dst)) { - // destination ranges are over - LIBOFFLOAD_ERROR(c_destination_is_over); - return false; - } - } - // destination is contiguous. - else { - offset_dst = m_vars_extra[i].cpu_disp; - } - length_dst_cur = length_dst; - } - // same as source - else { - offset_dst = offset_src; - length_dst_cur = length_src; - } - } - else { - // if destination is contiguous or its contiguous range is greater - // than source one - offset_dst += receive_size; - } - length_dst_cur -= receive_size; - dst_is_empty = length_dst_cur == 0; - } - if (event) { - event = &m_out_deps[m_out_deps_total++]; - } - if (dst_buf != 0) { - res = COI::BufferCopy( - dst_buf, - m_vars_extra[i].src_data->mic_buf, - m_vars_extra[i].cpu_offset + offset_dst, - m_vars[i].offset + offset_src + - m_vars[i].mic_offset, - receive_size, - COI_COPY_UNSPECIFIED, - m_num_in_dependencies, - m_p_in_dependencies, - event); - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - return false; - } - report_coi_error(c_buf_copy, res); - } - } - else { - res = COI::BufferRead( - m_vars_extra[i].src_data->mic_buf, - m_vars[i].offset + offset_src + - m_vars[i].mic_offset, - base + offset_dst, - receive_size, - COI_COPY_UNSPECIFIED, - m_num_in_dependencies, - m_p_in_dependencies, - event); - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - return false; - } - report_coi_error(c_buf_read, res); - } - } - received_data += receive_size; - } - while (true); - return true; -} - -bool OffloadDescriptor::receive_pointer_data(bool is_async, - bool first_run, void *info) -{ - OffloadTimer timer(get_timer_data(), c_offload_host_start_buffers_reads); - - bool should_use_async_buffer_read = m_initial_need_runfunction; - uint64_t ptr_received = 0; - COIRESULT res; - - // For offload_transfer and offload with empty body without signal: - // - if there is only one buffer copy - get data synchronously - // - if there are multiple buffer copy and - // __offload_parallel_copy is false - get data synchronously - // - if there are multiple buffer copy - // and __offload_parallel_copy is true - get data asynchronously - // It concerns only data with size greater than __offload_use_async_buffer_read. - // Data of size less than __offload_use_async_buffer_read are received synchronously. - // Synchronous transfer results in better performance in COI. - // __offload_parallel_copy is false by default but can be changed - // via environment variable OFFLOAD_PARALLEL_COPY - if (!m_initial_need_runfunction && __offload_parallel_copy) { - int big_size_count = 0; - - for (int i = 0; i < m_vars_total; i++) { - if (m_vars[i].direction.out && - m_vars[i].size >= __offload_use_async_buffer_read) { - // preallocated OUT only at second run - if (first_run == m_vars[i].flags.preallocated) { - continue; - } - switch (m_vars_extra[i].type_src) { - case c_data: - case c_void_ptr: - case c_void_ptr_ptr: - case c_cean_var: - if (m_vars[i].flags.is_static) { - big_size_count++; - } - break; - case c_string_ptr: - case c_data_ptr: - case c_string_ptr_ptr: - case c_data_ptr_ptr: - case c_cean_var_ptr: - case c_cean_var_ptr_ptr: - case c_dv_data: - case c_dv_ptr_data: - case c_dv_data_slice: - case c_dv_ptr_data_slice: - case c_dv_ptr: - big_size_count++; - break; - default: - break; - } - } - } - if (big_size_count > 1) { - should_use_async_buffer_read = true; - } - } - uint32_t in_deps_amount = m_in_deps_total; - COIEVENT *in_deps = m_in_deps_total > 0 ? m_in_deps : 0; - - for (int i = 0; i < m_vars_total; i++) { - uint64_t received_data = m_vars[i].size; - - // Nothing to receive if use_device_ptr - if (m_vars[i].flags.use_device_ptr ) - continue; - if (m_vars_extra[i].omp_last_event_type == c_last_read && - m_out_deps_total > 0) { - m_num_in_dependencies = m_out_deps_total; - m_p_in_dependencies = m_out_deps; - } - // At first run don't receive by preallocated target pointer as the - //pointer value will be ready later after call to scatter_copyout_data - if (first_run && m_vars[i].alloc_if && m_vars[i].flags.preallocated) { - m_preallocated_alloc = true; - // need one more call to OffloadDescriptor::receive_pointer_data - if (m_vars[i].direction.out) { - m_out_with_preallocated = true; - } - continue; - } - switch (m_vars_extra[i].type_src) { - case c_data_ptr_array: - break; - case c_data: - case c_void_ptr: - case c_void_ptr_ptr: - case c_cean_var: - if (m_vars[i].direction.out && - m_vars[i].flags.is_static) { - COIEVENT *event = - (m_stream != no_stream || - is_async || - m_in_deps_total > 0 || - (should_use_async_buffer_read && - m_vars[i].size >= __offload_use_async_buffer_read)) ? - &m_out_deps[m_out_deps_total++] : 0; - PtrData *ptr_data = NULL; - COIBUFFER dst_buf = NULL; // buffer at host - char *base; - - if (VAR_TYPE_IS_PTR(m_vars_extra[i].type_dst)) { - ptr_data = m_vars[i].into ? - m_vars_extra[i].dst_data : - m_vars_extra[i].src_data; - } - else if (VAR_TYPE_IS_SCALAR(m_vars_extra[i].type_dst)) { - if (m_vars[i].flags.is_static_dstn) { - ptr_data = m_vars[i].into ? - m_vars_extra[i].dst_data : - m_vars_extra[i].src_data; - } - } - dst_buf = ptr_data ? ptr_data->cpu_buf : NULL; - if (dst_buf == NULL) { - base = offload_get_src_base( - m_vars[i].into ? - static_cast<char*>(m_vars[i].into) : - static_cast<char*>(m_vars[i].ptr), - m_vars_extra[i].type_dst); - } - - if (m_vars[i].flags.is_non_cont_struct || - m_vars[i].flags.is_noncont_src || - m_vars[i].flags.is_noncont_dst) { - receive_noncontiguous_pointer_data( - i, dst_buf, event, received_data, - m_num_in_dependencies, m_p_in_dependencies); - } - else if (dst_buf != 0) { - res = COI::BufferCopy( - dst_buf, - m_vars_extra[i].src_data->mic_buf, - m_vars_extra[i].cpu_offset + - m_vars_extra[i].cpu_disp, - m_vars[i].offset + m_vars[i].disp, - m_vars[i].size, - COI_COPY_UNSPECIFIED, - m_num_in_dependencies, - m_p_in_dependencies, - event); - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - return false; - } - report_coi_error(c_buf_copy, res); - } - } - else { - res = COI::BufferRead( - m_vars_extra[i].src_data->mic_buf, - m_vars[i].offset + m_vars[i].disp, - base + m_vars_extra[i].cpu_offset + - m_vars_extra[i].cpu_disp, - m_vars[i].size, - COI_COPY_UNSPECIFIED, - m_num_in_dependencies, - m_p_in_dependencies, - event); - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - return false; - } - report_coi_error(c_buf_read, res); - } - } - ptr_received += received_data; - } - break; - - case c_string_ptr: - case c_data_ptr: - case c_string_ptr_ptr: - case c_data_ptr_ptr: - case c_cean_var_ptr: - case c_cean_var_ptr_ptr: - case c_dv_data: - case c_dv_ptr_data: - case c_dv_data_slice: - case c_dv_ptr_data_slice: - case c_dv_ptr: { - COIBUFFER dst_buf = NULL; // buffer on host - if (m_vars[i].direction.out && m_vars[i].size > 0) { - COIEVENT *event = - (m_stream != no_stream || - is_async || - m_in_deps_total > 0 || - (should_use_async_buffer_read && - m_vars[i].size >= __offload_use_async_buffer_read)) ? - &m_out_deps[m_out_deps_total++] : 0; - - uint64_t dst_offset = 0; - char *base = static_cast<char*>(m_vars[i].ptr); - - if (VAR_TYPE_IS_PTR(m_vars_extra[i].type_dst)) { - PtrData *ptr_data = m_vars[i].into ? - m_vars_extra[i].dst_data : - m_vars_extra[i].src_data; - dst_buf = ptr_data ? ptr_data->cpu_buf : NULL; - if (dst_buf == NULL) { - base = m_vars[i].into ? - *static_cast<char**>(m_vars[i].into) : - *static_cast<char**>(m_vars[i].ptr); - } - dst_offset = m_vars_extra[i].cpu_offset + - m_vars_extra[i].cpu_disp; - } - else if (VAR_TYPE_IS_SCALAR(m_vars_extra[i].type_dst)) { - if (m_vars[i].flags.is_static_dstn) { - dst_buf = m_vars[i].into ? - m_vars_extra[i].dst_data->cpu_buf : - m_vars_extra[i].src_data->cpu_buf; - } - if (dst_buf == NULL) { - base = offload_get_src_base( - m_vars[i].into ? - static_cast<char*>(m_vars[i].into) : - static_cast<char*>(m_vars[i].ptr), - m_vars_extra[i].type_dst); - } - dst_offset = m_vars_extra[i].cpu_offset + - m_vars_extra[i].cpu_disp; - } - else if (VAR_TYPE_IS_DV_DATA(m_vars_extra[i].type_dst) || - VAR_TYPE_IS_DV_DATA_SLICE(m_vars_extra[i].type_dst)) { - PtrData *ptr_data = m_vars[i].into != 0 ? - m_vars_extra[i].dst_data : - m_vars_extra[i].src_data; - dst_buf = ptr_data != 0 ? ptr_data->cpu_buf : 0; - if (dst_buf == NULL) { - base = offload_get_src_base( - m_vars[i].into ? - static_cast<char*>(m_vars[i].into) : - static_cast<char*>(m_vars[i].ptr), - m_vars_extra[i].type_dst); - - } - dst_offset = m_vars_extra[i].cpu_offset + - m_vars_extra[i].cpu_disp; - } - - if (m_vars[i].flags.is_non_cont_struct || - m_vars[i].flags.is_noncont_src || - m_vars[i].flags.is_noncont_dst) { - receive_noncontiguous_pointer_data( - i, dst_buf, event, received_data, - m_num_in_dependencies, m_p_in_dependencies); - } - else if (dst_buf != 0) { - res = COI::BufferCopy( - dst_buf, - m_vars_extra[i].src_data->mic_buf, - dst_offset, - m_vars[i].offset + m_vars[i].disp + - m_vars[i].mic_offset, - m_vars[i].size, - COI_COPY_UNSPECIFIED, - m_num_in_dependencies, - m_p_in_dependencies, - event); - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - return false; - } - report_coi_error(c_buf_copy, res); - } - } - else { - res = COI::BufferRead( - m_vars_extra[i].src_data->mic_buf, - m_vars[i].offset + m_vars[i].disp + - m_vars[i].mic_offset, - base + dst_offset, - m_vars[i].size, - COI_COPY_UNSPECIFIED, - m_num_in_dependencies, - m_p_in_dependencies, - event); - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - return false; - } - report_coi_error(c_buf_read, res); - } - } - ptr_received += received_data; - } - break; - } - - default: - break; - } - - if (m_vars_extra[i].omp_last_event_type == c_last_read) { - register_omp_event_call_back(&m_out_deps[m_out_deps_total - 1], info); - } - // destroy buffers for obsolete stacks - if (m_destroy_stack.size() != 0) { - for (PtrDataList::iterator it = m_destroy_stack.begin(); - it != m_destroy_stack.end(); it++) { - PtrData *ptr_data = *it; - m_destroy_buffers.push_back(ptr_data->mic_buf); - OFFLOAD_TRACE(3, "Removing stack buffer with addr %p\n", - ptr_data->mic_addr); - } - m_destroy_stack.clear(); - } - if (m_vars[i].free_if) { - // remove association for automatic variables - if (m_is_openmp) { - if (m_vars_extra[i].auto_data) { - AutoData *auto_data = m_vars_extra[i].auto_data; - if (m_vars[i].flags.always_delete) { - auto_data->nullify_reference(); - } - else if (auto_data->remove_reference() == 0) { - m_device.remove_auto_data(auto_data->cpu_addr.start()); - } - continue; - } - else { - PtrData *ptr_data = m_vars_extra[i].src_data; - if (ptr_data && - IS_OPENMP_IMPLICIT_OR_LINK(ptr_data->var_alloc_type)) { - if (ptr_data->get_reference() > 0) { - ptr_data->remove_reference(); - } - continue; - } - } - } - - // destroy buffers - if (m_vars[i].direction.out || m_vars[i].into == NULL) { - if (!VAR_TYPE_IS_PTR(m_vars_extra[i].type_src) && - !VAR_TYPE_IS_DV_DATA_SLICE(m_vars_extra[i].type_src) && - !VAR_TYPE_IS_DV_DATA(m_vars_extra[i].type_src)) { - continue; - } - - PtrData *ptr_data = m_vars_extra[i].src_data; - if (ptr_data->remove_reference() == 0) { - // destroy buffers - if (ptr_data->cpu_buf != 0) { - m_destroy_buffers.push_back(ptr_data->cpu_buf); - } - if (ptr_data->mic_buf != 0) { - m_destroy_buffers.push_back(ptr_data->mic_buf); - } - OFFLOAD_TRACE(3, "Removing association for addr %p\n", - ptr_data->cpu_addr.start()); - - // remove association from map - if (m_vars[i].flags.targetptr) { - m_device.remove_targetptr_data(ptr_data->cpu_addr.start()); - } - else { - m_device.remove_ptr_data(ptr_data->cpu_addr.start()); - } - } - } - else if (VAR_TYPE_IS_PTR(m_vars_extra[i].type_dst) || - VAR_TYPE_IS_DV_DATA_SLICE(m_vars_extra[i].type_dst) || - VAR_TYPE_IS_DV_DATA(m_vars_extra[i].type_dst)) { - PtrData *ptr_data = m_vars_extra[i].dst_data; - - if (ptr_data->remove_reference() == 0) { - // destroy buffers - if (ptr_data->cpu_buf != 0) { - m_destroy_buffers.push_back(ptr_data->cpu_buf); - } - if (ptr_data->mic_buf != 0) { - m_destroy_buffers.push_back(ptr_data->mic_buf); - } - OFFLOAD_TRACE(3, "Removing association for addr %p\n", - ptr_data->cpu_addr.start()); - - // remove association from map - if (m_vars[i].flags.targetptr) { - m_device.remove_targetptr_data(ptr_data->cpu_addr.start()); - } - else { - m_device.remove_ptr_data(ptr_data->cpu_addr.start()); - } - } - } - } - } - - if (m_status) { - m_status->data_received += ptr_received; - } - - m_num_in_dependencies = m_out_deps_total ? m_out_deps_total : - m_num_in_dependencies; - m_p_in_dependencies = m_out_deps_total ? m_out_deps : m_p_in_dependencies; - - OFFLOAD_TIMER_HOST_RDATA(get_timer_data(), ptr_received); - OFFLOAD_DEBUG_TRACE_1(1, GET_OFFLOAD_NUMBER(get_timer_data()), - c_offload_received_pointer_data, - "Total pointer data received from target: [%lld] bytes\n", - ptr_received); - - return true; -} - -bool OffloadDescriptor::scatter_copyout_data() -{ - OffloadTimer timer(get_timer_data(), c_offload_host_scatter_outputs); - - if (m_need_runfunction && m_out_datalen > 0) { - - // total size that need to be transferred from target to host - COIMAPINSTANCE map_inst; - COIRESULT res; - char *data; - - // output data buffer - if (m_func_desc->data_offset == 0) { - OffloadTimer timer_map(get_timer_data(), - c_offload_host_map_out_data_buffer); - - COIRESULT res = COI::BufferMap(m_inout_buf, 0, m_out_datalen, - COI_MAP_READ_ONLY, 0, 0, 0, - &map_inst, - reinterpret_cast<void**>(&data)); - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - return false; - } - report_coi_error(c_buf_map, res); - } - } - else { - data = (char*) m_func_desc + m_func_desc->data_offset; - } - - // get timing data - OFFLOAD_TIMER_TARGET_DATA(get_timer_data(), data); - data += OFFLOAD_TIMER_DATALEN(); - - // initialize output marshaller - m_out.init_buffer(data, m_out_datalen); - - for (int i = 0; i < m_vars_total; i++) { - bool src_is_for_mic = (m_vars[i].direction.out || - m_vars[i].into == NULL); - - if (m_vars_extra[i].type_src != c_data_ptr_array && - m_vars[i].flags.preallocated && m_vars[i].alloc_if) { - PtrData *ptr_data; - void *ptr_value; - void ** cpu_ptr = src_is_for_mic ? - reinterpret_cast<void**>(m_vars[i].ptr) : - reinterpret_cast<void**>(m_vars[i].into); - void* alloc_base = NULL; - int64_t alloc_disp = 0; - int64_t alloc_size; - if (m_vars_extra[i].alloc != NULL) { - // array descriptor - const Arr_Desc *ap = - static_cast<const Arr_Desc*>(m_vars_extra[i].alloc); - - __arr_data_offset_and_length(ap, alloc_disp, alloc_size); - - alloc_base = reinterpret_cast<void*>(ap->base); - } - - // get pointer to target memory - m_out.receive_data(&ptr_value, sizeof(void*)); - - // add new entry - if (!alloc_ptr_data( - ptr_data, - ptr_value, - (alloc_base != NULL) ? - alloc_disp : m_vars[i].disp, - (alloc_base != NULL) ? - alloc_size : m_vars[i].size, - alloc_disp, - 0, - m_vars[i].flags.targetptr, - m_vars[i].flags.preallocated, - m_vars[i].flags.pin)) { - return false; - } - - ptr_data->add_reference(); - *cpu_ptr = ptr_value; - if (src_is_for_mic) { - m_vars_extra[i].src_data = ptr_data; - } - else { - m_vars_extra[i].dst_data = ptr_data; - } - m_vars[i].offset = (char*) ptr_value - - (char*) ptr_data->cpu_addr.start(); - } - - switch (m_vars_extra[i].type_src) { - case c_data_ptr_array: - break; - case c_data: - case c_void_ptr: - case c_void_ptr_ptr: - case c_cean_var: - if (m_vars[i].direction.out && - !m_vars[i].flags.is_static) { - - if (m_vars[i].into) { - char *ptr = offload_get_src_base( - static_cast<char*>(m_vars[i].into), - m_vars_extra[i].type_dst); - m_out.receive_data(ptr + m_vars_extra[i].cpu_disp, - m_vars[i].size); - } - else { - m_out.receive_data( - static_cast<char*>(m_vars[i].ptr) + - m_vars_extra[i].cpu_disp, - m_vars[i].size); - } - } - break; - - case c_func_ptr: - case c_func_ptr_ptr: - if (m_vars[i].direction.out) { - m_out.receive_func_ptr((const void**) m_vars[i].ptr); - } - break; - - default: - break; - } - } - - if (m_status) { - m_status->data_received += m_out.get_tfr_size(); - } - - if (m_func_desc->data_offset == 0) { - OffloadTimer timer_unmap(get_timer_data(), - c_offload_host_unmap_out_data_buffer); - - COIRESULT res = COI::BufferUnmap(map_inst, 0, 0, 0); - if (res != COI_SUCCESS) { - if (m_status != 0) { - m_status->result = translate_coi_error(res); - return false; - } - report_coi_error(c_buf_unmap, res); - } - } - } - - OFFLOAD_TIMER_HOST_RDATA(get_timer_data(), m_out.get_tfr_size()); - OFFLOAD_TRACE(1, "Total copyout data received from target: [%lld] bytes\n", - m_out.get_tfr_size()); - - return true; -} - -static void get_arr_desc_numbers( - const Arr_Desc *ap, - int64_t el_size, - int64_t &offset, - int64_t &size, - int &el_number, - CeanReadRanges* &ptr_ranges -) -{ - if (is_arr_desc_contiguous(ap)) { - ptr_ranges = NULL; - __arr_data_offset_and_length(ap, offset, size); - el_number = size / el_size; - } - else { - ptr_ranges = init_read_ranges_arr_desc(ap); - el_number = (ptr_ranges->range_size / el_size) * - ptr_ranges->range_max_number; - size = ptr_ranges->range_size; - } -} - -bool OffloadDescriptor::gen_var_descs_for_pointer_array(int i) -{ - int pointers_number; - int tmp_val; - int new_index = m_vars_total; - const Arr_Desc *ap; - const VarDesc3 *vd3 = static_cast<const VarDesc3*>(m_vars[i].ptr); - int flags = vd3->array_fields; - bool src_is_for_mic = (m_vars[i].direction.out || - m_vars[i].into == NULL); - - ReadArrElements<void *> ptr; - ReadArrElements<void *> into; - ReadArrElements<int64_t> ext_start; - ReadArrElements<int64_t> ext_elements; - ReadArrElements<int64_t> align; - ReadArrElements<int64_t> alloc_if; - ReadArrElements<int64_t> free_if; - ReadArrElements<int64_t> into_start; - ReadArrElements<int64_t> into_elem; - ReadArrElements<int64_t> alloc_start; - ReadArrElements<int64_t> alloc_elem; - - - ap = static_cast<const Arr_Desc*>(vd3->ptr_array); - - // "pointers_number" for total number of transferred pointers. - // For each of them we create new var_desc and put it at the bottom - // of the var_desc's array - get_arr_desc_numbers(ap, sizeof(void *), ptr.offset, ptr.size, - pointers_number, ptr.ranges); - ptr.base = reinterpret_cast<char*>(ap->base); - - // 2. prepare memory for new var_descs - m_vars_total += pointers_number; - m_vars = (VarDesc*)realloc(m_vars, m_vars_total * sizeof(VarDesc)); - if (m_vars == NULL) - LIBOFFLOAD_ERROR(c_malloc); - m_vars_extra = - (VarExtra*)realloc(m_vars_extra, m_vars_total * sizeof(VarExtra)); - if (m_vars_extra == NULL) - LIBOFFLOAD_ERROR(c_malloc); - m_in_deps = - (COIEVENT*)realloc(m_in_deps, sizeof(COIEVENT) * (m_vars_total + 1)); - if (m_in_deps == NULL) - LIBOFFLOAD_ERROR(c_malloc); - m_out_deps = - (COIEVENT*)realloc(m_out_deps, sizeof(COIEVENT) * m_vars_total); - if (m_out_deps == NULL) - LIBOFFLOAD_ERROR(c_malloc); - - // 3. Prepare for reading new var_desc's fields - // EXTENT START - if ((flags & (1<<flag_extent_start_is_array)) != 0) { - ap = static_cast<const Arr_Desc*>(vd3->extent_start); - get_arr_desc_numbers(ap, ap->dim[ap->rank - 1].size, ext_start.offset, - ext_start.size, tmp_val, ext_start.ranges); - ext_start.base = reinterpret_cast<char*>(ap->base); - ext_start.el_size = ap->dim[ap->rank - 1].size; - - if (tmp_val < pointers_number) { - LIBOFFLOAD_ERROR(c_pointer_array_mismatch, "extent start"); - return false; - } - } - else if ((flags & (1<<flag_extent_start_is_scalar)) != 0) { - ext_start.val = (int64_t)vd3->extent_start; - } - else { - ext_start.val = 0; - } - - // EXTENT ELEMENTS NUMBER - if ((flags & (1<<flag_extent_elements_is_array)) != 0) { - ap = static_cast<const Arr_Desc*>(vd3->extent_elements); - get_arr_desc_numbers(ap, ap->dim[ap->rank - 1].size, - ext_elements.offset, ext_elements.size, - tmp_val, ext_elements.ranges); - ext_elements.base = reinterpret_cast<char*>(ap->base); - ext_elements.el_size = ap->dim[ap->rank - 1].size; - - if (tmp_val < pointers_number) { - LIBOFFLOAD_ERROR(c_pointer_array_mismatch, "extent elements"); - return false; - } - } - else if ((flags & (1<<flag_extent_elements_is_scalar)) != 0) { - ext_elements.val = (int64_t)vd3->extent_elements; - } - else { - ext_elements.val = m_vars[i].count; - } - - // ALLOC_IF - if ((flags & (1<<flag_alloc_if_is_array)) != 0) { - ap = static_cast<const Arr_Desc*>(vd3->alloc_if_array); - get_arr_desc_numbers(ap, ap->dim[ap->rank - 1].size, alloc_if.offset, - alloc_if.size, tmp_val, alloc_if.ranges); - alloc_if.base = reinterpret_cast<char*>(ap->base); - alloc_if.el_size = ap->dim[ap->rank - 1].size; - - if (tmp_val < pointers_number) { - LIBOFFLOAD_ERROR(c_pointer_array_mismatch, "alloc_if"); - return false; - } - } - else { - alloc_if.val = m_vars[i].alloc_if; - } - - // FREE_IF - if ((flags & (1<<flag_free_if_is_array)) != 0) { - ap = static_cast<const Arr_Desc*>(vd3->free_if_array); - get_arr_desc_numbers(ap, ap->dim[ap->rank - 1].size, free_if.offset, - free_if.size, tmp_val, free_if.ranges); - free_if.base = reinterpret_cast<char*>(ap->base); - free_if.el_size = ap->dim[ap->rank - 1].size; - - if (tmp_val < pointers_number) { - LIBOFFLOAD_ERROR(c_pointer_array_mismatch, "free_if"); - return false; - } - } - else { - free_if.val = m_vars[i].free_if; - } - - // ALIGN - - if ((flags & (1<<flag_align_is_array)) != 0) { - ap = static_cast<const Arr_Desc*>(vd3->align_array); - get_arr_desc_numbers(ap, ap->dim[ap->rank - 1].size, align.offset, - align.size, tmp_val, align.ranges); - align.base = reinterpret_cast<char*>(ap->base); - align.el_size = ap->dim[ap->rank - 1].size; - - if (tmp_val < pointers_number) { - LIBOFFLOAD_ERROR(c_pointer_array_mismatch, "align"); - return false; - } - } - else { - align.val = m_vars[i].align; - } - - // 3.1 INTO - - if (m_vars[i].into) { - ap = static_cast<const Arr_Desc*>(m_vars[i].into); - get_arr_desc_numbers(ap, ap->dim[ap->rank - 1].size, into.offset, - into.size, tmp_val, into.ranges); - into.base = reinterpret_cast<char*>(ap->base); - - if (tmp_val < pointers_number) { - LIBOFFLOAD_ERROR(c_pointer_array_mismatch, "into"); - return false; - } - } - - // 3.2 INTO_START - - if ((flags & (1<<flag_into_start_is_array)) != 0) { - ap = static_cast<const Arr_Desc*>(vd3->into_start); - get_arr_desc_numbers(ap, ap->dim[ap->rank - 1].size, into_start.offset, - into_start.size, tmp_val, into_start.ranges); - into_start.base = reinterpret_cast<char*>(ap->base); - into_start.el_size = ap->dim[ap->rank - 1].size; - - if (tmp_val < pointers_number) { - LIBOFFLOAD_ERROR(c_pointer_array_mismatch, "into_extent start"); - return false; - } - } - else if ((flags & (1<<flag_into_start_is_scalar)) != 0) { - into_start.val = (int64_t)vd3->into_start; - } - else { - into_start.val = 0; - } - - // 3.3 INTO_ELEMENTS - - if ((flags & (1<<flag_into_elements_is_array)) != 0) { - ap = static_cast<const Arr_Desc*>(vd3->into_elements); - get_arr_desc_numbers(ap, ap->dim[ap->rank - 1].size, into_elem.offset, - into_elem.size, tmp_val, into_elem.ranges); - into_elem.base = reinterpret_cast<char*>(ap->base); - into_elem.el_size = ap->dim[ap->rank - 1].size; - - if (tmp_val < pointers_number) { - LIBOFFLOAD_ERROR(c_pointer_array_mismatch, "into_extent elements"); - return false; - } - } - else if ((flags & (1<<flag_into_elements_is_scalar)) != 0) { - into_elem.val = (int64_t)vd3->into_elements; - } - else { - into_elem.val = m_vars[i].count; - } - - // alloc_start - - if ((flags & (1<<flag_alloc_start_is_array)) != 0) { - ap = static_cast<const Arr_Desc*>(vd3->alloc_start); - get_arr_desc_numbers(ap, ap->dim[ap->rank - 1].size, - alloc_start.offset, alloc_start.size, tmp_val, - alloc_start.ranges); - alloc_start.base = reinterpret_cast<char*>(ap->base); - alloc_start.el_size = ap->dim[ap->rank - 1].size; - - if (tmp_val < pointers_number) { - LIBOFFLOAD_ERROR(c_pointer_array_mismatch, "alloc_extent start"); - return false; - } - } - else if ((flags & (1<<flag_alloc_start_is_scalar)) != 0) { - alloc_start.val = (int64_t)vd3->alloc_start; - } - else { - alloc_start.val = 0; - } - - // alloc_elem - - if ((flags & (1<<flag_alloc_elements_is_array)) != 0) { - ap = static_cast<const Arr_Desc*>(vd3->alloc_elements); - get_arr_desc_numbers(ap, ap->dim[ap->rank - 1].size, alloc_elem.offset, - alloc_elem.size, tmp_val, alloc_elem.ranges); - alloc_elem.base = reinterpret_cast<char*>(ap->base); - alloc_elem.el_size = ap->dim[ap->rank - 1].size; - if (tmp_val < pointers_number) { - LIBOFFLOAD_ERROR(c_pointer_array_mismatch, - "alloc_extent elements"); - return false; - } - } - else if ((flags & (1<<flag_alloc_elements_is_scalar)) != 0) { - alloc_elem.val = (int64_t)vd3->alloc_elements; - } - else { - alloc_elem.val = 0; - } - - for (int k = 0; k < pointers_number; k++) { - int type = flags & 0x3f; - int type_src, type_dst; - // Get new values - // type_src, type_dst - type_src = type_dst = (type == c_data_ptr_array) ? - c_data_ptr : (type == c_func_ptr_array) ? - c_func_ptr : (type == c_void_ptr_array) ? - c_void_ptr : (type == c_string_ptr_array) ? - c_string_ptr : 0; - - // Get ptr val - if (!ptr.read_next(true)) { - break; - } - else { - ptr.val = (void*)(ptr.base + ptr.offset); - } - - // !!! If we got error at phase of reading - it's an internal - // !!! error, as we must detect mismatch before - - // Get into val - if (m_vars[i].into) { - if (!into.read_next(true)) { - LIBOFFLOAD_ERROR(c_pointer_array_mismatch, "into"); - LIBOFFLOAD_ABORT; - } - else { - into.val = (void*)(into.base + into.offset); - } - } - - // Get other components of the clause - if (!ext_start.read_next(flags & (1<<flag_extent_start_is_array))) { - LIBOFFLOAD_ERROR(c_pointer_array_mismatch, "extent start"); - LIBOFFLOAD_ABORT; - } - if (!ext_elements.read_next( - flags & (1<<flag_extent_elements_is_array))) { - LIBOFFLOAD_ERROR(c_pointer_array_mismatch, "extent elements"); - LIBOFFLOAD_ABORT; - } - if (!alloc_if.read_next(flags & (1<<flag_alloc_if_is_array))) { - LIBOFFLOAD_ERROR(c_pointer_array_mismatch, "alloc_if"); - LIBOFFLOAD_ABORT; - } - if (!free_if.read_next(flags & (1<<flag_free_if_is_array))) { - LIBOFFLOAD_ERROR(c_pointer_array_mismatch, "free_if"); - LIBOFFLOAD_ABORT; - } - if (!align.read_next(flags & (1<<flag_align_is_array))) { - LIBOFFLOAD_ERROR(c_pointer_array_mismatch, "align"); - LIBOFFLOAD_ABORT; - } - if (!into_start.read_next(flags & (1<<flag_into_start_is_array))) { - LIBOFFLOAD_ERROR(c_pointer_array_mismatch, "into_extent start"); - LIBOFFLOAD_ABORT; - } - if (!into_elem.read_next(flags & (1<<flag_into_elements_is_array))) { - LIBOFFLOAD_ERROR(c_pointer_array_mismatch, "into_extent elements"); - LIBOFFLOAD_ABORT; - } - if (!alloc_start.read_next(flags & (1<<flag_alloc_start_is_array))) { - LIBOFFLOAD_ERROR(c_pointer_array_mismatch, "alloc_extent start"); - LIBOFFLOAD_ABORT; - } - if (!alloc_elem.read_next( - flags & (1<<flag_alloc_elements_is_array))) { - LIBOFFLOAD_ERROR(c_pointer_array_mismatch, "alloc_extent elements"); - LIBOFFLOAD_ABORT; - } - - m_vars[new_index + k].direction.bits = m_vars[i].direction.bits; - m_vars[new_index + k].alloc_if = alloc_if.val; - m_vars[new_index + k].free_if = free_if.val; - m_vars[new_index + k].align = align.val; - m_vars[new_index + k].mic_offset = 0; - m_vars[new_index + k].flags.bits = m_vars[i].flags.bits; - m_vars[new_index + k].flags.is_pointer = 0; - m_vars[new_index + k].offset = 0; - m_vars[new_index + k].size = m_vars[i].size; - m_vars[new_index + k].flags.targetptr = m_vars[i].flags.targetptr; - m_vars[new_index + k].flags.preallocated = - m_vars[i].flags.preallocated; - - if (ext_start.val == 0) { - m_vars[new_index + k].count = ext_elements.val; - m_vars[new_index + k].ptr = ptr.val; - if (type_src == c_string_ptr) { - m_vars[new_index + k].size = 0; - } - } - else { - m_vars[new_index + k].count = 0; - m_vars[new_index + k].ptr = - static_cast<void*>(make_arr_desc( - ptr.val, - ext_start.val, - ext_elements.val, - m_vars[i].size)); - - type_src = type_src == c_data_ptr ? c_cean_var_ptr : - c_string_ptr ? c_cean_var_ptr : - type_src; - if (!m_vars[i].into) { - type_dst = type_src; - } - } - - if (m_vars[i].into && into_elem.val != 0) { - m_vars[new_index + k].into = - static_cast<void*>(make_arr_desc( - into.val, - into_start.val, - into_elem.val, - m_vars[i].size)); - type_dst = (type == c_data_ptr_array) ? c_cean_var_ptr : - (type == c_string_ptr_array) ? c_cean_var_ptr : - type_src; - } - else { - m_vars[new_index + k].into = NULL; - } - - if (alloc_elem.val != 0) { - m_vars[new_index + k].alloc = - static_cast<void*>(make_arr_desc( - ptr.val, - alloc_start.val, - alloc_elem.val, - m_vars[i].size)); - } - else { - m_vars[new_index + k].alloc = NULL; - } - - m_vars[new_index + k].type.src = - m_vars_extra[new_index + k].type_src = type_src; - m_vars[new_index + k].type.dst = - m_vars_extra[new_index + k].type_dst = type_dst; - - m_vars_extra[new_index + k].alloc = m_vars[new_index + k].alloc; - m_vars_extra[new_index + k].is_arr_ptr_el = 1; - m_vars_extra[new_index + k].ptr_arr_offset = - src_is_for_mic ? ptr.offset : into.offset; - } - // count and alloc fields are useless at target. They can be reused - // for pointer arrays. - m_vars[i].count = pointers_number; - m_vars[i].ptr_arr_offset = new_index; - return true; -} - -// Gets in dependencies of the previous offload via the stream "m_stream". -// Out argument in_deps_amount - address of amount of the dependencies -// Out argument in_deps - address of array of dependencies. -// Description of the dependencies scheme for streams : -// ---------------------------------------------------- -// Every offload forms DAG consisted of 3 nodes: -// for in-transfers, runfunction and out-transfers. -// Every node has in-dependencies and out-dependencies -// Out-dependencies of previous node forms in-dependencies of current node. -// In-dependencies of 1-st node (of in-transfers) without streams is equal -// to NULL. For streams in-dependencies of 1-st node is equal to list of out -// dependencies of last node of previous offload via this stream. -// So we can say that DAGs of 2 consequent offloads via the same stream are -// connected by the way described above. -void OffloadDescriptor::get_stream_in_dependencies( - uint32_t &in_deps_amount, - COIEVENT* &in_deps -) -{ - if (m_stream != no_stream && m_stream != 0) { - Stream * stream = Stream::find_stream(m_stream, false); - if (!stream) { - LIBOFFLOAD_ERROR(c_offload_no_stream, - m_device.get_logical_index()); - LIBOFFLOAD_ABORT; - } - OffloadDescriptor* offload = stream->get_last_offload(); - - // if it's the first offload in the stream - if (!offload) { - return; - } - // if last offload has out-tranfers - if (offload->m_out_deps_total) { - in_deps_amount = offload->m_out_deps_total; - in_deps = offload->m_out_deps; - } - // last offload only sends pointer data or run function or both of them - // and has no out-transfers - else if (offload->m_in_deps_total) { - in_deps_amount = offload->m_in_deps_total; - in_deps = offload->m_in_deps; - } - } -} - -static void __offload_fini_library(void) -{ - OFFLOAD_DEBUG_TRACE(2, "Cleanup offload library ...\n"); - if (mic_engines_total > 0) { - delete[] mic_engines; - mic_engines_total = 0; - - if (mic_proxy_fs_root != 0) { - free(mic_proxy_fs_root); - mic_proxy_fs_root = 0; - } - - if (knc_library_path != 0) { - free(knc_library_path); - knc_library_path = 0; - } - - if (knl_library_path != 0) { - free(knl_library_path); - knl_library_path = 0; - } - - // destroy thread key - thread_key_delete(mic_thread_key); - } - - // unload COI library - if (COI::is_available) { - COI::fini(); - } - - OFFLOAD_DEBUG_TRACE(2, "Cleanup offload library ... done\n"); -} - -typedef std::pair<int, micLcpuMask*> deviceLcpu; -typedef std::list<deviceLcpu> deviceLcpuList; - -static int process_offload_devices( - const char *env_var, - uint32_t num_devices, - deviceLcpuList &device_cpu_list -) -{ - // Value is composed of comma separated physical device index - // optionally qualified by logical CPU subset, e.g. 0[60,70-80] - char *buf = strdup(env_var); - if (buf == NULL) - LIBOFFLOAD_ERROR(c_malloc); - char *str = buf; - bool device_set_finished = false; - int num_devices_specified = 0; - do { - char *dev_ptr = str; - int dev_len = strcspn(str, "[,"); - micLcpuMask* cpu_mask = 0; - if (str[dev_len] == '[') { - // CPU subset specified - cpu_mask = new micLcpuMask; - cpu_mask->reset(); - char *cpu_ptr = str + dev_len + 1; - do { - int64_t cnum; - bool cpu_set_finished = false; - int cpu_len = strcspn(cpu_ptr, ",-]"); - if (cpu_ptr[cpu_len] == ',' || cpu_ptr[cpu_len] == ']') { - // A single CPU specified - cpu_set_finished = cpu_ptr[cpu_len] == ']'; - cpu_ptr[cpu_len] = '\0'; - // Convert cpu string to an int - if (!__offload_parse_int_string(cpu_ptr, cnum)) { - LIBOFFLOAD_ERROR(c_mic_init7); - delete cpu_mask; - free(buf); - return 0; - } else { - OFFLOAD_DEBUG_TRACE(3, - "Single CPU %d selected\n", cnum); - cpu_mask->set(cnum); - } - cpu_ptr = cpu_ptr + cpu_len + 1; - if (cpu_set_finished) { - break; - } - } else if (cpu_ptr[cpu_len] == '-') { - int64_t range_start, range_end; - // A range of CPUs specified - cpu_ptr[cpu_len] = '\0'; - // Convert cpu string to an int - if (!__offload_parse_int_string(cpu_ptr, range_start)) { - LIBOFFLOAD_ERROR(c_mic_init8); - delete cpu_mask; - free(buf); - return 0; - } else { - OFFLOAD_DEBUG_TRACE(3, - "Start of CPU range specified as %d\n", - range_start); - cpu_ptr = cpu_ptr + cpu_len + 1; - cpu_len = strcspn(cpu_ptr, ",]"); - if (cpu_ptr[cpu_len] == ',' || - cpu_ptr[cpu_len] == ']') { - cpu_set_finished = cpu_ptr[cpu_len] == ']'; - cpu_ptr[cpu_len] = '\0'; - // Convert cpu string to an int - if (!__offload_parse_int_string( - cpu_ptr, range_end)) { - LIBOFFLOAD_ERROR(c_mic_init9); - delete cpu_mask; - free(buf); - return 0; - } else { - OFFLOAD_DEBUG_TRACE(3, - "End of CPU range specified as %d\n", - range_end); - if (range_end < range_start) { - LIBOFFLOAD_ERROR(c_mic_init10); - delete cpu_mask; - free(buf); - return 0; - } else { - for (int i=range_start; i<=range_end; i++) - { - OFFLOAD_DEBUG_TRACE(3, - "CPU %d selected as part of range\n", - i); - cpu_mask->set(i); - } - cpu_ptr = cpu_ptr + cpu_len + 1; - if (cpu_set_finished) { - break; - } - } - } - } else { - LIBOFFLOAD_ERROR(c_mic_init10); - delete cpu_mask; - free(buf); - return 0; - } - } - } else { - // Error: expected , or - or ] - LIBOFFLOAD_ERROR(c_mic_init11); - delete cpu_mask; - free(buf); - return 0; - } - } while (true); - // Point to next device specification - str = cpu_ptr; - if (*str == '\0') { - device_set_finished = true; - } else { - // Skip the comma after a device specification - str++; - } - } else if (str[dev_len] == ',') { - // CPU subset not specified - // Point to next device specification - str = str + dev_len + 1; - } else { - // No more device specifications - device_set_finished = true; - } - dev_ptr[dev_len] = '\0'; - // Convert device string to an int - int64_t num; - if (!__offload_parse_int_string(dev_ptr, num)) { - LIBOFFLOAD_ERROR(c_mic_init5); - delete cpu_mask; - free(buf); - return 0; - } - if (num < 0 || num >= num_devices) { - LIBOFFLOAD_ERROR(c_mic_init6, num); - delete cpu_mask; - free(buf); - return 0; - } - OFFLOAD_DEBUG_TRACE(3, "Offloadable MIC = %d\n", num); - // Save the specified physical device and cpu mask - device_cpu_list.push_back(make_pair(num, cpu_mask)); - num_devices_specified++; - - if (device_set_finished) { - break; - } - } while (true); - - free(buf); - return num_devices_specified; -} - -static void __offload_init_library_once(void) -{ - COIRESULT res; - uint32_t num_devices; - deviceLcpuList device_cpu_list; - prefix = report_get_message_str(c_report_host); - - // initialize trace - const char *env_var = getenv(htrace_envname); - if (env_var != 0 && *env_var != '\0') { - int64_t new_val; - if (__offload_parse_int_string(env_var, new_val)) { - console_enabled = new_val & 0x0f; - } - } - - OFFLOAD_DEBUG_TRACE(2, "---- Start of environment variable processing\n"); - env_var = getenv(offload_report_envname); - if (env_var != 0 && *env_var != '\0') { - OFFLOAD_DEBUG_TRACE(2, "---- %s=%s\n", - offload_report_envname, env_var); - int64_t env_val; - if (__offload_parse_int_string(env_var, env_val)) { - if (env_val == OFFLOAD_REPORT_1 || - env_val == OFFLOAD_REPORT_2 || - env_val == OFFLOAD_REPORT_3) { - offload_report_level = env_val; - OFFLOAD_DEBUG_TRACE(2, "Offload report level set to %d\n", - offload_report_level); - } - else { - LIBOFFLOAD_ERROR(c_invalid_env_report_value, - offload_report_envname); - } - } - else { - LIBOFFLOAD_ERROR(c_invalid_env_var_int_value, - offload_report_envname); - } - } - else if (!offload_report_level) { - env_var = getenv(timer_envname); - if (env_var != 0 && *env_var != '\0') { - OFFLOAD_DEBUG_TRACE(2, "---- %s=%s\n", timer_envname, env_var); - timer_enabled = atoi(env_var); - OFFLOAD_DEBUG_TRACE(2, "Timer enable flag set to %d\n", - timer_enabled); - } - } - - // initialize COI - if (!COI::init()) { - return; - } - - // Process OFFLOAD_NODES, specification of physical MICs available - env_var = getenv("OFFLOAD_NODES"); - if (env_var != 0 && *env_var != '\0') { - OFFLOAD_DEBUG_TRACE(2, "---- OFFLOAD_NODES=%s\n", env_var); - // Pass env var on to COI - char * new_env_var = - (char*) malloc(sizeof("COI_OFFLOAD_NODES=") + - strlen(env_var) + 1); - if (new_env_var == NULL) - LIBOFFLOAD_ERROR(c_malloc); - sprintf(new_env_var, "COI_OFFLOAD_NODES=%s", env_var); - putenv(new_env_var); - OFFLOAD_DEBUG_TRACE(2, "Setting COI_OFFLOAD_NODES = %s \n", getenv("COI_OFFLOAD_NODES")); - - // value is composed of comma separated physical device indexes - char *buf = strdup(env_var); - if (buf == NULL) - LIBOFFLOAD_ERROR(c_malloc); - char *str, *ptr; - int num_mics = 0; - for (str = strtok_r(buf, ",", &ptr); str != 0; - str = strtok_r(0, ",", &ptr)) { - // count this MIC - num_mics++; - } - OFFLOAD_DEBUG_TRACE(2, "Number of offloadable MICs = %d\n", num_mics); - free(buf); - } - else { - OFFLOAD_DEBUG_TRACE(2, "OFFLOAD_NODES is not set\n"); - } - - // get number of devices installed in the system - res = COI::EngineGetCount(COI_ISA_MIC, &num_devices); - if (res != COI_SUCCESS) { - return; - } - - if (num_devices > MIC_ENGINES_MAX) { - num_devices = MIC_ENGINES_MAX; - } - - // Determine devices & cpus that can be used for offloading - env_var = getenv("OFFLOAD_DEVICES"); - if (env_var != 0 && *env_var != '\0') { - OFFLOAD_DEBUG_TRACE(2, "---- OFFLOAD_DEVICES=%s\n", env_var); - if (strcasecmp(env_var, "none") != 0) { - mic_engines_total = - process_offload_devices( - env_var, num_devices, device_cpu_list); - if (mic_engines_total > 0) { - OFFLOAD_DEBUG_TRACE(2, "Valid value, %d device(s) specified\n", - mic_engines_total); - } - else { - OFFLOAD_DEBUG_TRACE(2, "Invalid value, will not offload\n"); - return; - } - } - else { - // No need to continue since no offload devices - return; - } - } - else { - OFFLOAD_DEBUG_TRACE(2, "OFFLOAD_DEVICES is not set\n"); - } - if (mic_engines_total == 0) { - // Fallback to using all available devices and all CPUs on each - OFFLOAD_DEBUG_TRACE(2, "Fallback to all devices\n"); - device_cpu_list.clear(); - mic_engines_total = 0; - for (int i = 0; i < num_devices; i++) { - COIENGINE engine; - res = COI::EngineGetHandle(COI_ISA_MIC, i, &engine); - if (res == COI_SUCCESS) { - device_cpu_list.push_back(make_pair(i, (micLcpuMask*)0)); - OFFLOAD_DEBUG_TRACE(2, "Device %d is available\n", i); - mic_engines_total++; - } - } - } - - // no need to continue if there are no devices to offload to - if (mic_engines_total <= 0) { - return; - } - - // Initialize indexes for available devices - mic_engines = new Engine[mic_engines_total]; - std::list<deviceLcpu>::iterator deviceIterator; - int l_idx = 0; - for (deviceIterator = device_cpu_list.begin(); - deviceIterator != device_cpu_list.end(); - deviceIterator++) - { - deviceLcpu device_mask_pair = *deviceIterator; - int device_num = device_mask_pair.first; - micLcpuMask *device_mask = device_mask_pair.second; - - mic_engines[l_idx].set_indexes(l_idx, device_num); - mic_engines[l_idx].set_cpu_mask(device_mask); - OFFLOAD_DEBUG_TRACE(2, - "Logical MIC%d => Physical MIC%d\n", l_idx, device_num); - if (device_mask != NULL) { - std::string cpu_string = - device_mask->to_string< - char, - std::string::traits_type, - std::string::allocator_type>(); - OFFLOAD_DEBUG_TRACE(2, " CPUs: %s\n", cpu_string.data()); - } - else { - OFFLOAD_DEBUG_TRACE(2, " CPUs: all\n"); - } - l_idx++; - } - - // Get DMA channel count to pass it to COI - env_var = getenv("OFFLOAD_DMA_CHANNEL_COUNT"); - if (env_var != 0 && *env_var != '\0') { - OFFLOAD_DEBUG_TRACE(2, "---- OFFLOAD_DMA_CHANNEL_COUNT=%s\n", env_var); - int64_t new_val; - if (__offload_parse_int_string(env_var, new_val)) { - mic_dma_channel_count = new_val; - OFFLOAD_DEBUG_TRACE(2, "Using %d DMA channels\n", - mic_dma_channel_count); - } - else { - LIBOFFLOAD_ERROR(c_invalid_env_var_value, - "OFFLOAD_DMA_CHANNEL_COUNT"); - } - } - else { - OFFLOAD_DEBUG_TRACE(2, "OFFLOAD_DMA_CHANNEL_COUNT is not set\n"); - } - - // Set COI_HOST_THREAD_AFFINITY if OFFLOAD_HOST_THREAD_AFFINITY is set. - // Use putenv instead of setenv as Windows has no setenv. - // Note: putenv requires its argument can't be freed or modified. - // So no free after call to putenv or elsewhere. - env_var = getenv("OFFLOAD_HOST_THREAD_AFFINITY"); - if (env_var != 0 && *env_var != '\0') { - OFFLOAD_DEBUG_TRACE(2, "---- OFFLOAD_HOST_THREAD_AFFINITY=%s\n", env_var); - char * new_env_var = - (char*) malloc(sizeof("COI_HOST_THREAD_AFFINITY=") + - strlen(env_var) + 1); - if (new_env_var == NULL) - LIBOFFLOAD_ERROR(c_malloc); - sprintf(new_env_var, "COI_HOST_THREAD_AFFINITY=%s", env_var); - putenv(new_env_var); - OFFLOAD_DEBUG_TRACE(2, "Setting COI_HOST_THREAD_AFFINITY = %s \n", - getenv("COI_HOST_THREAD_AFFINITY")); - } - else { - OFFLOAD_DEBUG_TRACE(2, "OFFLOAD_HOST_THREAD_AFFINITY is not set\n"); - } - - // library search path for KNC device binaries - env_var = getenv("MIC_LD_LIBRARY_PATH"); - if (env_var != 0) { - OFFLOAD_DEBUG_TRACE(2, "---- MIC_LD_LIBRARY_PATH=%s\n", env_var); - knc_library_path = strdup(env_var); - if (knc_library_path == NULL) - LIBOFFLOAD_ERROR(c_malloc); - OFFLOAD_DEBUG_TRACE(2, "KNC library path set to %s\n", knc_library_path); - } - else { - OFFLOAD_DEBUG_TRACE(2, "MIC_LD_LIBRARY_PATH is not set\n"); - } - - // library search path for KNL device binaries - env_var = getenv("LD_LIBRARY_PATH"); - if (env_var != 0) { - OFFLOAD_DEBUG_TRACE(2, "---- LD_LIBRARY_PATH=%s\n", env_var); - knl_library_path = strdup(env_var); - if (knl_library_path == NULL) - LIBOFFLOAD_ERROR(c_malloc); - OFFLOAD_DEBUG_TRACE(2, "KNL library path set to %s\n", knl_library_path); - } - else { - OFFLOAD_DEBUG_TRACE(2, "LD_LIBRARY_PATH is not set\n"); - } - - // memory size reserved for COI buffers - env_var = getenv("MIC_BUFFERSIZE"); - if (env_var != 0 && *env_var != '\0') { - OFFLOAD_DEBUG_TRACE(2, "---- MIC_BUFFERSIZE=%s\n", env_var); - uint64_t new_size; - if (__offload_parse_size_string(env_var, new_size)) { - mic_buffer_size = new_size; - OFFLOAD_DEBUG_TRACE(2, - "Reserved memory for COI buffers set to %lld bytes\n", - mic_buffer_size); - } - else { - LIBOFFLOAD_ERROR(c_invalid_env_var_value, "MIC_BUFFERSIZE"); - } - } - else { - OFFLOAD_DEBUG_TRACE(2, "MIC_BUFFERSIZE is not set\n"); - } - - // memory size reserved for 4K pages for COI buffers - env_var = getenv("MIC_4K_BUFFER_RESERVE_SIZE"); - if (env_var != 0 && *env_var != '\0') { - OFFLOAD_DEBUG_TRACE(2, "---- MIC_4K_BUFFER_RESERVE_SIZE=%s\n", env_var); - uint64_t new_size; - if (__offload_parse_size_string(env_var, new_size)) { - mic_4k_buffer_size = new_size; - OFFLOAD_DEBUG_TRACE(2, - "Reserved memory for 4K COI buffers set to %lld bytes\n", - mic_4k_buffer_size); - } - else { - LIBOFFLOAD_ERROR(c_invalid_env_var_value, "MIC_4K_BUFFER_RESERVE_SIZE"); - } - } - else { - OFFLOAD_DEBUG_TRACE(2, "MIC_4K_BUFFER_RESERVE_SIZE is not set\n"); - } - - // memory size reserved for 2M pages for COI buffers - env_var = getenv("MIC_2M_BUFFER_RESERVE_SIZE"); - if (env_var != 0 && *env_var != '\0') { - OFFLOAD_DEBUG_TRACE(2, "---- MIC_2M_BUFFER_RESERVE_SIZE=%s\n", env_var); - uint64_t new_size; - if (__offload_parse_size_string(env_var, new_size)) { - mic_2m_buffer_size = new_size; - OFFLOAD_DEBUG_TRACE(2, - "Reserved memory for 2M COI buffers set to %lld bytes\n", - mic_2m_buffer_size); - } - else { - LIBOFFLOAD_ERROR(c_invalid_env_var_value, - "MIC_2M_BUFFER_RESERVE_SIZE"); - } - } - else { - OFFLOAD_DEBUG_TRACE(2, "MIC_2M_BUFFER_RESERVE_SIZE is not set\n"); - } - - // determine stacksize for the pipeline on the device - env_var = getenv("MIC_STACKSIZE"); - if (env_var != 0 && *env_var != '\0') { - OFFLOAD_DEBUG_TRACE(2, "---- MIC_STACKSIZE=%s\n", env_var); - uint64_t new_size; - if (__offload_parse_size_string(env_var, new_size) && - (new_size >= 16384) && ((new_size & 4095) == 0)) { - mic_stack_size = new_size; - OFFLOAD_DEBUG_TRACE(2, "MIC stack size set to %lld bytes\n", - mic_stack_size); - } - else { - LIBOFFLOAD_ERROR(c_mic_init3); - } - } - else { - OFFLOAD_DEBUG_TRACE(2, "MIC_STACKSIZE is not set\n"); - } - - // proxy I/O - env_var = getenv("MIC_PROXY_IO"); - if (env_var != 0 && *env_var != '\0') { - OFFLOAD_DEBUG_TRACE(2, "---- MIC_PROXY_IO=%s\n", env_var); - int64_t new_val; - if (__offload_parse_int_string(env_var, new_val)) { - mic_proxy_io = new_val; - OFFLOAD_DEBUG_TRACE(2, "MIC proxy i/o set to %s\n", - mic_proxy_io); - } - else { - LIBOFFLOAD_ERROR(c_invalid_env_var_int_value, "MIC_PROXY_IO"); - } - } - else { - OFFLOAD_DEBUG_TRACE(2, "MIC_PROXY_IO is not set\n"); - } - - - env_var = getenv("MIC_PROXY_FS_ROOT"); - if (env_var != 0 && *env_var != '\0') { - OFFLOAD_DEBUG_TRACE(2, "---- MIC_PROXY_FS_ROOT=%s\n", env_var); - mic_proxy_fs_root = strdup(env_var); - if (mic_proxy_fs_root == NULL) - LIBOFFLOAD_ERROR(c_malloc); - OFFLOAD_DEBUG_TRACE(2, "MIC proxy fs root set to %s\n", - mic_proxy_fs_root); - } - else { - OFFLOAD_DEBUG_TRACE(2, "MIC_PROXY_FS_ROOT is not set\n"); - } - - // Prepare environment for the target process using the following - // rules - // - If MIC_ENV_PREFIX is set then any environment variable on the - // host which has that prefix are copied to the device without - // the prefix. - // All other host environment variables are ignored. - // - If MIC_ENV_PREFIX is not set or if MIC_ENV_PREFIX="" then host - // environment is duplicated. - env_var = getenv("MIC_ENV_PREFIX"); - if (env_var != 0 && *env_var != '\0') { - OFFLOAD_DEBUG_TRACE(2, "---- MIC_ENV_PREFIX=%s\n", env_var); - mic_env_vars.set_prefix(env_var); - - int len = strlen(env_var); - for (int i = 0; environ[i] != 0; i++) { - if (strncmp(environ[i], env_var, len) == 0 && - strncmp(environ[i], "MIC_LD_LIBRARY_PATH", 19) != 0 && - environ[i][len] != '=') { - mic_env_vars.analyze_env_var(environ[i]); - } - } - } - else { - OFFLOAD_DEBUG_TRACE(2, "MIC_ENV_PREFIX is not set\n"); - } - - // create key for thread data - if (thread_key_create(&mic_thread_key, Engine::destroy_thread_data)) { - LIBOFFLOAD_ERROR(c_mic_init4, errno); - return; - } - - // cpu frequency - cpu_frequency = COI::PerfGetCycleFrequency(); - - env_var = getenv(mic_use_2mb_buffers_envname); - if (env_var != 0 && *env_var != '\0') { - OFFLOAD_DEBUG_TRACE(2, "---- %s=%s\n", - mic_use_2mb_buffers_envname, env_var); - uint64_t new_size; - if (__offload_parse_size_string(env_var, new_size)) { - __offload_use_2mb_buffers = new_size; - OFFLOAD_DEBUG_TRACE(2, - "Threshold for use of 2M buffers set to %lld\n", - __offload_use_2mb_buffers); - } - else { - LIBOFFLOAD_ERROR(c_invalid_env_var_value, - mic_use_2mb_buffers_envname); - } - } - else { - OFFLOAD_DEBUG_TRACE(2, "%s is not set\n", mic_use_2mb_buffers_envname); - } - - env_var = getenv(mic_use_async_buffer_write_envname); - if (env_var != 0 && *env_var != '\0') { - OFFLOAD_DEBUG_TRACE(2, "---- %s=%s\n", - mic_use_async_buffer_write_envname, env_var); - uint64_t new_size; - if (__offload_parse_size_string(env_var, new_size)) { - __offload_use_async_buffer_write = new_size; - OFFLOAD_DEBUG_TRACE(2, - "Threshold for async buffer write set to %lld\n", - __offload_use_async_buffer_write); - } - } - else { - OFFLOAD_DEBUG_TRACE(2, "%s is not set\n", - mic_use_async_buffer_write_envname); - } - - env_var = getenv(mic_use_async_buffer_read_envname); - if (env_var != 0 && *env_var != '\0') { - OFFLOAD_DEBUG_TRACE(2, "---- %s=%s\n", - mic_use_async_buffer_read_envname, env_var); - uint64_t new_size; - if (__offload_parse_size_string(env_var, new_size)) { - __offload_use_async_buffer_read = new_size; - OFFLOAD_DEBUG_TRACE(2, - "Threshold for async buffer read set to %lld\n", - __offload_use_async_buffer_read); - } - } - else { - OFFLOAD_DEBUG_TRACE(2, "%s is not set\n", - mic_use_async_buffer_read_envname); - } - - // mic initialization type - env_var = getenv(offload_init_envname); - if (env_var != 0 && *env_var != '\0') { - OFFLOAD_DEBUG_TRACE(2, "---- %s=%s\n", - offload_init_envname, env_var); - if (strcmp(env_var, "on_offload") == 0) { - __offload_init_type = c_init_on_offload; - OFFLOAD_DEBUG_TRACE(2, - "A MIC device will be initialized " - "on first offload to that device\n"); - } - else if (strcmp(env_var, "on_offload_all") == 0) { - __offload_init_type = c_init_on_offload_all; - OFFLOAD_DEBUG_TRACE(2, - "All MIC devices will be initialized " - "on first offload to any device\n"); - } - else if (strcmp(env_var, "on_start") == 0) { - __offload_init_type = c_init_on_start; - OFFLOAD_DEBUG_TRACE(2, - "All MIC devices will be initialized " - "at program start\n"); - } - else { - LIBOFFLOAD_ERROR(c_invalid_env_var_value, offload_init_envname); - } - } - else { - OFFLOAD_DEBUG_TRACE(2, "%s is not set\n", offload_init_envname); - } - - // active wait - env_var = getenv(offload_active_wait_envname); - if (env_var != 0 && *env_var != '\0') { - OFFLOAD_DEBUG_TRACE(2, "---- %s=%s\n", - offload_active_wait_envname, env_var); - int64_t new_val; - if (__offload_parse_int_string(env_var, new_val)) { - __offload_active_wait = new_val; - OFFLOAD_DEBUG_TRACE(2, - "Flag to poll on event completion is set to %d\n", - __offload_active_wait); - } - else { - LIBOFFLOAD_ERROR(c_invalid_env_var_int_value, - offload_active_wait_envname); - } - } - else { - OFFLOAD_DEBUG_TRACE(2, "%s is not set\n", offload_active_wait_envname); - } - - // always wait - env_var = getenv(offload_always_wait_envname); - if (env_var != 0 && *env_var != '\0') { - OFFLOAD_DEBUG_TRACE(2, "---- %s=%s\n", - offload_always_wait_envname, env_var); - int64_t new_val; - if (__offload_parse_int_string(env_var, new_val)) { - __offload_always_wait = new_val; - OFFLOAD_DEBUG_TRACE(2, - "Flag to poll on event completion is set to %d\n", - __offload_active_wait); - } - else { - LIBOFFLOAD_ERROR(c_invalid_env_var_int_value, - offload_always_wait_envname); - } - } - else { - OFFLOAD_DEBUG_TRACE(2, "%s is not set\n", offload_always_wait_envname); - } - - // omp device num - env_var = getenv(omp_device_num_envname); - if (env_var != 0 && *env_var != '\0') { - OFFLOAD_DEBUG_TRACE(2, "---- %s=%s\n", - omp_device_num_envname, env_var); - int64_t new_val; - if (__offload_parse_int_string(env_var, new_val) && new_val >= 0) { - __omp_device_num = new_val; - OFFLOAD_DEBUG_TRACE(2, "OpenMP default device number is set to %d\n", - __omp_device_num); - } - else { - LIBOFFLOAD_ERROR(c_omp_invalid_device_num_env, - omp_device_num_envname); - } - } - else { - OFFLOAD_DEBUG_TRACE(2, "%s is not set\n", omp_device_num_envname); - } - - // parallel copy of offload_transfer - env_var = getenv(parallel_copy_envname); - if (env_var != 0 && *env_var != '\0') { - OFFLOAD_DEBUG_TRACE(2, "---- %s=%s\n", - parallel_copy_envname, env_var); - int64_t new_val; - if (__offload_parse_int_string(env_var, new_val) && new_val >= 0) { - __offload_parallel_copy = new_val; - OFFLOAD_DEBUG_TRACE(2, - "Flag for using async buffer copy is set to %d\n", - __offload_parallel_copy); - } - else { - LIBOFFLOAD_ERROR(c_invalid_env_var_value, - parallel_copy_envname); - } - } - else { - OFFLOAD_DEBUG_TRACE(2, "%s is not set\n", parallel_copy_envname); - } - - // use COI interface for noncontiguous arrays transfer - env_var = getenv(use_coi_noncontiguous_transfer_envname); - if (env_var != 0 && *env_var != '\0') { - OFFLOAD_DEBUG_TRACE(2, "---- %s=%s\n", - use_coi_noncontiguous_transfer_envname, env_var); - uint64_t new_size; - if (__offload_parse_size_string(env_var, new_size)) { - __offload_use_coi_noncontiguous_transfer = new_size; - OFFLOAD_DEBUG_TRACE(2, - "Flag for using new COI noncontiguous API is set to %d\n", - __offload_use_coi_noncontiguous_transfer); - } - else { - LIBOFFLOAD_ERROR(c_invalid_env_var_value, - use_coi_noncontiguous_transfer_envname); - } - } - else { - OFFLOAD_DEBUG_TRACE(2, "%s is not set\n", - use_coi_noncontiguous_transfer_envname); - } - - OFFLOAD_DEBUG_TRACE(2, "---- End of environment variable processing\n"); - - // init ORSL - ORSL::init(); -} - -extern int __offload_init_library(void) -{ - // do one time intialization - static OffloadOnceControl ctrl = OFFLOAD_ONCE_CONTROL_INIT; - __offload_run_once(&ctrl, __offload_init_library_once); - - // offload is available if COI is available and the number of devices > 0 - bool is_available = COI::is_available && (mic_engines_total > 0); - - // register pending libraries if there are any - if (is_available && __target_libs) { - mutex_locker_t locker(__target_libs_lock); - - for (TargetImageList::iterator it = __target_libs_list.begin(); - it != __target_libs_list.end(); it++) { - // Register library in COI - COI::ProcessRegisterLibraries(1, &it->data, &it->size, - &it->origin, &it->offset); - - // add lib to all engines - for (int i = 0; i < mic_engines_total; i++) { - mic_engines[i].add_lib(*it); - } - } - - __target_libs = false; - __target_libs_list.clear(); - } - - return is_available; -} - -extern "C" bool __offload_target_image_is_executable(const void *target_image) -{ - const struct Image *image = static_cast<const struct Image*>(target_image); - - // decode image - const char *name = image->data; - const void *data = image->data + strlen(image->data) + 1; - - // determine image type - const Elf64_Ehdr *hdr = static_cast<const Elf64_Ehdr*>(data); - return (hdr->e_type == ET_EXEC); -} - -extern "C" bool __offload_register_image(const void *target_image) -{ - const struct Image *image = static_cast<const struct Image*>(target_image); - const void *data = image->data + strlen(image->data) + 1; - uint64_t size = image->size; - uint64_t offset = 0; - - // decode image - const char *fat_name = image->data; - char *mic_name = (char *) malloc(strlen(image->data) + 1); - char *host_name = (char *) malloc(strlen(image->data)); - int i; - - if ((mic_name == NULL) || (host_name == NULL)) - LIBOFFLOAD_ERROR(c_malloc); - - // The origin name is the name of the file on the host - // this is used by Vtune, since it is a fat binary we - // use the host file name of the fat binary. - // Driver prepends the host file name ending with "?" - // to the image->data name so need to extract the string - // name format: <mic_name>?<origin> - - // Get <mic_name> - i = 0; - while ((*fat_name != '\0') && (*fat_name != '?')) { - mic_name[i] = *fat_name; - fat_name++; - i++; - } - - // Remove the host file name by inserting end of string marker - mic_name[i] = '\0'; - - // Get <host_name> - if (*fat_name == '?') { - // The string following "?" is the name of the host file name. - fat_name++; - i = 0; - while (*fat_name != '\0') { - host_name[i] = *fat_name; - fat_name++; - i++; - } - host_name[i] = '\0'; - } - else { - // Windows current does not have host name - free(host_name); - host_name = 0; - } - - // our actions depend on the image type - const Elf64_Ehdr *hdr = static_cast<const Elf64_Ehdr*>(data); - switch (hdr->e_type) { - case ET_EXEC: - __current_image_is_dll = false; - // Each offload application is supposed to have only one target - // image representing target executable. - // No thread synchronization is required here as the initialization - // code is always executed in a single thread. - if (__target_exe != 0) { - LIBOFFLOAD_ERROR(c_multiple_target_exes); - exit(1); - } - __target_exe = new TargetImage(mic_name, data, size, host_name, offset); - - // Registration code for execs is always called from the context - // of main and thus we can safely call any function here, - // including LoadLibrary API on windows. This is the place where - // we do the offload library initialization. - if (__offload_init_library()) { - // initialize engine if init_type is on_start - if (__offload_init_type == c_init_on_start) { - for (int i = 0; i < mic_engines_total; i++) { - mic_engines[i].init(); - } - } - } - return mic_engines_total > 0; - - case ET_DYN: - { - char * fullname = NULL; - __current_image_is_dll = true; - // We add the library to a list of pending libraries - __target_libs_lock.lock(); - __target_libs = true; - __target_libs_list.push_back( - TargetImage(mic_name, data, size, fullname, offset)); - __target_libs_lock.unlock(); - // If __target_exe is set, then main has started running - // If not main, then we can't do anything useful here - // because this registration code is called from DllMain - // context (on windows). - if (__target_exe != 0) { - // There is no need to delay loading the library - if (!__offload_init_library()) { - // Couldn't validate library as a fat offload library - LIBOFFLOAD_ERROR(c_unknown_binary_type); - exit(1); - } - } - return true; - } - - default: - // something is definitely wrong, issue an error and exit - LIBOFFLOAD_ERROR(c_unknown_binary_type); - exit(1); - } -} - -// When dlopen is used dlclose may happen after the COI process -// is destroyed. In which case images cannot be unloaded and should -// be skipped. So track if coi has been unloaded. -static bool coi_may_have_been_unloaded = false; - -extern "C" void __offload_unregister_image(const void *target_image) -{ - // Target image is packed as follows: - // 8 bytes - size of the target binary - // null-terminated string - binary name - // <size> bytes - binary contents - const struct Image { - int64_t size; - char data[]; - } *image = static_cast<const struct Image*>(target_image); - - // decode image - const char *name = image->data; - const void *data = image->data + strlen(image->data) + 1; - - // our actions depend on the image type - const Elf64_Ehdr *hdr = static_cast<const Elf64_Ehdr*>(data); - if (hdr->e_type == ET_EXEC) { - // We are executing exec's desctructors. - // It is time to do a library cleanup. - if (timer_enabled) { - Offload_Timer_Print(); - } - - coi_may_have_been_unloaded = true; - - // Do not unload the MYO library if it loaded in dll. - if (!__myo_init_in_so) - { -#ifdef MYO_SUPPORT - __offload_myoFini(); -#endif // MYO_SUPPORT - - __offload_fini_library(); - } - } - else if ((hdr->e_type == ET_DYN) && !coi_may_have_been_unloaded) { - for (int i = 0; i < mic_engines_total; i++) { - mic_engines[i].unload_library(data, name); - } - - } -} - -extern "C" void __offload_register_task_callback(void (*cb)(void *)) -{ - task_completion_callback = cb; -} - -// Runtime trace interface for user programs - -void __offload_console_trace(int level) -{ - console_enabled = level; -} - -// User-visible offload API - -int _Offload_number_of_devices(void) -{ - __offload_init_library(); - return mic_engines_total; -} - -int _Offload_get_device_number(void) -{ - return -1; -} - -int _Offload_get_physical_device_number(void) -{ - return -1; -} - -int _Offload_signaled(int index, void *signal) -{ - __offload_init_library(); - - // check index value - if (index < 0) { - LIBOFFLOAD_ERROR(c_offload_signaled1, index); - LIBOFFLOAD_ABORT; - } - - index %= mic_engines_total; - - // find associated async task - OffloadDescriptor *task = - mic_engines[index].find_signal(signal, false); - if (task == 0) { - LIBOFFLOAD_ERROR(c_offload_signaled2, signal); - LIBOFFLOAD_ABORT; - } - // if signal is removed by wait completing - else if (task == SIGNAL_HAS_COMPLETED) { - return (true); - } - return task->is_signaled(); -} - -void _Offload_report(int val) -{ - if (val == OFFLOAD_REPORT_ON || - val == OFFLOAD_REPORT_OFF) { - offload_report_enabled = val; - } -} - -int _Offload_find_associated_mic_memory( - int target, - const void* cpu_addr, - void** cpu_base_addr, - uint64_t* buf_length, - void** mic_addr, - uint64_t* mic_buf_start_offset, - int* is_static -) -{ - __offload_init_library(); - - // check target value - if (target < 0) { - LIBOFFLOAD_ERROR(c_offload_signaled1, target); - LIBOFFLOAD_ABORT; - } - target %= mic_engines_total; - - // find existing association in pointer table - PtrData* ptr_data = mic_engines[target].find_ptr_data(cpu_addr); - if (ptr_data == 0) { - OFFLOAD_TRACE(3, "Association does not exist\n"); - return 0; - } - - OFFLOAD_TRACE(3, "Found association: base %p, length %lld, is_static %d\n", - ptr_data->cpu_addr.start(), ptr_data->cpu_addr.length(), - ptr_data->is_static); - - if (ptr_data->mic_buf != 0 && ptr_data->mic_addr == 0) { - COIRESULT res = COI::BufferGetSinkAddress(ptr_data->mic_buf, - &ptr_data->mic_addr); - if (res != COI_SUCCESS) { - return 0; - } - } - *cpu_base_addr = const_cast<void *>(ptr_data->cpu_addr.start()); - *buf_length = ptr_data->cpu_addr.length() - ptr_data->alloc_disp; - *mic_addr = (void *)(ptr_data->mic_addr + ptr_data->mic_offset); - *mic_buf_start_offset = ptr_data->alloc_disp; - *is_static = ptr_data->is_static; - return ptr_data->is_static ? 1 : ptr_data->get_reference(); -} - -_Offload_stream _Offload_stream_create( - int device, // MIC device number - int number_of_cpus // Cores allocated to the stream - ) -{ - __offload_init_library(); - - // check target value - if (device < 0) { - LIBOFFLOAD_ERROR(c_offload_signaled1, device); - LIBOFFLOAD_ABORT; - } - device %= mic_engines_total; - - // Create new stream and get its handle - _Offload_stream handle = Stream::add_stream(device, number_of_cpus); - if (handle == 0) { - OFFLOAD_TRACE(3, "Can't create stream\n"); - return 0; - } - - // create pipeline associated with the new stream - mic_engines[device].get_pipeline(handle); - - return(handle); -} - -int _Offload_stream_destroy( - int device, // MIC device number - _Offload_stream handle // stream to destroy - ) -{ - if (Stream::get_streams_count() == 0) { - LIBOFFLOAD_ERROR(c_offload_streams_are_absent); - LIBOFFLOAD_ABORT; - } - // check target value - if (device < 0) { - LIBOFFLOAD_ERROR(c_offload_signaled1, device); - LIBOFFLOAD_ABORT; - } - device %= mic_engines_total; - - mic_engines[device].stream_destroy(handle); - - return(true); -} - -int _Offload_stream_delete( - _Offload_stream handle // stream to destroy - ) -{ - int device; // MIC device number - Stream * stream; - - if (Stream::get_streams_count() == 0) { - LIBOFFLOAD_ERROR(c_offload_streams_are_absent); - LIBOFFLOAD_ABORT; - } - - stream = Stream::find_stream(handle, false); - // the stream was not created or was destroyed - if (!stream) { - LIBOFFLOAD_ERROR(c_offload_no_stream, device); - LIBOFFLOAD_ABORT; - } - - device = stream->get_device(); - - mic_engines[device].stream_destroy(handle); - - return(true); -} - -int _Offload_stream_completed(int device, _Offload_stream handler) -{ - if (Stream::get_streams_count() == 0) { - LIBOFFLOAD_ERROR(c_offload_streams_are_absent); - LIBOFFLOAD_ABORT; - } - // check device index value - if (device < -1) { - LIBOFFLOAD_ERROR(c_offload_signaled1, device); - LIBOFFLOAD_ABORT; - } - else if (device > -1) { - device %= mic_engines_total; - } - // get stream - Stream * stream; - - if (handler != 0) { - stream = Stream::find_stream(handler, false); - - // the stream was not created or was destroyed - if (!stream) { - LIBOFFLOAD_ERROR(c_offload_no_stream, device); - LIBOFFLOAD_ABORT; - } - - if (device != stream->get_device()) { - LIBOFFLOAD_ERROR(c_offload_device_doesnt_match_to_stream, - stream->get_device()); - LIBOFFLOAD_ABORT; - } - // find associated async task - OffloadDescriptor *task = stream->get_last_offload(); - - // offload was completed by offload_wait pragma or wait clause - if (task == 0) { - return(true); - } - return task->is_signaled(); - } - // zero handler is for all streams at the device - else { - StreamMap stream_map = Stream::all_streams; - for (StreamMap::iterator it = stream_map.begin(); - it != stream_map.end(); it++) { - Stream * stream = it->second; - if (device != -1 && device != stream->get_device()) { - continue; - } - // find associated async task - OffloadDescriptor *task = stream->get_last_offload(); - - // offload was completed by offload_wait pragma or wait clause - if (task == 0) { - continue; - } - // if even one stream is not completed result is false - if (!task->is_signaled()) { - return false; - } - } - // no uncompleted streams - return true; - } -} - -int _Offload_stream_is_empty(_Offload_stream handle) -{ - int device; - - if (Stream::get_streams_count() == 0) { - LIBOFFLOAD_ERROR(c_offload_streams_are_absent); - LIBOFFLOAD_ABORT; - } - if (handle != 0) { - Stream * stream = Stream::find_stream(handle, false); - - // the stream was not created or was destroyed - if (!stream) { - LIBOFFLOAD_ERROR(c_offload_no_stream, device); - LIBOFFLOAD_ABORT; - } - device = stream->get_device(); - } - else { - device = -1; - } - // Use 0 for device index as _Offload_stream_completed - // ignores this value while defining streams completion - return _Offload_stream_completed(device, handle); -} - -int _Offload_device_streams_completed(int device) -{ - if (Stream::get_streams_count() == 0) { - LIBOFFLOAD_ERROR(c_offload_streams_are_absent); - LIBOFFLOAD_ABORT; - } - // check index value - if (device < -1) { - LIBOFFLOAD_ERROR(c_offload_signaled1, device); - LIBOFFLOAD_ABORT; - } - else if (device > -1) { - device %= mic_engines_total; - } - - StreamMap stream_map = Stream::all_streams; - for (StreamMap::iterator it = stream_map.begin(); - it != stream_map.end(); it++) - { - Stream * stream = it->second; - - if (device != -1 && device != stream->get_device()) { - continue; - } - // find associated async task - OffloadDescriptor *task = stream->get_last_offload(); - - // offload was completed by offload_wait pragma or wait clause - if (task == 0) { - continue; - } - // if even one stream is not completed result is false - if (!task->is_signaled()) { - return false; - } - } - // no uncompleted streams - return true; -} - -// IDB support -int __dbg_is_attached = 0; -int __dbg_target_id = -1; -pid_t __dbg_target_so_pid = -1; -char __dbg_target_exe_name[MAX_TARGET_NAME] = {0}; -const int __dbg_api_major_version = 1; -const int __dbg_api_minor_version = 0; - -void __dbg_target_so_loaded() -{ -} -void __dbg_target_so_unloaded() -{ -} diff --git a/liboffloadmic/runtime/offload_host.h b/liboffloadmic/runtime/offload_host.h deleted file mode 100644 index 4f1ef13..0000000 --- a/liboffloadmic/runtime/offload_host.h +++ /dev/null @@ -1,541 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/*! \file - \brief The parts of the runtime library used only on the host -*/ - -#ifndef OFFLOAD_HOST_H_INCLUDED -#define OFFLOAD_HOST_H_INCLUDED - -#ifndef TARGET_WINNT -#include <unistd.h> -#endif // TARGET_WINNT -#include "offload_common.h" -#include "offload_util.h" -#include "offload_engine.h" -#include "offload_env.h" -#include "offload_orsl.h" -#include "coi/coi_client.h" - -// MIC engines. -DLL_LOCAL extern Engine* mic_engines; -DLL_LOCAL extern uint32_t mic_engines_total; - -// DMA channel count used by COI and set via -// OFFLOAD_DMA_CHANNEL_COUNT environment variable -DLL_LOCAL extern uint32_t mic_dma_channel_count; - -//! The target image is packed as follows. -/*! 1. 8 bytes containing the size of the target binary */ -/*! 2. a null-terminated string which is the binary name */ -/*! 3. <size> number of bytes that are the contents of the image */ -/*! The address of symbol __offload_target_image - is the address of this structure. */ -struct Image { - int64_t size; //!< Size in bytes of the target binary name and contents - char data[]; //!< The name and contents of the target image -}; - -// The offload descriptor. -class OffloadDescriptor -{ -public: - enum OmpAsyncLastEventType { - c_last_not, // not last event - c_last_write, // the last event that is write - c_last_read, // the last event that is read - c_last_runfunc // the last event that is runfunction - }; - - OffloadDescriptor( - int index, - _Offload_status *status, - bool is_mandatory, - bool is_openmp, - OffloadHostTimerData * timer_data - ) : - m_device(mic_engines[index == -1 ? 0 : index % mic_engines_total]), - m_is_mandatory(is_mandatory), - m_is_openmp(is_openmp), - m_inout_buf(0), - m_func_desc(0), - m_func_desc_size(0), - m_num_in_dependencies(0), - m_p_in_dependencies(0), - m_in_deps(0), - m_in_deps_total(0), - m_in_deps_allocated(0), - m_out_deps(0), - m_out_deps_total(0), - m_out_deps_allocated(0), - m_vars(0), - m_vars_extra(0), - m_status(status), - m_timer_data(timer_data), - m_out_with_preallocated(false), - m_preallocated_alloc(false), - m_traceback_called(false), - m_stream(-1), - m_signal(0), - m_has_signal(0), - m_omp_async_last_event_type(c_last_not) - { - m_wait_all_devices = index == -1; - } - - ~OffloadDescriptor() - { - if (m_in_deps != 0) { - free(m_in_deps); - } - if (m_out_deps != 0) { - free(m_out_deps); - } - if (m_func_desc != 0) { - free(m_func_desc); - } - if (m_vars != 0) { - free(m_vars); - free(m_vars_extra); - } - } - - bool offload(const char *name, bool is_empty, - VarDesc *vars, VarDesc2 *vars2, int vars_total, - const void **waits, int num_waits, const void **signal, - int entry_id, const void *stack_addr, - OffloadFlags offload_flags); - - bool offload_finish(bool is_traceback); - - bool is_signaled(); - - OffloadHostTimerData* get_timer_data() const { - return m_timer_data; - } - - void set_stream(_Offload_stream stream) { - m_stream = stream; - } - - _Offload_stream get_stream() { - return(m_stream); - } - - Engine& get_device() { - return m_device; - } - - void* get_signal() { - return(m_signal); - } - - void set_signal(const void* signal) { - m_has_signal = 1; - m_signal = const_cast<void*>(signal); - } - - void cleanup(); - - uint32_t m_event_count; - bool m_has_signal; - -private: - bool offload_wrap(const char *name, bool is_empty, - VarDesc *vars, VarDesc2 *vars2, int vars_total, - const void **waits, int num_waits, const void **signal, - int entry_id, const void *stack_addr, - OffloadFlags offload_flags); - bool wait_dependencies(const void **waits, int num_waits, - _Offload_stream stream); - bool setup_descriptors(VarDesc *vars, VarDesc2 *vars2, int vars_total, - int entry_id, const void *stack_addr); - bool setup_misc_data(const char *name); - bool send_pointer_data(bool is_async, void* info); - bool send_noncontiguous_pointer_data( - int i, - PtrData* src_buf, - PtrData* dst_buf, - COIEVENT *event, - uint64_t &sent_data, - uint32_t in_deps_amount, - COIEVENT *in_deps - ); - bool receive_noncontiguous_pointer_data( - int i, - COIBUFFER dst_buf, - COIEVENT *event, - uint64_t &received_data, - uint32_t in_deps_amount, - COIEVENT *in_deps - ); - - bool gather_copyin_data(); - - bool compute(void *); - - bool receive_pointer_data(bool is_async, bool first_run, void * info); - bool scatter_copyout_data(); - - bool find_ptr_data(PtrData* &ptr_data, void *base, int64_t disp, - int64_t length, bool is_targptr, - bool error_does_not_exist = true); - - void find_device_ptr( int64_t* &device_ptr, - void *host_ptr); - - bool alloc_ptr_data(PtrData* &ptr_data, void *base, int64_t disp, - int64_t length, int64_t alloc_disp, int align, - bool is_targptr, bool is_prealloc, bool pin); - bool create_preallocated_buffer(PtrData* ptr_data, void *base); - bool init_static_ptr_data(PtrData *ptr_data); - bool init_mic_address(PtrData *ptr_data); - bool offload_stack_memory_manager( - const void * stack_begin, - int routine_id, - int buf_size, - int align, - bool thread_specific_function_locals, - bool *is_new); - char *get_this_threads_cpu_stack_addr( - const void * stack_begin, - int routine_id, - bool thread_specific_function_locals); - PtrData *get_this_threads_mic_stack_addr( - const void * stack_begin, - int routine_id, - bool thread_specific_function_locals); - bool nullify_target_stack(COIBUFFER targ_buf, uint64_t size); - - bool gen_var_descs_for_pointer_array(int i); - - void get_stream_in_dependencies(uint32_t &in_deps_amount, - COIEVENT* &in_deps); - - void report_coi_error(error_types msg, COIRESULT res); - _Offload_result translate_coi_error(COIRESULT res) const; - - void setup_omp_async_info(); - - void setup_use_device_ptr(int i); - - void register_event_call_back(void (*)( - COIEVENT, - const COIRESULT, - const void*), - const COIEVENT *event, - const void *info); - - void register_omp_event_call_back(const COIEVENT *event, const void *info); - -private: - typedef std::list<COIBUFFER> BufferList; - - // extra data associated with each variable descriptor - struct VarExtra { - PtrData* src_data; - PtrData* dst_data; - AutoData* auto_data; - int64_t cpu_disp; - int64_t cpu_offset; - void *alloc; - union { - CeanReadRanges *read_rng_src; - NonContigDesc *noncont_desc; - }; - CeanReadRanges *read_rng_dst; - int64_t ptr_arr_offset; - bool is_arr_ptr_el; - OmpAsyncLastEventType omp_last_event_type; - int64_t pointer_offset; - uint16_t type_src; - uint16_t type_dst; - }; - - template<typename T> class ReadArrElements { - public: - ReadArrElements(): - ranges(NULL), - el_size(sizeof(T)), - offset(0), - count(0), - is_empty(true), - base(NULL) - {} - - bool read_next(bool flag) - { - if (flag != 0) { - if (is_empty) { - if (ranges) { - if (!get_next_range(ranges, &offset)) { - // ranges are over - return false; - } - } - // all contiguous elements are over - else if (count != 0) { - return false; - } - - length_cur = size; - } - else { - offset += el_size; - } - val = (T)get_el_value(base, offset, el_size); - length_cur -= el_size; - count++; - is_empty = length_cur == 0; - } - return true; - } - public: - CeanReadRanges * ranges; - T val; - int el_size; - int64_t size, - offset, - length_cur; - bool is_empty; - int count; - char *base; - }; - - // ptr_data for persistent auto objects - PtrData* m_stack_ptr_data; - PtrDataList m_destroy_stack; - - // Engine - Engine& m_device; - - // true for offload_wait target(mic) stream(0) - bool m_wait_all_devices; - - // if true offload is mandatory - bool m_is_mandatory; - - // if true offload has openmp origin - const bool m_is_openmp; - - // The Marshaller for the inputs of the offloaded region. - Marshaller m_in; - - // The Marshaller for the outputs of the offloaded region. - Marshaller m_out; - - // List of buffers that are passed to dispatch call - BufferList m_compute_buffers; - - // List of buffers that need to be destroyed at the end of offload - BufferList m_destroy_buffers; - - // Variable descriptors - VarDesc* m_vars; - VarExtra* m_vars_extra; - int m_vars_total; - - // Pointer to a user-specified status variable - _Offload_status *m_status; - - // Function descriptor - FunctionDescriptor* m_func_desc; - uint32_t m_func_desc_size; - - // Buffer for transferring copyin/copyout data - COIBUFFER m_inout_buf; - - - // Dependencies - COIEVENT *m_in_deps; - uint32_t m_in_deps_total; - uint32_t m_in_deps_allocated; - COIEVENT *m_out_deps; - uint32_t m_out_deps_total; - uint32_t m_out_deps_allocated; - - // 2 variables defines input dependencies for current COI API. - // The calls to routines as BufferWrite/PipelineRunFunction/BufferRead - // is supposed to have input dependencies. - // 2 variables below defines the number and vector of dependencies - // in every current moment of offload. - // So any phase of offload can use its values as input dependencies - // for the COI API that the phase calls. - // It means that all phases (of Write, RunFunction,Read) must keep - // the variables correct to be used by following phase. - // If some consequent offloads are connected (i.e. by the same stream) - // the final 2 variables of the offload is used as initial inputs - // for the next offload. - uint32_t m_num_in_dependencies; - COIEVENT *m_p_in_dependencies; - - // Stream - _Offload_stream m_stream; - - // Signal - void* m_signal; - - // Timer data - OffloadHostTimerData *m_timer_data; - - // copyin/copyout data length - uint64_t m_in_datalen; - uint64_t m_out_datalen; - - // a boolean value calculated in setup_descriptors. If true we need to do - // a run function on the target. Otherwise it may be optimized away. - bool m_need_runfunction; - - // initialized value of m_need_runfunction; - // is used to recognize offload_transfer - bool m_initial_need_runfunction; - - // a Boolean value set to true when OUT clauses with preallocated targetptr - // is encountered to indicate that call receive_pointer_data needs to be - // invoked again after call to scatter_copyout_data. - bool m_out_with_preallocated; - - // a Boolean value set to true if an alloc_if(1) is used with preallocated - // targetptr to indicate the need to scatter_copyout_data even for - // async offload - bool m_preallocated_alloc; - - // a Boolean value set to true if traceback routine is called - bool m_traceback_called; - - OmpAsyncLastEventType m_omp_async_last_event_type; -}; - -// Initialization types for MIC -enum OffloadInitType { - c_init_on_start, // all devices before entering main - c_init_on_offload, // single device before starting the first offload - c_init_on_offload_all // all devices before starting the first offload -}; - -// Determines if MIC code is an executable or a shared library -extern "C" bool __offload_target_image_is_executable(const void *target_image); - -// Initializes library and registers specified offload image. -extern "C" bool __offload_register_image(const void* image); -extern "C" void __offload_unregister_image(const void* image); - -// Registers asynchronous task completion callback -extern "C" void __offload_register_task_callback(void (*cb)(void *)); - -// Initializes offload runtime library. -DLL_LOCAL extern int __offload_init_library(void); - -// thread data for associating pipelines with threads -DLL_LOCAL extern pthread_key_t mic_thread_key; - -// location of offload_main executable -// To be used if the main application has no offload and is not built -// with -offload but dynamic library linked in has offload pragma -DLL_LOCAL extern char* mic_device_main; - -// Environment variables for devices -DLL_LOCAL extern MicEnvVar mic_env_vars; - -// CPU frequency -DLL_LOCAL extern uint64_t cpu_frequency; - -// LD_LIBRARY_PATH for KNC libraries -DLL_LOCAL extern char* knc_library_path; - -// LD_LIBRARY_PATH for KNL libraries -DLL_LOCAL extern char* knl_library_path; - -// stack size for target -DLL_LOCAL extern uint32_t mic_stack_size; - -// Preallocated memory size for buffers on MIC -DLL_LOCAL extern uint64_t mic_buffer_size; - -// Preallocated 4K page memory size for buffers on MIC -DLL_LOCAL extern uint64_t mic_4k_buffer_size; - -// Preallocated 2M page memory size for buffers on MIC -DLL_LOCAL extern uint64_t mic_2m_buffer_size; - -// Setting controlling inout proxy -DLL_LOCAL extern bool mic_proxy_io; -DLL_LOCAL extern char* mic_proxy_fs_root; - -// Threshold for creating buffers with large pages -DLL_LOCAL extern uint64_t __offload_use_2mb_buffers; - -// offload initialization type -DLL_LOCAL extern OffloadInitType __offload_init_type; - -// Device number to offload to when device is not explicitly specified. -DLL_LOCAL extern int __omp_device_num; - -// target executable -DLL_LOCAL extern TargetImage* __target_exe; - -// is true if last loaded image is dll -DLL_LOCAL extern bool __current_image_is_dll; -// is true if myo library is loaded when dll is loaded -DLL_LOCAL extern bool __myo_init_in_so; - -// IDB support - -// Called by the offload runtime after initialization of offload infrastructure -// has been completed. -extern "C" void __dbg_target_so_loaded(); - -// Called by the offload runtime when the offload infrastructure is about to be -// shut down, currently at application exit. -extern "C" void __dbg_target_so_unloaded(); - -// Null-terminated string containing path to the process image of the hosting -// application (offload_main) -#define MAX_TARGET_NAME 512 -extern "C" char __dbg_target_exe_name[MAX_TARGET_NAME]; - -// Integer specifying the process id -extern "C" pid_t __dbg_target_so_pid; - -// Integer specifying the 0-based device number -extern "C" int __dbg_target_id; - -// Set to non-zero by the host-side debugger to enable offload debugging -// support -extern "C" int __dbg_is_attached; - -// Major version of the debugger support API -extern "C" const int __dbg_api_major_version; - -// Minor version of the debugger support API -extern "C" const int __dbg_api_minor_version; - -#endif // OFFLOAD_HOST_H_INCLUDED diff --git a/liboffloadmic/runtime/offload_iterator.h b/liboffloadmic/runtime/offload_iterator.h deleted file mode 100644 index baf25af..0000000 --- a/liboffloadmic/runtime/offload_iterator.h +++ /dev/null @@ -1,103 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/*! \file - \brief Iterator of Variable tables list used by the runtime library -*/ - -#ifndef OFFLOAD_ITERATOR_H_INCLUDED -#define OFFLOAD_ITERATOR_H_INCLUDED - -#include <iterator> -#include "offload_table.h" - -// The following class is for iteration over var table. -// It was extracted and moved to this offload_iterator.h file from offload_table.h -// to solve the problem with compiling with VS 2010. The problem was in incompatibility -// of STL objects in VS 2010 with ones in later VS versions. - -// var table list iterator -class Iterator : public std::iterator<std::input_iterator_tag, - VarTable::Entry> { - public: - Iterator() : m_node(0), m_entry(0) {} - - explicit Iterator(TableList<VarTable>::Node *node) { - new_node(node); - } - - Iterator& operator++() { - if (m_entry != 0) { - m_entry++; - while (m_entry->name == 0) { - m_entry++; - } - if (m_entry->name == reinterpret_cast<const char*>(-1)) { - new_node(m_node->next); - } - } - return *this; - } - - bool operator==(const Iterator &other) const { - return m_entry == other.m_entry; - } - - bool operator!=(const Iterator &other) const { - return m_entry != other.m_entry; - } - - const VarTable::Entry* operator*() const { - return m_entry; - } - - private: - void new_node(TableList<VarTable>::Node *node) { - m_node = node; - m_entry = 0; - while (m_node != 0) { - m_entry = m_node->table.entries; - while (m_entry->name == 0) { - m_entry++; - } - if (m_entry->name != reinterpret_cast<const char*>(-1)) { - break; - } - m_node = m_node->next; - m_entry = 0; - } - } - - private: - TableList<VarTable>::Node *m_node; - const VarTable::Entry *m_entry; -}; - -#endif // OFFLOAD_ITERATOR_H_INCLUDED diff --git a/liboffloadmic/runtime/offload_omp_host.cpp b/liboffloadmic/runtime/offload_omp_host.cpp deleted file mode 100644 index 0439fec..0000000 --- a/liboffloadmic/runtime/offload_omp_host.cpp +++ /dev/null @@ -1,1267 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#include <omp.h> -//#include <stdlib.h> -//#include "offload.h" -#include "compiler_if_host.h" - - -// OpenMP API - -void omp_set_default_device(int num) __GOMP_NOTHROW -{ - if (num >= 0) { - __omp_device_num = num; - } -} - -int omp_get_default_device(void) __GOMP_NOTHROW -{ - return __omp_device_num; -} - -int omp_get_num_devices() __GOMP_NOTHROW -{ - __offload_init_library(); - return mic_engines_total; -} - -// OpenMP 4.5 APIs - -// COI supports 3-dim multiD transfers -#define MAX_ARRAY_RANK 3 - -int omp_get_initial_device( - void -) __GOMP_NOTHROW -{ - return -1; -} - -void* omp_target_alloc( - size_t size, - int device_num -) __GOMP_NOTHROW -{ - __offload_init_library(); - - OFFLOAD_TRACE(2, "omp_target_alloc(%lld, %d)\n", size, device_num); - - if (device_num < -1) { - LIBOFFLOAD_ERROR(c_invalid_device_number); - exit(1); - } - - void* result = 0; - - // malloc on CPU - if (device_num == -1) { - // We do not check for malloc returning NULL because the - // specification of this API includes the possibility of failure. - // The user will check the returned result - result = malloc(size); - return result; - } - - OFFLOAD ofld = OFFLOAD_TARGET_ACQUIRE( - TARGET_MIC, device_num, 0, NULL, __func__, 0); - if (ofld != 0) { - VarDesc vars[2] = {0}; - - vars[0].type.src = c_data; - vars[0].type.dst = c_data; - vars[0].direction.bits = c_parameter_in; - vars[0].size = sizeof(size); - vars[0].count = 1; - vars[0].ptr = &size; - - vars[1].type.src = c_data; - vars[1].type.dst = c_data; - vars[1].direction.bits = c_parameter_out; - vars[1].size = sizeof(result); - vars[1].count = 1; - vars[1].ptr = &result; - - OFFLOAD_OFFLOAD(ofld, "omp_target_alloc_target", - 0, 2, vars, NULL, 0, 0, 0); - } - return result; -} - -void omp_target_free( - void *device_ptr, - int device_num -) __GOMP_NOTHROW -{ - __offload_init_library(); - - OFFLOAD_TRACE(2, "omp_target_free(%p, %d)\n", device_ptr, device_num); - - if (device_num < -1) { - LIBOFFLOAD_ERROR(c_invalid_device_number); - exit(1); - } - - // free on CPU - if (device_num == -1) { - free(device_ptr); - return; - } - - OFFLOAD ofld = OFFLOAD_TARGET_ACQUIRE( - TARGET_MIC, device_num, 0, NULL, __func__, 0); - if (ofld) { - VarDesc vars[1] = {0}; - - vars[0].type.src = c_data; - vars[0].type.dst = c_data; - vars[0].direction.bits = c_parameter_in; - vars[0].size = sizeof(device_ptr); - vars[0].count = 1; - vars[0].ptr = &device_ptr; - - OFFLOAD_OFFLOAD(ofld, "omp_target_free_target", - 0, 1, vars, NULL, 0, 0, 0); - } -} - -int omp_target_is_present( - void *ptr, - int device_num -) __GOMP_NOTHROW -{ - __offload_init_library(); - - OFFLOAD_TRACE(2, "omp_target_is_present(%p, %d)\n", ptr, device_num); - - if (device_num < -1) { - LIBOFFLOAD_ERROR(c_invalid_device_number); - exit(1); - } - - if (device_num == -1) { - return false; - } - - // If OpenMP allows wrap-around for device numbers, enable next line - //device_num %= mic_engines_total; - - // lookup existing association in pointer table - PtrData* ptr_data = mic_engines[device_num].find_ptr_data(ptr); - if (ptr_data == 0) { - OFFLOAD_TRACE(3, "Address %p is not mapped on device %d\n", - ptr, device_num); - return false; - } - - OFFLOAD_TRACE(3, "Address %p found mapped on device %d\n", - ptr, device_num); - return true; -} - -int omp_target_memcpy( - void *dst, - void *src, - size_t length, - size_t dst_offset, - size_t src_offset, - int dst_device, - int src_device -) __GOMP_NOTHROW -{ - __offload_init_library(); - - OFFLOAD_TRACE(2, "omp_target_memcpy(%p, %p, %lld, %lld, %lld, %d, %d)\n", - dst, src, length, dst_offset, src_offset, dst_device, src_device); - - if (dst_device < -1 || src_device < -1) { - LIBOFFLOAD_ERROR(c_invalid_device_number); - exit(1); - } - - char* srcp = (char *)src + src_offset; - char* dstp = (char *)dst + dst_offset; - - if (src_device == -1) { - // Source is CPU - if (dst_device == -1) { - // CPU -> CPU - memcpy(dstp, srcp, length); - return 0; - } else { - // CPU -> MIC - // COIBufferWrite - // If OpenMP allows wrap-around for device numbers, enable next line - //dst_device %= mic_engines_total; - - OFFLOAD_TRACE(3, "Creating buffer from sink memory %llx\n", dstp); - COIBUFFER mic_buf; - COIRESULT res = COI::BufferCreateFromMemory(length, - COI_BUFFER_NORMAL, COI_SINK_MEMORY, dstp, - 1, &mic_engines[dst_device].get_process(), - &mic_buf); - if (res != COI_SUCCESS) { - LIBOFFLOAD_ERROR(c_buf_create_from_mem, res); - return 1; - } - res = COI::BufferWrite(mic_buf, 0, srcp, length, - COI_COPY_UNSPECIFIED, 0, 0, 0); - if (res != COI_SUCCESS) { - LIBOFFLOAD_ERROR(c_buf_write, res); - return 1; - } - res = COI::BufferDestroy(mic_buf); - if (res != COI_SUCCESS) { - LIBOFFLOAD_ERROR(c_buf_destroy, res); - return 1; - } - return 0; - } - } else { - // Source is device - if (dst_device == -1) { - // MIC -> CPU - // COIBufferRead - - // If OpenMP allows wrap-around for device numbers, enable next line - //src_device %= mic_engines_total; - - OFFLOAD_TRACE(3, "Creating buffer from sink memory %llx\n", srcp); - COIBUFFER mic_buf; - COIRESULT res = COI::BufferCreateFromMemory(length, - COI_BUFFER_NORMAL, COI_SINK_MEMORY, srcp, - 1, &mic_engines[src_device].get_process(), - &mic_buf); - if (res != COI_SUCCESS) { - LIBOFFLOAD_ERROR(c_buf_create_from_mem, res); - return 1; - } - res = COI::BufferRead(mic_buf, 0, dstp, length, - COI_COPY_UNSPECIFIED, 0, 0, 0); - if (res != COI_SUCCESS) { - LIBOFFLOAD_ERROR(c_buf_read, res); - return 1; - } - res = COI::BufferDestroy(mic_buf); - if (res != COI_SUCCESS) { - LIBOFFLOAD_ERROR(c_buf_destroy, res); - return 1; - } - return 0; - } else { - // some MIC -> some MIC - if (src_device == dst_device) { - // MIC local copy will be done as remote memcpy - - OFFLOAD ofld = OFFLOAD_TARGET_ACQUIRE(TARGET_MIC, src_device, - 0, NULL, __func__, 0); - if (ofld) { - VarDesc vars[3] = {0}; - - vars[0].type.src = c_data; - vars[0].type.dst = c_data; - vars[0].direction.bits = c_parameter_in; - vars[0].size = sizeof(dstp); - vars[0].count = 1; - vars[0].ptr = &dstp; - - vars[1].type.src = c_data; - vars[1].type.dst = c_data; - vars[1].direction.bits = c_parameter_in; - vars[1].size = sizeof(srcp); - vars[1].count = 1; - vars[1].ptr = &srcp; - - vars[2].type.src = c_data; - vars[2].type.dst = c_data; - vars[2].direction.bits = c_parameter_in; - vars[2].size = sizeof(length); - vars[2].count = 1; - vars[2].ptr = &length; - - OFFLOAD_OFFLOAD(ofld, "omp_target_memcpy_target", - 0, 3, vars, NULL, 0, 0, 0); - return 0; - } else { - return 1; - } - } else { - // MICx -> MICy - // Allocate CPU buffer - char *cpu_mem = (char *)malloc(length); - if (cpu_mem == 0) { - LIBOFFLOAD_ERROR(c_malloc); - return 1; - } - int retval = 1; - if (omp_target_memcpy( - cpu_mem, srcp, length, 0, 0, -1, src_device) == 0) { - retval = omp_target_memcpy( - dstp, cpu_mem, length, 0, 0, dst_device, -1); - } - free(cpu_mem); - return retval; - } - } - } -} - -static size_t bytesize_at_this_dimension( - size_t element_size, - int num_dims, - const size_t* dimensions -) -{ - if (num_dims > 1) { - return dimensions[1] * - bytesize_at_this_dimension( - element_size, num_dims-1, dimensions+1); - } else { - return element_size; - } -} - -static void memcpy_rect( - char *dst, - char *src, - size_t element_size, - int num_dims, - const size_t *volume, - const size_t *dst_offsets, - const size_t *src_offsets, - const size_t *dst_dimensions, - const size_t *src_dimensions -) -{ - if (num_dims > 1) { - int count = volume[0]; - int dst_index = dst_offsets[0]; - int src_index = src_offsets[0]; - size_t dst_element_size = - bytesize_at_this_dimension(element_size, num_dims, dst_dimensions); - size_t src_element_size = - bytesize_at_this_dimension(element_size, num_dims, src_dimensions); - for (; count>0; dst_index++, src_index++, count--) { - memcpy_rect(dst+dst_element_size*dst_index, - src+src_element_size*src_index, - element_size, num_dims-1, volume+1, - dst_offsets+1, src_offsets+1, - dst_dimensions+1, src_dimensions+1); - } - } else { - memcpy(dst+dst_offsets[0]*element_size, - src+src_offsets[0]*element_size, - element_size * volume[0]); - } -} - -int omp_target_memcpy_rect( - void *dst_, - void *src_, - size_t element_size, - int num_dims, - const size_t *volume, - const size_t *dst_offsets, - const size_t *src_offsets, - const size_t *dst_dimensions, - const size_t *src_dimensions, - int dst_device, - int src_device -) __GOMP_NOTHROW -{ - char *dst = (char *)dst_; - char *src = (char *)src_; - - __offload_init_library(); - - OFFLOAD_TRACE(2, "omp_target_memcpy_rect(%p, %p, %lld, %d, " - "%p, %p, %p, %p, %p, %d, %d)\n", - dst, src, element_size, num_dims, - volume, dst_offsets, src_offsets, - dst_dimensions, src_dimensions, dst_device, src_device); - - // MAX_ARRAY_RANK dimensions are supported - if (dst == 0 && src == 0) { - return MAX_ARRAY_RANK; - } - - if (num_dims < 1 || num_dims > MAX_ARRAY_RANK || - element_size < 1 || - volume == 0 || dst_offsets == 0 || src_offsets == 0 || - dst_dimensions == 0 || src_dimensions == 0) { - return 1; - } - - if (dst_device < -1 || src_device < -1) { - LIBOFFLOAD_ERROR(c_invalid_device_number); - exit(1); - } - - if (src_device == -1) { - // Source is CPU - if (dst_device == -1) { - // CPU -> CPU - memcpy_rect((char*)dst, (char*)src, element_size, num_dims, volume, - dst_offsets, src_offsets, - dst_dimensions, src_dimensions); - return 0; - } else { - // CPU -> MIC - // COIBufferWriteMultiD - struct arr_desc dst_desc; - struct arr_desc src_desc; - - dst_desc.base = (int64_t)dst; - dst_desc.rank = num_dims; - - src_desc.base = (int64_t)src; - src_desc.rank = num_dims; - - for (int i=0; i<num_dims; i++) - { - dst_desc.dim[i].size = bytesize_at_this_dimension( - element_size, - num_dims - i, - dst_dimensions + i); - dst_desc.dim[i].lindex = 0; - dst_desc.dim[i].lower = dst_offsets[i]; - dst_desc.dim[i].upper = dst_offsets[i] + volume[i] - 1; - dst_desc.dim[i].stride = 1; - - src_desc.dim[i].size = bytesize_at_this_dimension( - element_size, - num_dims - i, - src_dimensions + i); - src_desc.dim[i].lindex = 0; - src_desc.dim[i].lower = src_offsets[i]; - src_desc.dim[i].upper = src_offsets[i] + volume[i] - 1; - src_desc.dim[i].stride = 1; - } - __arr_desc_dump("", "dst", (const Arr_Desc*)&dst_desc, false, false); - __arr_desc_dump("", "src", (const Arr_Desc*)&src_desc, false, false); - - // If OpenMP allows wrap-around for device numbers, enable next line - //dst_device %= mic_engines_total; - - // Compute MIC buffer size - size_t dst_length = dst_dimensions[0] * bytesize_at_this_dimension( - element_size, - num_dims, - dst_dimensions); - - OFFLOAD_TRACE(3, - "Creating buffer from sink memory %llx of size %lld\n", - dst, dst_length); - COIBUFFER mic_buf; - COIRESULT res = COI::BufferCreateFromMemory(dst_length, - COI_BUFFER_NORMAL, COI_SINK_MEMORY, dst, - 1, &mic_engines[dst_device].get_process(), - &mic_buf); - if (res != COI_SUCCESS) { - LIBOFFLOAD_ERROR(c_buf_create_from_mem, res); - return 1; - } - res = COI::BufferWriteMultiD(mic_buf, - mic_engines[dst_device].get_process(), - 0, &dst_desc, &src_desc, - COI_COPY_UNSPECIFIED, 0, 0, 0); - if (res != COI_SUCCESS) { - LIBOFFLOAD_ERROR(c_buf_write, res); - return 1; - } - res = COI::BufferDestroy(mic_buf); - if (res != COI_SUCCESS) { - LIBOFFLOAD_ERROR(c_buf_destroy, res); - return 1; - } - return 0; - } - } else { - // Source is device - if (dst_device == -1) { - // COIBufferReadMultiD - struct arr_desc dst_desc; - struct arr_desc src_desc; - - dst_desc.base = (int64_t)dst; - dst_desc.rank = num_dims; - - src_desc.base = (int64_t)src; - src_desc.rank = num_dims; - - for (int i=0; i<num_dims; i++) - { - dst_desc.dim[i].size = bytesize_at_this_dimension( - element_size, - num_dims - i, - dst_dimensions + i); - dst_desc.dim[i].lindex = 0; - dst_desc.dim[i].lower = dst_offsets[i]; - dst_desc.dim[i].upper = dst_offsets[i] + volume[i] - 1; - dst_desc.dim[i].stride = 1; - - src_desc.dim[i].size = bytesize_at_this_dimension( - element_size, - num_dims - i, - src_dimensions + i); - src_desc.dim[i].lindex = 0; - src_desc.dim[i].lower = src_offsets[i]; - src_desc.dim[i].upper = src_offsets[i] + volume[i] - 1; - src_desc.dim[i].stride = 1; - } - __arr_desc_dump("", "dst", (const Arr_Desc*)&dst_desc, false, false); - __arr_desc_dump("", "src", (const Arr_Desc*)&src_desc, false, false); - - // If OpenMP allows wrap-around for device numbers, enable next line - //src_device %= mic_engines_total; - - // Compute MIC buffer size - size_t src_length = src_dimensions[0] * bytesize_at_this_dimension( - element_size, - num_dims, - src_dimensions); - - OFFLOAD_TRACE(3, - "Creating buffer from sink memory %llx of size %lld\n", - src, src_length); - COIBUFFER mic_buf; - COIRESULT res = COI::BufferCreateFromMemory(src_length, - COI_BUFFER_NORMAL, COI_SINK_MEMORY, src, - 1, &mic_engines[src_device].get_process(), - &mic_buf); - if (res != COI_SUCCESS) { - LIBOFFLOAD_ERROR(c_buf_create_from_mem, res); - return 1; - } - res = COI::BufferReadMultiD(mic_buf, 0, - &dst_desc, &src_desc, - COI_COPY_UNSPECIFIED, 0, 0, 0); - if (res != COI_SUCCESS) { - LIBOFFLOAD_ERROR(c_buf_write, res); - return 1; - } - res = COI::BufferDestroy(mic_buf); - if (res != COI_SUCCESS) { - LIBOFFLOAD_ERROR(c_buf_destroy, res); - return 1; - } - return 0; - } else { - // some MIC -> some MIC - if (src_device == dst_device) { - // MIC local copy will be done as remote memcpy_rect - struct parameters { - void *dst; - void *src; - size_t element_size; - int num_dims; - size_t array_info[MAX_ARRAY_RANK*5]; - } parameters = {dst, src, element_size, num_dims}; - int result; - - for (int i=0; i<num_dims; i++) - { - parameters.array_info[i] = volume[i]; - parameters.array_info[i+num_dims] = dst_offsets[i]; - parameters.array_info[i+num_dims*2] = src_offsets[i]; - parameters.array_info[i+num_dims*3] = dst_dimensions[i]; - parameters.array_info[i+num_dims*4] = src_dimensions[i]; - } - - OFFLOAD ofld = OFFLOAD_TARGET_ACQUIRE(TARGET_MIC, src_device, - 0, NULL, __func__, 0); - if (ofld) { - VarDesc vars[1] = {0}; - - vars[0].type.src = c_data; - vars[0].type.dst = c_data; - vars[0].direction.bits = c_parameter_in; - vars[0].size = sizeof(parameters) - - (MAX_ARRAY_RANK - num_dims) * - 5 * sizeof(size_t); - vars[0].count = 1; - vars[0].ptr = ¶meters; - - OFFLOAD_OFFLOAD(ofld, "omp_target_memcpy_rect_target", - 0, 1, vars, NULL, 0, 0, 0); - return 0; - } else { - return 1; - } - } else { - // MICx -> MICy - - // Compute transfer byte-count - size_t dst_length = element_size; - for (int i=0; i<num_dims; i++) { - dst_length *= volume[i]; - } - - // Allocate CPU buffer - char *cpu_mem = (char *)malloc(dst_length); - if (cpu_mem == 0) { - LIBOFFLOAD_ERROR(c_malloc); - return 1; - } - - // Create CPU offset and dimension arrays - // The CPU array collects the data in a contiguous block - size_t cpu_offsets[MAX_ARRAY_RANK]; - size_t cpu_dimensions[MAX_ARRAY_RANK]; - for (int i=0; i<num_dims; i++) { - cpu_offsets[i] = 0; - cpu_dimensions[i] = volume[i]; - } - - int retval = 1; - if (omp_target_memcpy_rect( - cpu_mem, src, element_size, num_dims, volume, - cpu_offsets, src_offsets, - cpu_dimensions, src_dimensions, - -1, src_device) == 0) { - retval = omp_target_memcpy_rect( - dst, cpu_mem, element_size, num_dims, volume, - dst_offsets, cpu_offsets, - dst_dimensions, cpu_dimensions, - dst_device, -1); - } - free(cpu_mem); - return retval; - } - } - } -} - -// host_ptr is key in table that yields association on device -// A COIBUFFER of specified size is created from the memory at -// device_ptr+device_offset on device_num -int omp_target_associate_ptr( - void *host_ptr, - void *device_ptr, - size_t size, - size_t device_offset, - int device_num -) __GOMP_NOTHROW -{ - COIRESULT res; - - __offload_init_library(); - - OFFLOAD_TRACE(2, "omp_target_associate_ptr(%p, %p, %lld, %lld, %d)\n", - host_ptr, device_ptr, size, device_offset, device_num); - - if (device_num < -1) { - LIBOFFLOAD_ERROR(c_invalid_device_number); - exit(1); - } - - // Associating to CPU is treated as failure - if (device_num == -1) { - return 1; - } - - // An incorrect size is treated as failure - if (size < 0) { - return 1; - } - - // If OpenMP allows wrap-around for device numbers, enable next line - //Engine& device = mic_engines[device_num % mic_engines_total]; - Engine& device = mic_engines[device_num]; - - // Does host pointer have association already? - // lookup existing association in pointer table - PtrData* ptr_data = device.find_ptr_data(host_ptr); - if (ptr_data != 0) { - OFFLOAD_TRACE(3, "Address %p is already mapped on device %d\n", - host_ptr, device_num); - // Is current device pointer and offset same as existing? - if ((void*)ptr_data->mic_addr == device_ptr && - (size_t)ptr_data->alloc_disp == device_offset) { - return 0; - } else { - return 1; - } - } - - // Create association - OFFLOAD_TRACE(3, "Creating association for data: addr %p, length %lld\n", - host_ptr, size); - - bool is_new; - ptr_data = device.insert_ptr_data(host_ptr, size, is_new); - ptr_data->is_omp_associate = true; - - // create CPU buffer - OFFLOAD_TRACE(3, - "Creating buffer from source memory %p, length %lld\n", - host_ptr, size); - - // result is not checked because we can continue without cpu - // buffer. In this case we will use COIBufferRead/Write - // instead of COIBufferCopy. - - COI::BufferCreateFromMemory(size, - COI_BUFFER_OPENCL, - 0, - host_ptr, - 1, - &device.get_process(), - &ptr_data->cpu_buf); - - // create MIC buffer - OFFLOAD_TRACE(3, - "Creating buffer from sink memory: addr %p, size %lld\n", - (char *)device_ptr + device_offset, size); - res = COI::BufferCreateFromMemory(size, - COI_BUFFER_NORMAL, - COI_SINK_MEMORY, - device_ptr, - 1, - &device.get_process(), - &ptr_data->mic_buf); - if (res != COI_SUCCESS) { - ptr_data->alloc_ptr_data_lock.unlock(); - return 1; - } - - // make buffer valid on the device. - res = COI::BufferSetState(ptr_data->mic_buf, - device.get_process(), - COI_BUFFER_VALID, - COI_BUFFER_NO_MOVE, - 0, 0, 0); - if (res != COI_SUCCESS) { - ptr_data->alloc_ptr_data_lock.unlock(); - return 1; - } - - res = COI::BufferSetState(ptr_data->mic_buf, - COI_PROCESS_SOURCE, - COI_BUFFER_INVALID, - COI_BUFFER_NO_MOVE, - 0, 0, 0); - if (res != COI_SUCCESS) { - ptr_data->alloc_ptr_data_lock.unlock(); - return 1; - } - ptr_data->alloc_disp = device_offset; - ptr_data->alloc_ptr_data_lock.unlock(); - - return 0; -} - -int omp_target_disassociate_ptr( - void *host_ptr, - int device_num -) __GOMP_NOTHROW -{ - COIRESULT res; - - __offload_init_library(); - - OFFLOAD_TRACE(2, "omp_target_disassociate_ptr(%p, %d)\n", - host_ptr, device_num); - - if (device_num < -1) { - LIBOFFLOAD_ERROR(c_invalid_device_number); - exit(1); - } - - // Dissociating from CPU is treated as failure - if (device_num == -1) { - return 1; - } - - // If OpenMP allows wrap-around for device numbers, enable next line - //Engine& device = mic_engines[device_num % mic_engines_total]; - Engine& device = mic_engines[device_num]; - - // Lookup existing association in pointer table - PtrData* ptr_data = device.find_ptr_data(host_ptr); - - // Attempt to disassociate unassociated pointer is a failure - if (ptr_data == 0) { - return 1; - } - - // Destroy buffers - if (ptr_data->cpu_buf != 0) { - OFFLOAD_TRACE(3, "Destroying CPU buffer %p\n", ptr_data->cpu_buf); - COI::BufferDestroy(ptr_data->cpu_buf); - } - if (ptr_data->mic_buf != 0) { - OFFLOAD_TRACE(3, "Destroying MIC buffer %p\n", ptr_data->mic_buf); - COI::BufferDestroy(ptr_data->mic_buf); - } - - // Remove association from map - OFFLOAD_TRACE(3, "Removing association for addr %p\n", - ptr_data->cpu_addr.start()); - device.remove_ptr_data(ptr_data->cpu_addr.start()); - - return 0; -} - -// End of OpenMP 4.5 APIs - - -// OpenMP API wrappers - -static void omp_set_int_target( - TARGET_TYPE target_type, - int target_number, - int setting, - const char* f_name -) -{ - OFFLOAD ofld = OFFLOAD_TARGET_ACQUIRE(target_type, target_number, 0, NULL, - f_name, 0); - if (ofld) { - VarDesc vars[1] = {0}; - - vars[0].type.src = c_data; - vars[0].type.dst = c_data; - vars[0].direction.bits = c_parameter_in; - vars[0].size = sizeof(int); - vars[0].count = 1; - vars[0].ptr = &setting; - - OFFLOAD_OFFLOAD(ofld, f_name, 0, 1, vars, NULL, 0, 0, 0); - } -} - -static int omp_get_int_target( - TARGET_TYPE target_type, - int target_number, - const char * f_name -) -{ - int setting = 0; - - OFFLOAD ofld = OFFLOAD_TARGET_ACQUIRE(target_type, target_number, 0, NULL, - f_name, 0); - if (ofld) { - VarDesc vars[1] = {0}; - - vars[0].type.src = c_data; - vars[0].type.dst = c_data; - vars[0].direction.bits = c_parameter_out; - vars[0].size = sizeof(int); - vars[0].count = 1; - vars[0].ptr = &setting; - - OFFLOAD_OFFLOAD(ofld, f_name, 0, 1, vars, NULL, 0, 0, 0); - } - return setting; -} - -void omp_set_num_threads_target( - TARGET_TYPE target_type, - int target_number, - int num_threads -) -{ - omp_set_int_target(target_type, target_number, num_threads, - "omp_set_num_threads_target"); -} - -int omp_get_max_threads_target( - TARGET_TYPE target_type, - int target_number -) -{ - return omp_get_int_target(target_type, target_number, - "omp_get_max_threads_target"); -} - -int omp_get_num_procs_target( - TARGET_TYPE target_type, - int target_number -) -{ - return omp_get_int_target(target_type, target_number, - "omp_get_num_procs_target"); -} - -void omp_set_dynamic_target( - TARGET_TYPE target_type, - int target_number, - int num_threads -) -{ - omp_set_int_target(target_type, target_number, num_threads, - "omp_set_dynamic_target"); -} - -int omp_get_dynamic_target( - TARGET_TYPE target_type, - int target_number -) -{ - return omp_get_int_target(target_type, target_number, - "omp_get_dynamic_target"); -} - -void omp_set_nested_target( - TARGET_TYPE target_type, - int target_number, - int nested -) -{ - omp_set_int_target(target_type, target_number, nested, - "omp_set_nested_target"); -} - -int omp_get_nested_target( - TARGET_TYPE target_type, - int target_number -) -{ - return omp_get_int_target(target_type, target_number, - "omp_get_nested_target"); -} - -void omp_set_schedule_target( - TARGET_TYPE target_type, - int target_number, - omp_sched_t kind, - int modifier -) -{ - OFFLOAD ofld = OFFLOAD_TARGET_ACQUIRE(target_type, target_number, 0, NULL, - __func__, 0); - if (ofld != 0) { - VarDesc vars[2] = {0}; - - vars[0].type.src = c_data; - vars[0].type.dst = c_data; - vars[0].direction.bits = c_parameter_in; - vars[0].size = sizeof(omp_sched_t); - vars[0].count = 1; - vars[0].ptr = &kind; - - vars[1].type.src = c_data; - vars[1].type.dst = c_data; - vars[1].direction.bits = c_parameter_in; - vars[1].size = sizeof(int); - vars[1].count = 1; - vars[1].ptr = &modifier; - - OFFLOAD_OFFLOAD(ofld, "omp_set_schedule_target", - 0, 2, vars, NULL, 0, 0, 0); - } -} - -void omp_get_schedule_target( - TARGET_TYPE target_type, - int target_number, - omp_sched_t *kind, - int *modifier -) -{ - OFFLOAD ofld = OFFLOAD_TARGET_ACQUIRE(target_type, target_number, 0, NULL, - __func__, 0); - if (ofld != 0) { - VarDesc vars[2] = {0}; - - vars[0].type.src = c_data; - vars[0].type.dst = c_data; - vars[0].direction.bits = c_parameter_out; - vars[0].size = sizeof(omp_sched_t); - vars[0].count = 1; - vars[0].ptr = kind; - - vars[1].type.src = c_data; - vars[1].type.dst = c_data; - vars[1].direction.bits = c_parameter_out; - vars[1].size = sizeof(int); - vars[1].count = 1; - vars[1].ptr = modifier; - - OFFLOAD_OFFLOAD(ofld, "omp_get_schedule_target", - 0, 2, vars, NULL, 0, 0, 0); - } -} - -// lock API functions - -void omp_init_lock_target( - TARGET_TYPE target_type, - int target_number, - omp_lock_target_t *lock -) -{ - OFFLOAD ofld = OFFLOAD_TARGET_ACQUIRE(target_type, target_number, 0, NULL, - __func__, 0); - if (ofld != 0) { - VarDesc vars[1] = {0}; - - vars[0].type.src = c_data; - vars[0].type.dst = c_data; - vars[0].direction.bits = c_parameter_out; - vars[0].size = sizeof(omp_lock_target_t); - vars[0].count = 1; - vars[0].ptr = lock; - - OFFLOAD_OFFLOAD(ofld, "omp_init_lock_target", - 0, 1, vars, NULL, 0, 0, 0); - } -} - -void omp_destroy_lock_target( - TARGET_TYPE target_type, - int target_number, - omp_lock_target_t *lock -) -{ - OFFLOAD ofld = OFFLOAD_TARGET_ACQUIRE(target_type, target_number, 0, NULL, - __func__, 0); - if (ofld != 0) { - VarDesc vars[1] = {0}; - - vars[0].type.src = c_data; - vars[0].type.dst = c_data; - vars[0].direction.bits = c_parameter_in; - vars[0].size = sizeof(omp_lock_target_t); - vars[0].count = 1; - vars[0].ptr = lock; - - OFFLOAD_OFFLOAD(ofld, "omp_destroy_lock_target", - 0, 1, vars, NULL, 0, 0, 0); - } -} - -void omp_set_lock_target( - TARGET_TYPE target_type, - int target_number, - omp_lock_target_t *lock -) -{ - OFFLOAD ofld = OFFLOAD_TARGET_ACQUIRE(target_type, target_number, 0, NULL, - __func__, 0); - if (ofld != 0) { - VarDesc vars[1] = {0}; - - vars[0].type.src = c_data; - vars[0].type.dst = c_data; - vars[0].direction.bits = c_parameter_inout; - vars[0].size = sizeof(omp_lock_target_t); - vars[0].count = 1; - vars[0].ptr = lock; - - OFFLOAD_OFFLOAD(ofld, "omp_set_lock_target", - 0, 1, vars, NULL, 0, 0, 0); - } -} - -void omp_unset_lock_target( - TARGET_TYPE target_type, - int target_number, - omp_lock_target_t *lock -) -{ - OFFLOAD ofld = OFFLOAD_TARGET_ACQUIRE(target_type, target_number, 0, NULL, - __func__, 0); - if (ofld != 0) { - VarDesc vars[1] = {0}; - - vars[0].type.src = c_data; - vars[0].type.dst = c_data; - vars[0].direction.bits = c_parameter_inout; - vars[0].size = sizeof(omp_lock_target_t); - vars[0].count = 1; - vars[0].ptr = lock; - - OFFLOAD_OFFLOAD(ofld, "omp_unset_lock_target", - 0, 1, vars, NULL, 0, 0, 0); - } -} - -int omp_test_lock_target( - TARGET_TYPE target_type, - int target_number, - omp_lock_target_t *lock -) -{ - int result = 0; - - OFFLOAD ofld = OFFLOAD_TARGET_ACQUIRE(target_type, target_number, 0, NULL, - __func__, 0); - if (ofld != 0) { - VarDesc vars[2] = {0}; - - vars[0].type.src = c_data; - vars[0].type.dst = c_data; - vars[0].direction.bits = c_parameter_inout; - vars[0].size = sizeof(omp_lock_target_t); - vars[0].count = 1; - vars[0].ptr = lock; - - vars[1].type.src = c_data; - vars[1].type.dst = c_data; - vars[1].direction.bits = c_parameter_out; - vars[1].size = sizeof(int); - vars[1].count = 1; - vars[1].ptr = &result; - - OFFLOAD_OFFLOAD(ofld, "omp_test_lock_target", - 0, 2, vars, NULL, 0, 0, 0); - } - return result; -} - -// nested lock API functions - -void omp_init_nest_lock_target( - TARGET_TYPE target_type, - int target_number, - omp_nest_lock_target_t *lock -) -{ - OFFLOAD ofld = OFFLOAD_TARGET_ACQUIRE(target_type, target_number, 0, NULL, - __func__, 0); - if (ofld != 0) { - VarDesc vars[1] = {0}; - - vars[0].type.src = c_data; - vars[0].type.dst = c_data; - vars[0].direction.bits = c_parameter_out; - vars[0].size = sizeof(omp_nest_lock_target_t); - vars[0].count = 1; - vars[0].ptr = lock; - - OFFLOAD_OFFLOAD(ofld, "omp_init_nest_lock_target", - 0, 1, vars, NULL, 0, 0, 0); - } -} - -void omp_destroy_nest_lock_target( - TARGET_TYPE target_type, - int target_number, - omp_nest_lock_target_t *lock -) -{ - OFFLOAD ofld = OFFLOAD_TARGET_ACQUIRE(target_type, target_number, 0, NULL, - __func__, 0); - if (ofld != 0) { - VarDesc vars[1] = {0}; - - vars[0].type.src = c_data; - vars[0].type.dst = c_data; - vars[0].direction.bits = c_parameter_in; - vars[0].size = sizeof(omp_nest_lock_target_t); - vars[0].count = 1; - vars[0].ptr = lock; - - OFFLOAD_OFFLOAD(ofld, "omp_destroy_nest_lock_target", - 0, 1, vars, NULL, 0, 0, 0); - } -} - -void omp_set_nest_lock_target( - TARGET_TYPE target_type, - int target_number, - omp_nest_lock_target_t *lock -) -{ - OFFLOAD ofld = OFFLOAD_TARGET_ACQUIRE(target_type, target_number, 0, NULL, - __func__, 0); - if (ofld != 0) { - VarDesc vars[1] = {0}; - - vars[0].type.src = c_data; - vars[0].type.dst = c_data; - vars[0].direction.bits = c_parameter_inout; - vars[0].size = sizeof(omp_nest_lock_target_t); - vars[0].count = 1; - vars[0].ptr = lock; - - OFFLOAD_OFFLOAD(ofld, "omp_set_nest_lock_target", - 0, 1, vars, NULL, 0, 0, 0); - } -} - -void omp_unset_nest_lock_target( - TARGET_TYPE target_type, - int target_number, - omp_nest_lock_target_t *lock -) -{ - OFFLOAD ofld = OFFLOAD_TARGET_ACQUIRE(target_type, target_number, 0, NULL, - __func__, 0); - if (ofld != 0) { - VarDesc vars[1] = {0}; - - vars[0].type.src = c_data; - vars[0].type.dst = c_data; - vars[0].direction.bits = c_parameter_inout; - vars[0].size = sizeof(omp_nest_lock_target_t); - vars[0].count = 1; - vars[0].ptr = lock; - - OFFLOAD_OFFLOAD(ofld, "omp_unset_nest_lock_target", - 0, 1, vars, NULL, 0, 0, 0); - } -} - -int omp_test_nest_lock_target( - TARGET_TYPE target_type, - int target_number, - omp_nest_lock_target_t *lock -) -{ - int result = 0; - - OFFLOAD ofld = OFFLOAD_TARGET_ACQUIRE(target_type, target_number, 0, NULL, - __func__, 0); - if (ofld != 0) { - VarDesc vars[2] = {0}; - - vars[0].type.src = c_data; - vars[0].type.dst = c_data; - vars[0].direction.bits = c_parameter_inout; - vars[0].size = sizeof(omp_nest_lock_target_t); - vars[0].count = 1; - vars[0].ptr = lock; - - vars[1].type.src = c_data; - vars[1].type.dst = c_data; - vars[1].direction.bits = c_parameter_out; - vars[1].size = sizeof(int); - vars[1].count = 1; - vars[1].ptr = &result; - - OFFLOAD_OFFLOAD(ofld, "omp_test_nest_lock_target", - 0, 2, vars, NULL, 0, 0, 0); - } - return result; -} diff --git a/liboffloadmic/runtime/offload_omp_target.cpp b/liboffloadmic/runtime/offload_omp_target.cpp deleted file mode 100644 index 2bcfef5..0000000 --- a/liboffloadmic/runtime/offload_omp_target.cpp +++ /dev/null @@ -1,736 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#include <omp.h> -#include "offload.h" -#include "compiler_if_target.h" - -// OpenMP API - -void omp_set_default_device(int num) __GOMP_NOTHROW -{ -} - -int omp_get_default_device(void) __GOMP_NOTHROW -{ - return mic_index; -} - -int omp_get_num_devices() __GOMP_NOTHROW -{ - return mic_engines_total; -} - -// OpenMP 4.5 APIs - -// COI supports 3-dim multiD transfers -#define MAX_ARRAY_RANK 3 - -DLL_LOCAL void omp_target_alloc_target( - void *ofld_ -) -{ - OFFLOAD ofld = (OFFLOAD) ofld_; - VarDesc vars[2] = {0}; - size_t size; - void* memory; - - vars[0].type.src = c_data; - vars[0].type.dst = c_data; - vars[0].direction.bits = c_parameter_in; - vars[0].ptr = &size; - - vars[1].type.src = c_data; - vars[1].type.dst = c_data; - vars[1].direction.bits = c_parameter_out; - vars[1].ptr = &memory; - - OFFLOAD_TARGET_ENTER(ofld, 2, vars, NULL); - OFFLOAD_DEBUG_TRACE(2, "omp_target_alloc(%lld)\n", size); - // We do not check for malloc returning NULL because the - // specification of this API includes the possibility of failure. - // The user will check the returned result - memory = malloc(size); - OFFLOAD_DEBUG_TRACE(2, "omp_target_alloc allocated at %p\n", memory); - OFFLOAD_TARGET_LEAVE(ofld); -} - -DLL_LOCAL void omp_target_free_target( - void *ofld_ -) -{ - OFFLOAD ofld = (OFFLOAD) ofld_; - VarDesc vars[1] = {0}; - void* memory; - - vars[0].type.src = c_data; - vars[0].type.dst = c_data; - vars[0].direction.bits = c_parameter_in; - vars[0].ptr = &memory; - - OFFLOAD_TARGET_ENTER(ofld, 1, vars, NULL); - OFFLOAD_DEBUG_TRACE(2, "omp_target_free(%p)\n", memory); - free(memory); - OFFLOAD_DEBUG_TRACE(2, "omp_target_free freed\n"); - OFFLOAD_TARGET_LEAVE(ofld); -} - -DLL_LOCAL void omp_target_memcpy_target( - void *ofld_ -) -{ - OFFLOAD ofld = (OFFLOAD) ofld_; - VarDesc vars[3] = {0}; - void* dst; - void* src; - size_t length; - - vars[0].type.src = c_data; - vars[0].type.dst = c_data; - vars[0].direction.bits = c_parameter_in; - vars[0].ptr = &dst; - - vars[1].type.src = c_data; - vars[1].type.dst = c_data; - vars[1].direction.bits = c_parameter_in; - vars[1].ptr = &src; - - vars[2].type.src = c_data; - vars[2].type.dst = c_data; - vars[2].direction.bits = c_parameter_in; - vars[2].ptr = &length; - - OFFLOAD_TARGET_ENTER(ofld, 3, vars, NULL); - OFFLOAD_DEBUG_TRACE(2, "omp_target_memcpy(%p, %p, %lld)\n", - dst, src, length); - memcpy(dst, src, length); - - OFFLOAD_DEBUG_TRACE(2, "omp_target_memcpy done\n"); - OFFLOAD_TARGET_LEAVE(ofld); -} - -static size_t bytesize_at_this_dimension( - size_t element_size, - int num_dims, - const size_t* dimensions -) -{ - if (num_dims > 1) { - return dimensions[1] * - bytesize_at_this_dimension( - element_size, num_dims-1, dimensions+1); - } else { - return element_size; - } -} - -static void memcpy_rect( - char *dst, - char *src, - size_t element_size, - int num_dims, - const size_t *volume, - const size_t *dst_offsets, - const size_t *src_offsets, - const size_t *dst_dimensions, - const size_t *src_dimensions -) -{ - if (num_dims > 1) { - int count = volume[0]; - int dst_index = dst_offsets[0]; - int src_index = src_offsets[0]; - size_t dst_element_size = - bytesize_at_this_dimension(element_size, num_dims, dst_dimensions); - size_t src_element_size = - bytesize_at_this_dimension(element_size, num_dims, src_dimensions); - for (; count>0; dst_index++, src_index++, count--) { - memcpy_rect(dst+dst_element_size*dst_index, - src+src_element_size*src_index, - element_size, num_dims-1, volume+1, - dst_offsets+1, src_offsets+1, - dst_dimensions+1, src_dimensions+1); - } - } else { - memcpy(dst+dst_offsets[0]*element_size, - src+src_offsets[0]*element_size, - element_size * volume[0]); - } -} - -DLL_LOCAL void omp_target_memcpy_rect_target( - void *ofld_ -) -{ - OFFLOAD ofld = (OFFLOAD) ofld_; - VarDesc vars[1] = {0}; - struct parameters { - void *dst; - void *src; - size_t element_size; - int num_dims; - size_t array_info[MAX_ARRAY_RANK*5]; - } parameters; - - vars[0].type.src = c_data; - vars[0].type.dst = c_data; - vars[0].direction.bits = c_parameter_in; - vars[0].ptr = ¶meters; - - OFFLOAD_TARGET_ENTER(ofld, 1, vars, NULL); - OFFLOAD_DEBUG_TRACE(2, "omp_target_memcpy_rect(%p, %p, %lld, %d)\n", - parameters.dst, parameters.src, - parameters.element_size, parameters.num_dims); - memcpy_rect( - (char*)parameters.dst, (char*)parameters.src, parameters.element_size, - parameters.num_dims, - ¶meters.array_info[0], - ¶meters.array_info[parameters.num_dims], - ¶meters.array_info[parameters.num_dims*2], - ¶meters.array_info[parameters.num_dims*3], - ¶meters.array_info[parameters.num_dims*4]); - - OFFLOAD_DEBUG_TRACE(2, "omp_target_memcpy_rect done\n"); - OFFLOAD_TARGET_LEAVE(ofld); -} - -// End of OpenMP 4.5 APIs - - -// OpenMP API wrappers - -static void omp_send_int_to_host( - void *ofld_, - int setting -) -{ - OFFLOAD ofld = (OFFLOAD) ofld_; - VarDesc vars[1] = {0}; - - vars[0].type.src = c_data; - vars[0].type.dst = c_data; - vars[0].direction.bits = c_parameter_out; - vars[0].ptr = &setting; - - OFFLOAD_TARGET_ENTER(ofld, 1, vars, NULL); - OFFLOAD_TARGET_LEAVE(ofld); -} - -static int omp_get_int_from_host( - void *ofld_ -) -{ - OFFLOAD ofld = (OFFLOAD) ofld_; - VarDesc vars[1] = {0}; - int setting; - - vars[0].type.src = c_data; - vars[0].type.dst = c_data; - vars[0].direction.bits = c_parameter_in; - vars[0].ptr = &setting; - - OFFLOAD_TARGET_ENTER(ofld, 1, vars, NULL); - OFFLOAD_TARGET_LEAVE(ofld); - - return setting; -} - -DLL_LOCAL void omp_set_num_threads_lrb( - void *ofld -) -{ - int num_threads; - - num_threads = omp_get_int_from_host(ofld); - omp_set_num_threads(num_threads); -} - -DLL_LOCAL void omp_get_max_threads_lrb( - void *ofld -) -{ - int num_threads; - - num_threads = omp_get_max_threads(); - omp_send_int_to_host(ofld, num_threads); -} - -DLL_LOCAL void omp_get_num_procs_lrb( - void *ofld -) -{ - int num_procs; - - num_procs = omp_get_num_procs(); - omp_send_int_to_host(ofld, num_procs); -} - -DLL_LOCAL void omp_set_dynamic_lrb( - void *ofld -) -{ - int dynamic; - - dynamic = omp_get_int_from_host(ofld); - omp_set_dynamic(dynamic); -} - -DLL_LOCAL void omp_get_dynamic_lrb( - void *ofld -) -{ - int dynamic; - - dynamic = omp_get_dynamic(); - omp_send_int_to_host(ofld, dynamic); -} - -DLL_LOCAL void omp_set_nested_lrb( - void *ofld -) -{ - int nested; - - nested = omp_get_int_from_host(ofld); - omp_set_nested(nested); -} - -DLL_LOCAL void omp_get_nested_lrb( - void *ofld -) -{ - int nested; - - nested = omp_get_nested(); - omp_send_int_to_host(ofld, nested); -} - -DLL_LOCAL void omp_set_schedule_lrb( - void *ofld_ -) -{ - OFFLOAD ofld = (OFFLOAD) ofld_; - VarDesc vars[2] = {0}; - omp_sched_t kind; - int modifier; - - vars[0].type.src = c_data; - vars[0].type.dst = c_data; - vars[0].direction.bits = c_parameter_in; - vars[0].ptr = &kind; - - vars[1].type.src = c_data; - vars[1].type.dst = c_data; - vars[1].direction.bits = c_parameter_in; - vars[1].ptr = &modifier; - - OFFLOAD_TARGET_ENTER(ofld, 2, vars, NULL); - omp_set_schedule(kind, modifier); - OFFLOAD_TARGET_LEAVE(ofld); -} - -DLL_LOCAL void omp_get_schedule_lrb( - void *ofld_ -) -{ - OFFLOAD ofld = (OFFLOAD) ofld_; - VarDesc vars[2] = {0}; - omp_sched_t kind; - int modifier; - - vars[0].type.src = c_data; - vars[0].type.dst = c_data; - vars[0].direction.bits = c_parameter_out; - vars[0].ptr = &kind; - - vars[1].type.src = c_data; - vars[1].type.dst = c_data; - vars[1].direction.bits = c_parameter_out; - vars[1].ptr = &modifier; - - OFFLOAD_TARGET_ENTER(ofld, 2, vars, NULL); - omp_get_schedule(&kind, &modifier); - OFFLOAD_TARGET_LEAVE(ofld); -} - -// lock API functions - -DLL_LOCAL void omp_init_lock_lrb( - void *ofld_ -) -{ - OFFLOAD ofld = (OFFLOAD) ofld_; - VarDesc vars[1] = {0}; - omp_lock_target_t lock; - - vars[0].type.src = c_data; - vars[0].type.dst = c_data; - vars[0].direction.bits = c_parameter_out; - vars[0].ptr = &lock; - - OFFLOAD_TARGET_ENTER(ofld, 1, vars, NULL); - omp_init_lock(&lock.lock); - OFFLOAD_TARGET_LEAVE(ofld); -} - -DLL_LOCAL void omp_destroy_lock_lrb( - void *ofld_ -) -{ - OFFLOAD ofld = (OFFLOAD) ofld_; - VarDesc vars[1] = {0}; - omp_lock_target_t lock; - - vars[0].type.src = c_data; - vars[0].type.dst = c_data; - vars[0].direction.bits = c_parameter_in; - vars[0].ptr = &lock; - - OFFLOAD_TARGET_ENTER(ofld, 1, vars, NULL); - omp_destroy_lock(&lock.lock); - OFFLOAD_TARGET_LEAVE(ofld); -} - -DLL_LOCAL void omp_set_lock_lrb( - void *ofld_ -) -{ - OFFLOAD ofld = (OFFLOAD) ofld_; - VarDesc vars[1] = {0}; - omp_lock_target_t lock; - - vars[0].type.src = c_data; - vars[0].type.dst = c_data; - vars[0].direction.bits = c_parameter_inout; - vars[0].ptr = &lock; - - OFFLOAD_TARGET_ENTER(ofld, 1, vars, NULL); - omp_set_lock(&lock.lock); - OFFLOAD_TARGET_LEAVE(ofld); -} - -DLL_LOCAL void omp_unset_lock_lrb( - void *ofld_ -) -{ - OFFLOAD ofld = (OFFLOAD) ofld_; - VarDesc vars[1] = {0}; - omp_lock_target_t lock; - - vars[0].type.src = c_data; - vars[0].type.dst = c_data; - vars[0].direction.bits = c_parameter_inout; - vars[0].ptr = &lock; - - OFFLOAD_TARGET_ENTER(ofld, 1, vars, NULL); - omp_unset_lock(&lock.lock); - OFFLOAD_TARGET_LEAVE(ofld); -} - -DLL_LOCAL void omp_test_lock_lrb( - void *ofld_ -) -{ - OFFLOAD ofld = (OFFLOAD) ofld_; - VarDesc vars[2] = {0}; - omp_lock_target_t lock; - int result; - - vars[0].type.src = c_data; - vars[0].type.dst = c_data; - vars[0].direction.bits = c_parameter_inout; - vars[0].ptr = &lock; - - vars[1].type.src = c_data; - vars[1].type.dst = c_data; - vars[1].direction.bits = c_parameter_out; - vars[1].ptr = &result; - - OFFLOAD_TARGET_ENTER(ofld, 2, vars, NULL); - result = omp_test_lock(&lock.lock); - OFFLOAD_TARGET_LEAVE(ofld); -} - -// nested lock API functions - -DLL_LOCAL void omp_init_nest_lock_lrb( - void *ofld_ -) -{ - OFFLOAD ofld = (OFFLOAD) ofld_; - VarDesc vars[1] = {0}; - omp_nest_lock_target_t lock; - - vars[0].type.src = c_data; - vars[0].type.dst = c_data; - vars[0].direction.bits = c_parameter_out; - vars[0].ptr = &lock; - - OFFLOAD_TARGET_ENTER(ofld, 1, vars, NULL); - omp_init_nest_lock(&lock.lock); - OFFLOAD_TARGET_LEAVE(ofld); -} - -DLL_LOCAL void omp_destroy_nest_lock_lrb( - void *ofld_ -) -{ - OFFLOAD ofld = (OFFLOAD) ofld_; - VarDesc vars[1] = {0}; - omp_nest_lock_target_t lock; - - vars[0].type.src = c_data; - vars[0].type.dst = c_data; - vars[0].direction.bits = c_parameter_in; - vars[0].ptr = &lock; - - OFFLOAD_TARGET_ENTER(ofld, 1, vars, NULL); - omp_destroy_nest_lock(&lock.lock); - OFFLOAD_TARGET_LEAVE(ofld); -} - -DLL_LOCAL void omp_set_nest_lock_lrb( - void *ofld_ -) -{ - OFFLOAD ofld = (OFFLOAD) ofld_; - VarDesc vars[1] = {0}; - omp_nest_lock_target_t lock; - - vars[0].type.src = c_data; - vars[0].type.dst = c_data; - vars[0].direction.bits = c_parameter_inout; - vars[0].ptr = &lock; - - OFFLOAD_TARGET_ENTER(ofld, 1, vars, NULL); - omp_set_nest_lock(&lock.lock); - OFFLOAD_TARGET_LEAVE(ofld); -} - -DLL_LOCAL void omp_unset_nest_lock_lrb( - void *ofld_ -) -{ - OFFLOAD ofld = (OFFLOAD) ofld_; - VarDesc vars[1] = {0}; - omp_nest_lock_target_t lock; - - vars[0].type.src = c_data; - vars[0].type.dst = c_data; - vars[0].direction.bits = c_parameter_inout; - vars[0].ptr = &lock; - - OFFLOAD_TARGET_ENTER(ofld, 1, vars, NULL); - omp_unset_nest_lock(&lock.lock); - OFFLOAD_TARGET_LEAVE(ofld); -} - -DLL_LOCAL void omp_test_nest_lock_lrb( - void *ofld_ -) -{ - OFFLOAD ofld = (OFFLOAD) ofld_; - VarDesc vars[2] = {0}; - omp_nest_lock_target_t lock; - int result; - - vars[0].type.src = c_data; - vars[0].type.dst = c_data; - vars[0].direction.bits = c_parameter_inout; - vars[0].ptr = &lock; - - vars[1].type.src = c_data; - vars[1].type.dst = c_data; - vars[1].direction.bits = c_parameter_out; - vars[1].ptr = &result; - - OFFLOAD_TARGET_ENTER(ofld, 2, vars, NULL); - result = omp_test_nest_lock(&lock.lock); - OFFLOAD_TARGET_LEAVE(ofld); -} - -// Target-side stubs for the host functions (to avoid unresolveds) -// These are needed for the offloadm table - -void omp_set_num_threads_target( - TARGET_TYPE target_type, - int target_number, - int num_threads -) -{ -} - -int omp_get_max_threads_target( - TARGET_TYPE target_type, - int target_number -) -{ - return 0; -} - -int omp_get_num_procs_target( - TARGET_TYPE target_type, - int target_number -) -{ - return 0; -} - -void omp_set_dynamic_target( - TARGET_TYPE target_type, - int target_number, - int num_threads -) -{ -} - -int omp_get_dynamic_target( - TARGET_TYPE target_type, - int target_number -) -{ - return 0; -} - -void omp_set_nested_target( - TARGET_TYPE target_type, - int target_number, - int num_threads -) -{ -} - -int omp_get_nested_target( - TARGET_TYPE target_type, - int target_number -) -{ - return 0; -} - -void omp_set_schedule_target( - TARGET_TYPE target_type, - int target_number, - omp_sched_t kind, - int modifier -) -{ -} - -void omp_get_schedule_target( - TARGET_TYPE target_type, - int target_number, - omp_sched_t *kind, - int *modifier -) -{ -} - -void omp_init_lock_target( - TARGET_TYPE target_type, - int target_number, - omp_lock_target_t *lock -) -{ -} - -void omp_destroy_lock_target( - TARGET_TYPE target_type, - int target_number, - omp_lock_target_t *lock -) -{ -} - -void omp_set_lock_target( - TARGET_TYPE target_type, - int target_number, - omp_lock_target_t *lock -) -{ -} - -void omp_unset_lock_target( - TARGET_TYPE target_type, - int target_number, - omp_lock_target_t *lock -) -{ -} - -int omp_test_lock_target( - TARGET_TYPE target_type, - int target_number, - omp_lock_target_t *lock -) -{ - return 0; -} - -void omp_init_nest_lock_target( - TARGET_TYPE target_type, - int target_number, - omp_nest_lock_target_t *lock -) -{ -} - -void omp_destroy_nest_lock_target( - TARGET_TYPE target_type, - int target_number, - omp_nest_lock_target_t *lock -) -{ -} - -void omp_set_nest_lock_target( - TARGET_TYPE target_type, - int target_number, - omp_nest_lock_target_t *lock -) -{ -} - -void omp_unset_nest_lock_target( - TARGET_TYPE target_type, - int target_number, - omp_nest_lock_target_t *lock -) -{ -} - -int omp_test_nest_lock_target( - TARGET_TYPE target_type, - int target_number, - omp_nest_lock_target_t *lock -) -{ - return 0; -} diff --git a/liboffloadmic/runtime/offload_orsl.cpp b/liboffloadmic/runtime/offload_orsl.cpp deleted file mode 100644 index a2ab674..0000000 --- a/liboffloadmic/runtime/offload_orsl.cpp +++ /dev/null @@ -1,104 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#include "offload_orsl.h" -#include <stdlib.h> -#include "offload_host.h" -#include "orsl-lite/include/orsl-lite.h" - -namespace ORSL { - -static bool is_enabled = false; -static const ORSLTag my_tag = (const ORSLTag) "Offload"; - -void init() -{ - const char *env_var = getenv("OFFLOAD_ENABLE_ORSL"); - if (env_var != 0 && *env_var != '\0') { - int64_t new_val; - if (__offload_parse_int_string(env_var, new_val)) { - is_enabled = new_val; - } - else { - LIBOFFLOAD_ERROR(c_invalid_env_var_int_value, - "OFFLOAD_ENABLE_ORSL"); - } - } - - if (is_enabled) { - OFFLOAD_DEBUG_TRACE(2, "ORSL is enabled\n"); - } - else { - OFFLOAD_DEBUG_TRACE(2, "ORSL is disabled\n"); - } -} - -bool reserve(int device) -{ - if (is_enabled) { - int pnum = mic_engines[device].get_physical_index(); - ORSLBusySet bset; - - bset.type = BUSY_SET_FULL; - if (ORSLReserve(1, &pnum, &bset, my_tag) != 0) { - return false; - } - } - return true; -} - -bool try_reserve(int device) -{ - if (is_enabled) { - int pnum = mic_engines[device].get_physical_index(); - ORSLBusySet bset; - - bset.type = BUSY_SET_FULL; - if (ORSLTryReserve(1, &pnum, &bset, my_tag) != 0) { - return false; - } - } - return true; -} - -void release(int device) -{ - if (is_enabled) { - int pnum = mic_engines[device].get_physical_index(); - ORSLBusySet bset; - - bset.type = BUSY_SET_FULL; - if (ORSLRelease(1, &pnum, &bset, my_tag) != 0) { - // should never get here - } - } -} - -} // namespace ORSL diff --git a/liboffloadmic/runtime/offload_orsl.h b/liboffloadmic/runtime/offload_orsl.h deleted file mode 100644 index 4513fcc..0000000 --- a/liboffloadmic/runtime/offload_orsl.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#include "offload_util.h" - -#ifndef OFFLOAD_ORSL_H_INCLUDED -#define OFFLOAD_ORSL_H_INCLUDED - -// ORSL interface -namespace ORSL { - -DLL_LOCAL extern void init(); - -DLL_LOCAL extern bool reserve(int device); -DLL_LOCAL extern bool try_reserve(int device); -DLL_LOCAL extern void release(int device); - -} // namespace ORSL - -#endif // OFFLOAD_ORSL_H_INCLUDED diff --git a/liboffloadmic/runtime/offload_table.cpp b/liboffloadmic/runtime/offload_table.cpp deleted file mode 100644 index 09c4d20..0000000 --- a/liboffloadmic/runtime/offload_table.cpp +++ /dev/null @@ -1,671 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#include "offload_table.h" -#include "offload_common.h" - -// Offload Library versioning -// We initialize version to OFFLOAD_VERSION_16 -// 15.0 application downgrades this to 1500 for MYO to use the older version. -// 15.0 pragma works without needing version-specific code. -// 16.0-U2 added a call from ofldbegin.cpp to set the version explicitly. -// Pre-16.0-U2 application will find pre-initialized version number as 1600. -// Post 16.0-U2 application will set its own version explicitly. -int offload_version = OFFLOAD_VERSION_16; -int offload_version_count = 0; - -#if !HOST_LIBRARY -// Predefined offload entries -extern void omp_set_num_threads_lrb(void*); -extern void omp_get_max_threads_lrb(void*); -extern void omp_get_num_procs_lrb(void*); -extern void omp_set_dynamic_lrb(void*); -extern void omp_get_dynamic_lrb(void*); -extern void omp_set_nested_lrb(void*); -extern void omp_get_nested_lrb(void*); -extern void omp_set_schedule_lrb(void*); -extern void omp_get_schedule_lrb(void*); - -extern void omp_init_lock_lrb(void*); -extern void omp_destroy_lock_lrb(void*); -extern void omp_set_lock_lrb(void*); -extern void omp_unset_lock_lrb(void*); -extern void omp_test_lock_lrb(void*); - -extern void omp_init_nest_lock_lrb(void*); -extern void omp_destroy_nest_lock_lrb(void*); -extern void omp_set_nest_lock_lrb(void*); -extern void omp_unset_nest_lock_lrb(void*); -extern void omp_test_nest_lock_lrb(void*); - -// OpenMP 4.5 APIs -extern void omp_target_alloc_target(void*); -extern void omp_target_free_target(void*); -extern void omp_target_memcpy_target(void*); -extern void omp_target_memcpy_rect_target(void*); - -// Predefined entries on the target side -static FuncTable::Entry predefined_entries[] = { - "omp_set_num_threads_target", - (void*) &omp_set_num_threads_lrb, - "omp_get_max_threads_target", - (void*) &omp_get_max_threads_lrb, - "omp_get_num_procs_target", - (void*) &omp_get_num_procs_lrb, - "omp_set_dynamic_target", - (void*) &omp_set_dynamic_lrb, - "omp_get_dynamic_target", - (void*) &omp_get_dynamic_lrb, - "omp_set_nested_target", - (void*) &omp_set_nested_lrb, - "omp_get_nested_target", - (void*) &omp_get_nested_lrb, - "omp_set_schedule_target", - (void*) &omp_set_schedule_lrb, - "omp_get_schedule_target", - (void*) &omp_get_schedule_lrb, - - "omp_init_lock_target", - (void*) &omp_init_lock_lrb, - "omp_destroy_lock_target", - (void*) &omp_destroy_lock_lrb, - "omp_set_lock_target", - (void*) &omp_set_lock_lrb, - "omp_unset_lock_target", - (void*) &omp_unset_lock_lrb, - "omp_test_lock_target", - (void*) &omp_test_lock_lrb, - - "omp_init_nest_lock_target", - (void*) &omp_init_nest_lock_lrb, - "omp_destroy_nest_lock_target", - (void*) &omp_destroy_nest_lock_lrb, - "omp_set_nest_lock_target", - (void*) &omp_set_nest_lock_lrb, - "omp_unset_nest_lock_target", - (void*) &omp_unset_nest_lock_lrb, - "omp_test_nest_lock_target", - (void*) &omp_test_nest_lock_lrb, - - "omp_target_alloc_target", - (void*) &omp_target_alloc_target, - "omp_target_free_target", - (void*) &omp_target_free_target, - "omp_target_memcpy_target", - (void*) &omp_target_memcpy_target, - "omp_target_memcpy_rect_target", - (void*) &omp_target_memcpy_rect_target, - - (const char*) -1, - (void*) -1 -}; - -static FuncList::Node predefined_table = { - { predefined_entries, -1 }, - 0, 0 -}; - -// Entry table -FuncList __offload_entries(&predefined_table); -#else -FuncList __offload_entries; -#endif // !HOST_LIBRARY - -extern "C" { - -// Set library version -void __offload_set_version(int v) -{ - offload_version_count++; - if (offload_version_count == 1) - { - offload_version = v; - } - else - { - // Mix of versions is not supported - if (v != offload_version) - { - LIBOFFLOAD_ERROR(c_mixed_versions); - exit(1); - } - } -} - -} // extern "C" -// Function table. No predefined entries. -FuncList __offload_funcs; - -// Var table -VarList __offload_vars; - -// Given the function name returns the associtated function pointer -const void* FuncList::find_addr(const char *name) -{ - const void* func = 0; - - m_lock.lock(); - - for (Node *n = m_head; n != 0; n = n->next) { - for (const Table::Entry *e = n->table.entries; - e->name != (const char*) -1; e++) { - if (e->name != 0 && strcmp(e->name, name) == 0) { - func = e->func; - break; - } - } - } - - m_lock.unlock(); - - return func; -} - -// Given the function pointer returns the associtated function name -const char* FuncList::find_name(const void *func) -{ - const char* name = 0; - - m_lock.lock(); - - for (Node *n = m_head; n != 0; n = n->next) { - for (const Table::Entry *e = n->table.entries; - e->name != (const char*) -1; e++) { - if (e->func == func) { - name = e->name; - break; - } - } - } - - m_lock.unlock(); - - return name; -} - -// Returns max name length from all tables -int64_t FuncList::max_name_length(void) -{ - if (m_max_name_len < 0) { - m_lock.lock(); - - m_max_name_len = 0; - for (Node *n = m_head; n != 0; n = n->next) { - if (n->table.max_name_len < 0) { - n->table.max_name_len = 0; - - // calculate max name length in a single table - for (const Table::Entry *e = n->table.entries; - e->name != (const char*) -1; e++) { - if (e->name != 0) { - size_t len = strlen(e->name) + 1; - if (n->table.max_name_len < len) { - n->table.max_name_len = len; - } - } - } - } - - // select max from all tables - if (m_max_name_len < n->table.max_name_len) { - m_max_name_len = n->table.max_name_len; - } - } - - m_lock.unlock(); - } - return m_max_name_len; -} - -// Debugging dump -void FuncList::dump(void) -{ - OFFLOAD_DEBUG_TRACE(2, "Function table:\n"); - - m_lock.lock(); - - for (Node *n = m_head; n != 0; n = n->next) { - for (const Table::Entry *e = n->table.entries; - e->name != (const char*) -1; e++) { - if (e->name != 0) { - OFFLOAD_DEBUG_TRACE(2, "%p %s\n", e->func, e->name); - } - } - } - - m_lock.unlock(); -} - -// Debugging dump -void VarList::dump(void) -{ - OFFLOAD_DEBUG_TRACE(2, "Var table:\n"); - - m_lock.lock(); - - for (Node *n = m_head; n != 0; n = n->next) { - for (const Table::Entry *e = n->table.entries; - e->name != (const char*) -1; e++) { - if (e->name != 0) { -#if HOST_LIBRARY - OFFLOAD_DEBUG_TRACE(2, "%s %p %ld\n", e->name, e->addr, - e->size); -#else // HOST_LIBRARY - OFFLOAD_DEBUG_TRACE(2, "%s %p\n", e->name, e->addr); -#endif // HOST_LIBRARY - } - } - } - - m_lock.unlock(); -} - -// -int64_t VarList::table_size(int64_t &nelems) -{ - int64_t length = 0; - - nelems = 0; - - // calculate string table size and number of elements - for (Node *n = m_head; n != 0; n = n->next) { - for (const Table::Entry *e = n->table.entries; - e->name != (const char*) -1; e++) { - if (e->name != 0) { - length += strlen(e->name) + 1; - nelems++; - } - } - } - - return nelems * sizeof(BufEntry) + length; -} - -// copy table to the gven buffer -void VarList::table_copy(void *buf, int64_t nelems) -{ - BufEntry* elems = static_cast<BufEntry*>(buf); - char* names = reinterpret_cast<char*>(elems + nelems); - - // copy entries to buffer - for (Node *n = m_head; n != 0; n = n->next) { - for (const Table::Entry *e = n->table.entries; - e->name != (const char*) -1; e++) { - if (e->name != 0) { - // name field contains offset to the name from the beginning - // of the buffer - elems->name = names - static_cast<char*>(buf); - elems->addr = reinterpret_cast<intptr_t>(e->addr); - - // copy name to string table - const char *name = e->name; - while ((*names++ = *name++) != '\0'); - - elems++; - } - } - } -} - -// patch name offsets in a buffer -void VarList::table_patch_names(void *buf, int64_t nelems) -{ - BufEntry* elems = static_cast<BufEntry*>(buf); - for (int i = 0; i < nelems; i++) { - elems[i].name += reinterpret_cast<intptr_t>(buf); - } -} - -#if HOST_LIBRARY -// 16.0 and earlier compilers used the following VarTable -struct OldVarTable { - const char* name; - void* addr; - // uint64_t var_alloc_type missing in 16.0 and earlier - uint64_t size; -}; - -static void convert_OldVarTable_to_NewVarTable(VarList::Node *vt_start) -{ - int table_size = 0; - char * new_var_table; - OldVarTable *old_var_table; - - OFFLOAD_DEBUG_TRACE(2, - "Converting old var table to new var table to support backward compatiblity\n"); - - // Calculate size of memory to be malloced - old_var_table = (OldVarTable *) vt_start->table.entries; - while (old_var_table->name != (const char*) -1) { - table_size++; - old_var_table++; - } - - if (table_size != 0) { - // Add 1 to table_size for end of table signature - VarTable::Entry *new_var_table = - new VarTable::Entry[table_size+1]; - - if (new_var_table == NULL) - LIBOFFLOAD_ERROR(c_malloc); - - old_var_table = (OldVarTable *) vt_start->table.entries; - - // Update VarList with new table - vt_start->table.entries = new_var_table; - - // Fix up the new table value from old table - for (int i=0; i< table_size; i++) { - new_var_table->name = old_var_table->name; - new_var_table->addr = old_var_table->addr; - new_var_table->size = old_var_table->size; - // Assign value of 0 for the missing field. - // Implying it is neither IMPLICIT or LINK variable as - // they were not supported in earlier compilers - new_var_table->var_alloc_type = 0; - old_var_table++; - new_var_table++; - } - new_var_table->name = (const char *)-1; - } - -} -#endif //HOST_LIBRARY - -// Adds given list element to the global lookup table list -extern "C" void __offload_register_tables( - FuncList::Node *entry_table, - FuncList::Node *func_table, - VarList::Node *var_table -) -{ - OFFLOAD_DEBUG_TRACE(2, "Registering offload function entry table %p\n", - entry_table); - __offload_entries.add_table(entry_table); - - OFFLOAD_DEBUG_TRACE(2, "Registering function table %p\n", func_table); - __offload_funcs.add_table(func_table); - - OFFLOAD_DEBUG_TRACE(2, "Registering var table %p\n", var_table); - - // Compiler earlier than 17.0 used a different var_table. - // Convert the old table to new var_table format. - // Only the host table for LINUX has changed. -#ifndef TARGET_WINNT -#if HOST_LIBRARY - if (offload_version < OFFLOAD_VERSION_17) { - convert_OldVarTable_to_NewVarTable(var_table); - } -#endif -#endif - __offload_vars.add_table(var_table); -} - -// Removes given list element from the global lookup table list -extern "C" void __offload_unregister_tables( - FuncList::Node *entry_table, - FuncList::Node *func_table, - VarList::Node *var_table -) -{ - OFFLOAD_DEBUG_TRACE(2, "Unregistering offload function entry table %p\n", - entry_table); - __offload_entries.remove_table(entry_table); - - OFFLOAD_DEBUG_TRACE(2, "Unregistering function table %p\n", func_table); - __offload_funcs.remove_table(func_table); - - OFFLOAD_DEBUG_TRACE(2, "Unregistering var table %p\n", var_table); -#ifndef TARGET_WINNT -#if HOST_LIBRARY - if (offload_version < OFFLOAD_VERSION_17) { - // Free the malloced var_table created for backward compatiblity - delete var_table->table.entries; - } -#endif -#endif - __offload_vars.remove_table(var_table); -} - -#ifdef MYO_SUPPORT - -MYOVarTableList __offload_myo_var_tables; -MYOVarTableList __offload_myo_vtable_tables; -MYOFuncTableList __offload_myo_func_tables; -MYOInitTableList __offload_myo_init_tables; - -// Debugging dump -void MYOVarTableList::dump(void) -{ - OFFLOAD_DEBUG_TRACE(2, "MYO Var tables:\n"); - - m_lock.lock(); - - for (Node *n = m_head; n != 0; n = n->next) { - OFFLOAD_DEBUG_TRACE(2, " MYO Var table:\n"); - for (const Table::Entry *e = n->table.entries; - e->varName != MYO_TABLE_END_MARKER(); e++) { -#ifdef TARGET_WINNT - if (e->varName == 0) { - continue; - } -#endif // TARGET_WINNT - OFFLOAD_DEBUG_TRACE(2, " %s %p\n", - e->varName, e->sharedAddr); - } - } - - m_lock.unlock(); -} - -// check if any shared variables -bool MYOVarTableList::is_empty() -{ - OFFLOAD_DEBUG_TRACE(3, "Are MYO Var tables empty?\n"); - - m_lock.lock(); - - for (Node *n = m_head; n != 0; n = n->next) { - for (const Table::Entry *e = n->table.entries; - e->varName != MYO_TABLE_END_MARKER(); e++) { -#ifdef TARGET_WINNT - if (e->varName == 0) { - continue; - } -#endif // TARGET_WINNT - m_lock.unlock(); - OFFLOAD_DEBUG_TRACE(3, "No\n"); - return false; - } - } - - m_lock.unlock(); - OFFLOAD_DEBUG_TRACE(3, "Yes\n"); - return true; -} - -void MYOFuncTableList::dump(void) -{ - OFFLOAD_DEBUG_TRACE(2, "MYO Func tables:\n"); - - m_lock.lock(); - - for (Node *n = m_head; n != 0; n = n->next) { - OFFLOAD_DEBUG_TRACE(2, " MYO Func table:\n"); - for (const Table::Entry *e = n->table.entries; - e->funcName != MYO_TABLE_END_MARKER(); e++) { -#ifdef TARGET_WINNT - if (e->funcName == 0) { - continue; - } -#endif // TARGET_WINNT -#if HOST_LIBRARY - OFFLOAD_DEBUG_TRACE(2, " %s %p %p\n", - e->funcName, e->funcAddr, e->localThunkAddr); -#else // HOST_LIBRARY - OFFLOAD_DEBUG_TRACE(2, " %s %p %p %p\n", - e->funcName, e->funcAddr, e->wrapFuncAddr, e->localThunkAddr); -#endif // HOST_LIBRARY - } - } - - m_lock.unlock(); -} - -// check if any shared functions -bool MYOFuncTableList::is_empty() -{ - OFFLOAD_DEBUG_TRACE(3, "Are MYO Func tables empty?\n"); - - m_lock.lock(); - - for (Node *n = m_head; n != 0; n = n->next) { - int count = 0; - for (const Table::Entry *e = n->table.entries; - e->funcName != MYO_TABLE_END_MARKER(); e++) { -#ifdef TARGET_WINNT - if (e->funcName == 0) { - continue; - } -#endif // TARGET_WINNT - count++; - if (count > 1) { - m_lock.unlock(); - OFFLOAD_DEBUG_TRACE(3, "No\n"); - return false; - } - } - } - - m_lock.unlock(); - OFFLOAD_DEBUG_TRACE(3, "Yes\n"); - return true; -} - -void MYOInitTableList::dump(void) -{ - OFFLOAD_DEBUG_TRACE(2, "MYO Init tables:\n"); - - m_lock.lock(); - - for (Node *n = m_head; n != 0; n = n->next) { - OFFLOAD_DEBUG_TRACE(2, " MYO Init table:\n"); - for (const Table::Entry *e = n->table.entries; -#ifdef TARGET_WINNT - e->funcName != MYO_TABLE_END_MARKER(); e++) { - if (e->funcName == 0) { - continue; - } - OFFLOAD_DEBUG_TRACE(2, " %s %p\n", e->funcName, e->func); -#else // TARGET_WINNT - e->func != 0; e++) { - OFFLOAD_DEBUG_TRACE(2, " %p\n", e->func); -#endif // TARGET_WINNT - } - } - - m_lock.unlock(); -} - -// check if any shared functions -bool MYOInitTableList::is_empty() -{ - OFFLOAD_DEBUG_TRACE(3, "Are MYO Init tables empty?\n"); - - m_lock.lock(); - - for (Node *n = m_head; n != 0; n = n->next) { - for (const Table::Entry *e = n->table.entries; -#ifdef TARGET_WINNT - e->funcName != MYO_TABLE_END_MARKER(); e++) { - if (e->funcName == 0) { - continue; - } - m_lock.unlock(); - OFFLOAD_DEBUG_TRACE(3, "No\n"); - return false; -#else // TARGET_WINNT - e->func != 0; e++) { -#endif // TARGET_WINNT - } - } - - m_lock.unlock(); - OFFLOAD_DEBUG_TRACE(3, "Yes\n"); - return true; -} - -extern "C" void __offload_myoRegisterTables1( - MYOInitTableList::Node *init_table, - MYOVarTableList::Node *shared_table, - MYOVarTableList::Node *shared_vtable, - MYOFuncTableList::Node *fptr_table -) -{ - OFFLOAD_DEBUG_TRACE(2, "Registering MYO shared var table %p\n", - shared_table); - __offload_myo_var_tables.add_table(shared_table); - - OFFLOAD_DEBUG_TRACE(2, "Registering MYO shared vtable table %p\n", - shared_vtable); - __offload_myo_vtable_tables.add_table(shared_vtable); - - OFFLOAD_DEBUG_TRACE(2, "Registering MYO function table %p\n", fptr_table); - __offload_myo_func_tables.add_table(fptr_table); - - OFFLOAD_DEBUG_TRACE(2, "Registering MYO init table %p\n", init_table); - __offload_myo_init_tables.add_table(init_table); -} - -extern "C" void __offload_myoRemoveTables( - MYOInitTableList::Node *init_table, - MYOVarTableList::Node *shared_table, - MYOVarTableList::Node *shared_vtable, - MYOFuncTableList::Node *fptr_table -) -{ - OFFLOAD_DEBUG_TRACE(3, "%s\n", __func__); - - OFFLOAD_DEBUG_TRACE(2, "Removing MYO shared var table %p\n", - shared_table); - __offload_myo_var_tables.remove_table(shared_table); - - OFFLOAD_DEBUG_TRACE(2, "Removing MYO shared vtable table %p\n", - shared_vtable); - __offload_myo_vtable_tables.remove_table(shared_vtable); - - OFFLOAD_DEBUG_TRACE(2, "Removing MYO function table %p\n", fptr_table); - __offload_myo_func_tables.remove_table(fptr_table); - - OFFLOAD_DEBUG_TRACE(2, "Removing MYO init table %p\n", init_table); - __offload_myo_init_tables.remove_table(init_table); -} - -#endif // MYO_SUPPORT diff --git a/liboffloadmic/runtime/offload_table.h b/liboffloadmic/runtime/offload_table.h deleted file mode 100644 index 9f9f932..0000000 --- a/liboffloadmic/runtime/offload_table.h +++ /dev/null @@ -1,468 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/*! \file - \brief Function and Variable tables used by the runtime library -*/ - -#ifndef OFFLOAD_TABLE_H_INCLUDED -#define OFFLOAD_TABLE_H_INCLUDED - -#include "offload_util.h" - -#define OFFLOAD_VERSION_16 1600 -#define OFFLOAD_VERSION_17 1700 - -// Template representing double linked list of tables -template <typename T> class TableList { -public: - // table type - typedef T Table; - - // List node - struct Node { - Table table; - Node* prev; - Node* next; - }; - -public: - explicit TableList(Node *node = 0) : m_head(node) {} - - void add_table(Node *node) { - m_lock.lock(); - if (m_head != 0) { - node->next = m_head; - m_head->prev = node; - } - m_head = node; - - m_lock.unlock(); - } - - void remove_table(Node *node) { - if (node->next != 0) { - node->next->prev = node->prev; - } - if (node->prev != 0) { - node->prev->next = node->next; - } - if (m_head == node) { - m_head = node->next; - } - } - -protected: - Node* m_head; - mutex_t m_lock; -}; - -// Function lookup table. -struct FuncTable { - //! Function table entry - /*! This table contains functions created from offload regions. */ - /*! Each entry consists of a pointer to the function's "key" - and the function address. */ - /*! Each shared library or executable may contain one such table. */ - /*! The end of the table is marked with an entry whose name field - has value -1. */ - struct Entry { - const char* name; //!< Name of the function - void* func; //!< Address of the function - }; - - // entries - const Entry *entries; - - // max name length - int64_t max_name_len; -}; - -// Function table -class DLL_LOCAL FuncList : public TableList<FuncTable> { -public: - explicit FuncList(Node *node = 0) : TableList<Table>(node), - m_max_name_len(-1) - {} - - // add table to the list - void add_table(Node *node) { - // recalculate max function name length - m_max_name_len = -1; - - // add table - TableList<Table>::add_table(node); - } - - // find function address for the given name - const void* find_addr(const char *name); - - // find function name for the given address - const char* find_name(const void *addr); - - // max name length from all tables in the list - int64_t max_name_length(void); - - // debug dump - void dump(void); - -private: - // max name length within from all tables - int64_t m_max_name_len; -}; - -#define VAR_ALLOC_TYPE uint64_t -#define OPENMP_IMPLICIT 1 // Compiler promoted openmp declare var - // due to implicit use without openmp declare -#define OPENMP_LINK 2 // Openmp link clause in openmp declare - -#define IS_OPENMP_IMPLICIT(var_alloc_type) (var_alloc_type & 1) -#define IS_OPENMP_LINK(var_alloc_type) (var_alloc_type & 2) -#define IS_OPENMP_IMPLICIT_OR_LINK(var_alloc_type) (var_alloc_type & 3) - -// Table entry for static variables -struct VarTable { - //! Variable table entry - /*! This table contains statically allocated variables marked with - __declspec(target(mic) or #pragma omp declare target. */ - /*! Each entry consists of a pointer to the variable's "key", - the variable address and its size in bytes. */ - /*! Because memory allocation is done from the host, - the MIC table does not need the size of the variable. */ - /*! Padding to make the table entry size a power of 2 is necessary - to avoid "holes" between table contributions from different object - files on Windows when debug information is specified with /Zi. */ - struct Entry { - const char* name; //!< Name of the variable - void* addr; //!< Address of the variable - -#if HOST_LIBRARY - VAR_ALLOC_TYPE var_alloc_type; - uint64_t size; -#endif - }; - - // Table terminated by an entry with name == -1 - const Entry *entries; -}; - -// List of var tables -class DLL_LOCAL VarList : public TableList<VarTable> { -public: - VarList() : TableList<Table>() - {} - - // debug dump - void dump(); - -public: - - Node * get_head() { - return m_head; - } - -public: - // Entry representation in a copy buffer - struct BufEntry { - intptr_t name; - intptr_t addr; - }; - - // Calculate the number of elements in the table and - // returns the size of buffer for the table - int64_t table_size(int64_t &nelems); - - // Copy table contents to given buffer. It is supposed to be large - // enough to hold all elements as string table. - void table_copy(void *buf, int64_t nelems); - - // Patch name offsets in a table after it's been copied to other side - static void table_patch_names(void *buf, int64_t nelems); -}; - -DLL_LOCAL extern FuncList __offload_entries; -DLL_LOCAL extern FuncList __offload_funcs; -DLL_LOCAL extern VarList __offload_vars; - -// Section names where the lookup tables are stored -#ifdef TARGET_WINNT -#define OFFLOAD_ENTRY_TABLE_SECTION_START ".OffloadEntryTable$a" -#define OFFLOAD_ENTRY_TABLE_SECTION_END ".OffloadEntryTable$z" - -#define OFFLOAD_FUNC_TABLE_SECTION_START ".OffloadFuncTable$a" -#define OFFLOAD_FUNC_TABLE_SECTION_END ".OffloadFuncTable$z" - -#define OFFLOAD_VAR_TABLE_SECTION_START ".OffloadVarTable$a" -#define OFFLOAD_VAR_TABLE_SECTION_END ".OffloadVarTable$z" - -#define OFFLOAD_CRTINIT_SECTION_START ".CRT$XCT" - -#pragma section(OFFLOAD_CRTINIT_SECTION_START, read) - -#else // TARGET_WINNT - -#define OFFLOAD_ENTRY_TABLE_SECTION_START ".OffloadEntryTable." -#define OFFLOAD_ENTRY_TABLE_SECTION_END ".OffloadEntryTable." - -#define OFFLOAD_FUNC_TABLE_SECTION_START ".OffloadFuncTable." -#define OFFLOAD_FUNC_TABLE_SECTION_END ".OffloadFuncTable." - -#define OFFLOAD_VAR_TABLE_SECTION_START ".OffloadVarTable." -#define OFFLOAD_VAR_TABLE_SECTION_END ".OffloadVarTable." -#endif // TARGET_WINNT - -#pragma section(OFFLOAD_ENTRY_TABLE_SECTION_START, read, write) -#pragma section(OFFLOAD_ENTRY_TABLE_SECTION_END, read, write) - -#pragma section(OFFLOAD_FUNC_TABLE_SECTION_START, read, write) -#pragma section(OFFLOAD_FUNC_TABLE_SECTION_END, read, write) - -#pragma section(OFFLOAD_VAR_TABLE_SECTION_START, read, write) -#pragma section(OFFLOAD_VAR_TABLE_SECTION_END, read, write) - - -// Set library version -extern "C" void __offload_set_version(int v); - -// register/unregister given tables -extern "C" void __offload_register_tables( - FuncList::Node *entry_table, - FuncList::Node *func_table, - VarList::Node *var_table -); - -extern "C" void __offload_unregister_tables( - FuncList::Node *entry_table, - FuncList::Node *func_table, - VarList::Node *var_table -); - - -#ifdef MYO_SUPPORT - -#include <myotypes.h> -#include <myoimpl.h> -#include <myo.h> - -#ifdef TARGET_WINNT -#define MYO_TABLE_END_MARKER() reinterpret_cast<const char*>(-1) -#else // TARGET_WINNT -#define MYO_TABLE_END_MARKER() reinterpret_cast<const char*>(0) -#endif // TARGET_WINNT - -// Host and Target-side MYO shared variable table entry layout -typedef MyoiSharedVarEntry SharedTableEntry; - -#if HOST_LIBRARY - -// Host-side MYO function table entry layout -typedef struct { - //! Function Name - const char *funcName; - //! Function Address - void *funcAddr; - //! Local Thunk Address - void *localThunkAddr; -#ifdef TARGET_WINNT - // Dummy to pad up to 32 bytes - void *dummy; -#endif // TARGET_WINNT -} FptrTableEntry; - -// Host-side MYO init routine table entry layout -typedef struct { -#ifdef TARGET_WINNT - // Dummy to pad up to 16 bytes - // Function Name - const char *funcName; -#endif // TARGET_WINNT - void (*func)(MyoArena); -} InitTableEntry; - -#else // HOST_LIBRARY - -// Target-side MYO function table entry layout -typedef MyoiTargetSharedFptrEntry FptrTableEntry; - -// Target-side MYO init routine table entry layout -struct InitTableEntry { - void (*func)(void); -}; - -#endif // HOST_LIBRARY - -#ifdef TARGET_WINNT - -#define OFFLOAD_MYO_SHARED_TABLE_SECTION_START ".MyoSharedTable$a" -#define OFFLOAD_MYO_SHARED_TABLE_SECTION_END ".MyoSharedTable$z" - -#define OFFLOAD_MYO_SHARED_VTABLE_SECTION_START ".MyoSharedVTable$a" -#define OFFLOAD_MYO_SHARED_VTABLE_SECTION_END ".MyoSharedVTable$z" - -#define OFFLOAD_MYO_SHARED_INIT_TABLE_SECTION_START ".MyoSharedInitTable$a" -#define OFFLOAD_MYO_SHARED_INIT_TABLE_SECTION_END ".MyoSharedInitTable$z" - -#define OFFLOAD_MYO_FPTR_TABLE_SECTION_START ".MyoFptrTable$a" -#define OFFLOAD_MYO_FPTR_TABLE_SECTION_END ".MyoFptrTable$z" - -#else // TARGET_WINNT - -#define OFFLOAD_MYO_SHARED_TABLE_SECTION_START ".MyoSharedTable." -#define OFFLOAD_MYO_SHARED_TABLE_SECTION_END ".MyoSharedTable." - -#define OFFLOAD_MYO_SHARED_VTABLE_SECTION_START ".MyoSharedVTable." -#define OFFLOAD_MYO_SHARED_VTABLE_SECTION_END ".MyoSharedVTable." - -#define OFFLOAD_MYO_SHARED_INIT_TABLE_SECTION_START ".MyoSharedInitTable." -#define OFFLOAD_MYO_SHARED_INIT_TABLE_SECTION_END ".MyoSharedInitTable." - -#define OFFLOAD_MYO_FPTR_TABLE_SECTION_START ".MyoFptrTable." -#define OFFLOAD_MYO_FPTR_TABLE_SECTION_END ".MyoFptrTable." - -#endif // TARGET_WINNT - -#pragma section(OFFLOAD_MYO_SHARED_TABLE_SECTION_START, read, write) -#pragma section(OFFLOAD_MYO_SHARED_TABLE_SECTION_END, read, write) - -#pragma section(OFFLOAD_MYO_SHARED_VTABLE_SECTION_START, read, write) -#pragma section(OFFLOAD_MYO_SHARED_VTABLE_SECTION_END, read, write) - -#pragma section(OFFLOAD_MYO_SHARED_INIT_TABLE_SECTION_START, read, write) -#pragma section(OFFLOAD_MYO_SHARED_INIT_TABLE_SECTION_END, read, write) - -#pragma section(OFFLOAD_MYO_FPTR_TABLE_SECTION_START, read, write) -#pragma section(OFFLOAD_MYO_FPTR_TABLE_SECTION_END, read, write) - -// List of MYO shared variable tables -struct MYOVarTable { - typedef SharedTableEntry Entry; - const Entry *entries; -}; - -class MYOVarTableList : public TableList<MYOVarTable> { -public: - MYOVarTableList() : TableList<Table>() - {} - - // add table to the list - void add_table(Node *node) { - // add table - TableList<Table>::add_table(node); - } - - // debug dump - void dump(void); - - // check if any shared variables - bool is_empty(); - - // process the table contents for ordinary variables - void process(); - - // process the table contents for vtable objects - void process_vtable(); -}; - -// List of MYO shared function tables -struct MYOFuncTable { - typedef FptrTableEntry Entry; - const Entry *entries; -}; - -class MYOFuncTableList : public TableList<MYOFuncTable> { -public: - MYOFuncTableList() : TableList<Table>() - {} - - // add table to the list - void add_table(Node *node) { - // add table - TableList<Table>::add_table(node); - } - - // debug dump - void dump(void); - - // check if any shared functions - bool is_empty(); - - // process the table contents - void process(); -}; - -// List of MYO shared variable initialization routine tables -struct MYOInitTable { - typedef InitTableEntry Entry; - const Entry *entries; -}; - -class MYOInitTableList : public TableList<MYOInitTable> { -public: - MYOInitTableList() : TableList<Table>() - {} - - // add table to the list - void add_table(Node *node) { - // add table - TableList<Table>::add_table(node); - } - - // debug dump - void dump(void); - - // check if any init routines - bool is_empty(); - - // process the table contents - void process(); -}; - -extern MYOVarTableList __offload_myo_var_tables; -extern MYOVarTableList __offload_myo_vtable_tables; -extern MYOFuncTableList __offload_myo_func_tables; -extern MYOInitTableList __offload_myo_init_tables; - -extern "C" void __offload_myoRegisterTables1( - MYOInitTableList::Node *init_table, - MYOVarTableList::Node *shared_table, - MYOVarTableList::Node *shared_vtable, - MYOFuncTableList::Node *fptr_table -); - -extern "C" void __offload_myoRemoveTables( - MYOInitTableList::Node *init_table, - MYOVarTableList::Node *shared_table, - MYOVarTableList::Node *shared_vtable, - MYOFuncTableList::Node *fptr_table -); - -#endif // MYO_SUPPORT - -#endif // OFFLOAD_TABLE_H_INCLUDED diff --git a/liboffloadmic/runtime/offload_target.cpp b/liboffloadmic/runtime/offload_target.cpp deleted file mode 100644 index 16ba4a3..0000000 --- a/liboffloadmic/runtime/offload_target.cpp +++ /dev/null @@ -1,878 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#include "offload_target.h" -#include <stdlib.h> -#include <unistd.h> -#ifdef SEP_SUPPORT -#include <fcntl.h> -#include <sys/ioctl.h> -#endif // SEP_SUPPORT -#include <omp.h> -#include <map> - -// typedef offload_func_with_parms. -// Pointer to function that represents an offloaded entry point. -// The parameters are a temporary fix for parameters on the stack. -typedef void (*offload_func_with_parms)(void *); - -// Target console and file logging -const char *prefix; -int console_enabled = 0; -int offload_report_level = 0; - -// Trace information -static const char* vardesc_direction_as_string[] = { - "NOCOPY", - "IN", - "OUT", - "INOUT" -}; -static const char* vardesc_type_as_string[] = { - "unknown", - "data", - "data_ptr", - "func_ptr", - "void_ptr", - "string_ptr", - "dv", - "dv_data", - "dv_data_slice", - "dv_ptr", - "dv_ptr_data", - "dv_ptr_data_slice", - "cean_var", - "cean_var_ptr", - "c_data_ptr_array", - "c_extended_type", - "c_func_ptr_array", - "c_void_ptr_array", - "c_string_ptr_array", - "c_data_ptr_ptr", - "c_func_ptr_ptr", - "c_void_ptr_ptr", - "c_string_ptr_ptr", - "c_cean_var_ptr_ptr", -}; - -int mic_index = -1; -int mic_engines_total = -1; -uint64_t mic_frequency = 0; -int offload_number = 0; -static std::map<void*, RefInfo*> ref_data; -static mutex_t add_ref_lock; - -#ifdef SEP_SUPPORT -static const char* sep_monitor_env = "SEP_MONITOR"; -static bool sep_monitor = false; -static const char* sep_device_env = "SEP_DEVICE"; -static const char* sep_device = "/dev/sep3.8/c"; -static int sep_counter = 0; - -#define SEP_API_IOC_MAGIC 99 -#define SEP_IOCTL_PAUSE _IO (SEP_API_IOC_MAGIC, 31) -#define SEP_IOCTL_RESUME _IO (SEP_API_IOC_MAGIC, 32) - -static void add_ref_count(void * buf, bool created) -{ - mutex_locker_t locker(add_ref_lock); - RefInfo * info = ref_data[buf]; - - if (info) { - info->count++; - } - else { - info = new RefInfo((int)created,(long)1); - } - info->is_added |= created; - ref_data[buf] = info; -} - -static void BufReleaseRef(void * buf) -{ - mutex_locker_t locker(add_ref_lock); - RefInfo * info = ref_data[buf]; - - if (info) { - --info->count; - if (info->count == 0 && info->is_added) { - OFFLOAD_TRACE(1, "Calling COIBufferReleaseRef AddRef count = %d\n", - ((RefInfo *) ref_data[buf])->count); - BufferReleaseRef(buf); - info->is_added = 0; - } - } -} - -static int VTPauseSampling(void) -{ - int ret = -1; - int handle = open(sep_device, O_RDWR); - if (handle > 0) { - ret = ioctl(handle, SEP_IOCTL_PAUSE); - close(handle); - } - return ret; -} - -static int VTResumeSampling(void) -{ - int ret = -1; - int handle = open(sep_device, O_RDWR); - if (handle > 0) { - ret = ioctl(handle, SEP_IOCTL_RESUME); - close(handle); - } - return ret; -} -#endif // SEP_SUPPORT - -void OffloadDescriptor::offload( - uint32_t buffer_count, - void** buffers, - void* misc_data, - uint16_t misc_data_len, - void* return_data, - uint16_t return_data_len -) -{ - FunctionDescriptor *func = (FunctionDescriptor*) misc_data; - const char *name = func->data; - OffloadDescriptor ofld; - char *in_data = 0; - char *out_data = 0; - char *timer_data = 0; - - console_enabled = func->console_enabled; - timer_enabled = func->timer_enabled; - offload_report_level = func->offload_report_level; - offload_number = func->offload_number; - ofld.set_offload_number(func->offload_number); - -#ifdef SEP_SUPPORT - if (sep_monitor) { - if (__sync_fetch_and_add(&sep_counter, 1) == 0) { - OFFLOAD_DEBUG_TRACE(2, "VTResumeSampling\n"); - VTResumeSampling(); - } - } -#endif // SEP_SUPPORT - - OFFLOAD_DEBUG_TRACE_1(2, ofld.get_offload_number(), - c_offload_start_target_func, - "Offload \"%s\" started\n", name); - - // initialize timer data - OFFLOAD_TIMER_INIT(); - - OFFLOAD_TIMER_START(c_offload_target_total_time); - - OFFLOAD_TIMER_START(c_offload_target_descriptor_setup); - - // get input/output buffer addresses - if (func->in_datalen > 0 || func->out_datalen > 0) { - if (func->data_offset != 0) { - in_data = (char*) misc_data + func->data_offset; - out_data = (char*) return_data; - } - else { - char *inout_buf = (char*) buffers[--buffer_count]; - in_data = inout_buf; - out_data = inout_buf; - } - } - - // assign variable descriptors - ofld.m_vars_total = func->vars_num; - if (ofld.m_vars_total > 0) { - uint64_t var_data_len = ofld.m_vars_total * sizeof(VarDesc); - - ofld.m_vars = (VarDesc*) malloc(var_data_len); - if (ofld.m_vars == NULL) - LIBOFFLOAD_ERROR(c_malloc); - memcpy(ofld.m_vars, in_data, var_data_len); - - ofld.m_vars_extra = - (VarExtra*) malloc(ofld.m_vars_total * sizeof(VarExtra)); - if (ofld.m_vars == NULL) - LIBOFFLOAD_ERROR(c_malloc); - - in_data += var_data_len; - func->in_datalen -= var_data_len; - } - - // timer data - if (func->timer_enabled) { - uint64_t timer_data_len = OFFLOAD_TIMER_DATALEN(); - - timer_data = out_data; - out_data += timer_data_len; - func->out_datalen -= timer_data_len; - } - - // init Marshallers - ofld.m_in.init_buffer(in_data, func->in_datalen); - ofld.m_out.init_buffer(out_data, func->out_datalen); - - // copy buffers to offload descriptor - std::copy(buffers, buffers + buffer_count, - std::back_inserter(ofld.m_buffers)); - - OFFLOAD_TIMER_STOP(c_offload_target_descriptor_setup); - - // find offload entry address - OFFLOAD_TIMER_START(c_offload_target_func_lookup); - - offload_func_with_parms entry = (offload_func_with_parms) - __offload_entries.find_addr(name); - - if (entry == NULL) { -#if OFFLOAD_DEBUG > 0 - if (console_enabled > 2) { - __offload_entries.dump(); - } -#endif - LIBOFFLOAD_ERROR(c_offload_descriptor_offload, name); - exit(1); - } - - OFFLOAD_TIMER_STOP(c_offload_target_func_lookup); - - OFFLOAD_TIMER_START(c_offload_target_func_time); - - // execute offload entry - entry(&ofld); - - OFFLOAD_TIMER_STOP(c_offload_target_func_time); - - OFFLOAD_TIMER_STOP(c_offload_target_total_time); - - // copy timer data to the buffer - OFFLOAD_TIMER_TARGET_DATA(timer_data); - - OFFLOAD_DEBUG_TRACE(2, "Offload \"%s\" finished\n", name); - -#ifdef SEP_SUPPORT - if (sep_monitor) { - if (__sync_sub_and_fetch(&sep_counter, 1) == 0) { - OFFLOAD_DEBUG_TRACE(2, "VTPauseSampling\n"); - VTPauseSampling(); - } - } -#endif // SEP_SUPPORT -} - -void OffloadDescriptor::merge_var_descs( - VarDesc *vars, - VarDesc2 *vars2, - int vars_total -) -{ - // number of variable descriptors received from host and generated - // locally should match - if (m_vars_total < vars_total) { - LIBOFFLOAD_ERROR(c_merge_var_descs1); - exit(1); - } - - for (int i = 0; i < m_vars_total; i++) { - // instead of m_vars[i].type.src we will use m_vars_extra[i].type_src - - if (i < vars_total) { - // variable type must match - if (m_vars[i].type.bits != vars[i].type.bits) { - OFFLOAD_TRACE(2, - "m_vars[%d].type.bits=%08x, vars[%d].type.bits=%08x\n", - i, m_vars[i].type.bits, i, vars[i].type.bits); - LIBOFFLOAD_ERROR(c_merge_var_descs2); - exit(1); - } - - if (m_vars[i].type.src == c_extended_type) { - VarDescExtendedType *etype = - reinterpret_cast<VarDescExtendedType*>(vars[i].ptr); - m_vars_extra[i].type_src = etype->extended_type; - m_vars[i].ptr = etype->ptr; - } - else { - m_vars_extra[i].type_src = m_vars[i].type.src; - if (!(m_vars[i].flags.use_device_ptr && - m_vars[i].type.src == c_dv)) { - m_vars[i].ptr = vars[i].ptr; - } - } - // instead of m_vars[i].type.dst we will use m_vars_extra[i].type_dst - if (i < vars_total && m_vars[i].type.dst == c_extended_type) { - VarDescExtendedType *etype = - reinterpret_cast<VarDescExtendedType*>(vars[i].into); - m_vars_extra[i].type_dst = etype->extended_type; - m_vars[i].into = etype->ptr; - } - else { - m_vars_extra[i].type_dst = m_vars[i].type.dst; - m_vars[i].into = vars[i].into; - } - - const char *var_sname = ""; - if (vars2 != NULL) { - if (vars2[i].sname != NULL) { - var_sname = vars2[i].sname; - } - } - OFFLOAD_DEBUG_TRACE_1(2, get_offload_number(), c_offload_var, - " VarDesc %d, var=%s, %s, %s\n", - i, var_sname, - vardesc_direction_as_string[m_vars[i].direction.bits], - vardesc_type_as_string[m_vars_extra[i].type_src]); - if (vars2 != NULL && vars2[i].dname != NULL) { - OFFLOAD_TRACE(2, " into=%s, %s\n", vars2[i].dname, - vardesc_type_as_string[m_vars_extra[i].type_dst]); - } - } - else { - m_vars_extra[i].type_src = m_vars[i].type.src; - m_vars_extra[i].type_dst = m_vars[i].type.dst; - } - - OFFLOAD_TRACE(2, - " type_src=%d, type_dstn=%d, direction=%d, " - "alloc_if=%d, free_if=%d, align=%d, mic_offset=%d, flags=0x%x, " - "offset=%lld, size=%lld, count/disp=%lld, ptr=%p into=%p\n", - m_vars_extra[i].type_src, - m_vars_extra[i].type_dst, - m_vars[i].direction.bits, - m_vars[i].alloc_if, - m_vars[i].free_if, - m_vars[i].align, - m_vars[i].mic_offset, - m_vars[i].flags.bits, - m_vars[i].offset, - m_vars[i].size, - m_vars[i].count, - m_vars[i].ptr, - m_vars[i].into); - } -} - -void OffloadDescriptor::scatter_copyin_data() -{ - OFFLOAD_TIMER_START(c_offload_target_scatter_inputs); - - OFFLOAD_DEBUG_TRACE(2, "IN buffer @ %p size %lld\n", - m_in.get_buffer_start(), - m_in.get_buffer_size()); - OFFLOAD_DEBUG_DUMP_BYTES(2, m_in.get_buffer_start(), - m_in.get_buffer_size()); - - // receive data - for (int i = 0; i < m_vars_total; i++) { - bool src_is_for_mic = (m_vars[i].direction.out || - m_vars[i].into == NULL); - void** ptr_addr = src_is_for_mic ? - static_cast<void**>(m_vars[i].ptr) : - static_cast<void**>(m_vars[i].into); - int type = src_is_for_mic ? m_vars_extra[i].type_src : - m_vars_extra[i].type_dst; - bool is_static = src_is_for_mic ? - m_vars[i].flags.is_static : - m_vars[i].flags.is_static_dstn; - void *ptr = NULL; - - if (m_vars[i].flags.alloc_disp) { - int64_t offset = 0; - m_in.receive_data(&offset, sizeof(offset)); - } - if (VAR_TYPE_IS_DV_DATA_SLICE(type) || - VAR_TYPE_IS_DV_DATA(type)) { - ArrDesc *dvp = (type == c_dv_data_slice || type == c_dv_data)? - reinterpret_cast<ArrDesc*>(ptr_addr) : - *reinterpret_cast<ArrDesc**>(ptr_addr); - ptr_addr = reinterpret_cast<void**>(&dvp->Base); - } - // Set pointer values - switch (type) { - case c_data_ptr_array: - { - int j = m_vars[i].ptr_arr_offset; - int max_el = j + m_vars[i].count; - char *dst_arr_ptr = (src_is_for_mic)? - *(reinterpret_cast<char**>(m_vars[i].ptr)) : - reinterpret_cast<char*>(m_vars[i].into); - - // if is_pointer is 1 it means that pointer array itself - // is defined either via pointer or as class member. - // i.e. arr_ptr[0:5] or this->ARR[0:5] - if (m_vars[i].flags.is_pointer) { - int64_t offset = 0; - m_in.receive_data(&offset, sizeof(offset)); - dst_arr_ptr = *((char**)dst_arr_ptr) + offset; - } - for (; j < max_el; j++) { - if (src_is_for_mic) { - m_vars[j].ptr = - dst_arr_ptr + m_vars[j].ptr_arr_offset; - } - else { - m_vars[j].into = - dst_arr_ptr + m_vars[j].ptr_arr_offset; - } - } - } - break; - case c_data: - case c_void_ptr: - case c_void_ptr_ptr: - case c_cean_var: - case c_dv: - break; - - case c_string_ptr: - case c_data_ptr: - case c_string_ptr_ptr: - case c_data_ptr_ptr: - case c_cean_var_ptr: - case c_cean_var_ptr_ptr: - case c_dv_ptr: - // Don't need ptr_addr value for variables from stack buffer. - // Stack buffer address is set at var_desc with #0. - if (i != 0 && m_vars[i].flags.is_stack_buf) { - break; - } - if (TYPE_IS_PTR_TO_PTR(m_vars_extra[i].type_src) || - TYPE_IS_PTR_TO_PTR(m_vars_extra[i].type_dst)) { - int64_t offset; - - m_in.receive_data(&offset, sizeof(offset)); - ptr_addr = reinterpret_cast<void**>( - reinterpret_cast<char*>(*ptr_addr) + offset); - - } - - if (m_vars[i].alloc_if && !m_vars[i].flags.preallocated) { - void *buf = NULL; - if (m_vars[i].flags.sink_addr) { - m_in.receive_data(&buf, sizeof(buf)); - } - else { - buf = m_buffers.front(); - m_buffers.pop_front(); - } - if (buf) { - if (!is_static) { - if (!m_vars[i].flags.sink_addr) { - // increment buffer reference - OFFLOAD_TIMER_START(c_offload_target_add_buffer_refs); - BufferAddRef(buf); - OFFLOAD_TRACE(1, "Calling COIBufferAddRef %p\n", buf); - OFFLOAD_TIMER_STOP(c_offload_target_add_buffer_refs); - } - add_ref_count(buf, 0 == m_vars[i].flags.sink_addr); - OFFLOAD_TRACE(1, " AddRef count = %d\n", - ((RefInfo *) ref_data[buf])->count); - } - ptr = static_cast<char*>(buf) + - m_vars[i].mic_offset + - (m_vars[i].flags.is_stack_buf ? - 0 : m_vars[i].offset); - - } - *ptr_addr = ptr; - } - else if (m_vars[i].flags.sink_addr) { - void *buf; - m_in.receive_data(&buf, sizeof(buf)); - void *ptr = static_cast<char*>(buf) + - m_vars[i].mic_offset + - (m_vars[i].flags.is_stack_buf ? - 0 : m_vars[i].offset); - *ptr_addr = ptr; - } - break; - - case c_func_ptr: - case c_func_ptr_ptr: - break; - - case c_dv_data: - case c_dv_ptr_data: - case c_dv_data_slice: - case c_dv_ptr_data_slice: - if (m_vars[i].alloc_if) { - void *buf; - if (m_vars[i].flags.sink_addr) { - m_in.receive_data(&buf, sizeof(buf)); - } - else { - buf = m_buffers.front(); - m_buffers.pop_front(); - } - if (buf) { - if (!is_static) { - if (!m_vars[i].flags.sink_addr) { - // increment buffer reference - OFFLOAD_TIMER_START(c_offload_target_add_buffer_refs); - BufferAddRef(buf); - OFFLOAD_TIMER_STOP(c_offload_target_add_buffer_refs); - } - add_ref_count(buf, 0 == m_vars[i].flags.sink_addr); - } - ptr = static_cast<char*>(buf) + - m_vars[i].mic_offset + m_vars[i].offset; - } - *ptr_addr = ptr; - } - else if (m_vars[i].flags.sink_addr) { - void *buf; - m_in.receive_data(&buf, sizeof(buf)); - ptr = static_cast<char*>(buf) + - m_vars[i].mic_offset + m_vars[i].offset; - *ptr_addr = ptr; - } - break; - - default: - LIBOFFLOAD_ERROR(c_unknown_var_type, type); - abort(); - } - // Release obsolete buffers for stack of persistent objects. - // The vardesc with i==0 and flags.is_stack_buf==TRUE is always for - // stack buffer pointer. - if (i == 0 && - m_vars[i].flags.is_stack_buf && - !m_vars[i].direction.bits && - m_vars[i].alloc_if && - m_vars[i].size != 0) { - for (int j=0; j < m_vars[i].size; j++) { - void *buf; - m_in.receive_data(&buf, sizeof(buf)); - OFFLOAD_TRACE(4, "Releasing stack buffer %p\n", buf); - BufferReleaseRef(buf); - ref_data.erase(buf); - } - } - // Do copyin - switch (m_vars_extra[i].type_dst) { - case c_data_ptr_array: - break; - case c_data: - case c_void_ptr: - case c_void_ptr_ptr: - case c_cean_var: - if (m_vars[i].direction.in && - !m_vars[i].flags.is_static_dstn) { - int64_t size; - int64_t disp; - char* ptr = m_vars[i].into ? - static_cast<char*>(m_vars[i].into) : - static_cast<char*>(m_vars[i].ptr); - if (m_vars_extra[i].type_dst == c_cean_var) { - m_in.receive_data((&size), sizeof(int64_t)); - m_in.receive_data((&disp), sizeof(int64_t)); - } - else { - size = m_vars[i].size; - disp = 0; - } - m_in.receive_data(ptr + disp, size); - } - break; - - case c_dv: - if (m_vars[i].direction.bits || - m_vars[i].alloc_if || - m_vars[i].free_if) { - char* ptr = m_vars[i].into ? - static_cast<char*>(m_vars[i].into) : - static_cast<char*>(m_vars[i].ptr); - m_in.receive_data(ptr + sizeof(uint64_t), - m_vars[i].size - sizeof(uint64_t)); - } - break; - - case c_string_ptr: - case c_data_ptr: - case c_string_ptr_ptr: - case c_data_ptr_ptr: - case c_cean_var_ptr: - case c_cean_var_ptr_ptr: - case c_dv_ptr: - case c_dv_data: - case c_dv_ptr_data: - case c_dv_data_slice: - case c_dv_ptr_data_slice: - break; - - case c_func_ptr: - case c_func_ptr_ptr: - if (m_vars[i].direction.in) { - m_in.receive_func_ptr((const void**) m_vars[i].ptr); - } - break; - - default: - LIBOFFLOAD_ERROR(c_unknown_var_type, m_vars_extra[i].type_dst); - abort(); - } - } - - OFFLOAD_TRACE(1, "Total copyin data received from host: [%lld] bytes\n", - m_in.get_tfr_size()); - - OFFLOAD_TIMER_STOP(c_offload_target_scatter_inputs); - - OFFLOAD_TIMER_START(c_offload_target_compute); -} - -void OffloadDescriptor::gather_copyout_data() -{ - OFFLOAD_TIMER_STOP(c_offload_target_compute); - - OFFLOAD_TIMER_START(c_offload_target_gather_outputs); - - for (int i = 0; i < m_vars_total; i++) { - bool src_is_for_mic = (m_vars[i].direction.out || - m_vars[i].into == NULL); - if (m_vars[i].flags.is_stack_buf) { - continue; - } - switch (m_vars_extra[i].type_src) { - case c_data_ptr_array: - break; - case c_data: - case c_void_ptr: - case c_void_ptr_ptr: - case c_cean_var: - if (m_vars[i].direction.out && - !m_vars[i].flags.is_static) { - m_out.send_data( - static_cast<char*>(m_vars[i].ptr) + m_vars[i].disp, - m_vars[i].size); - } - break; - - case c_dv: - break; - - case c_string_ptr: - case c_data_ptr: - case c_string_ptr_ptr: - case c_data_ptr_ptr: - case c_cean_var_ptr: - case c_cean_var_ptr_ptr: - case c_dv_ptr: - if (m_vars[i].free_if && - src_is_for_mic && - !m_vars[i].flags.preallocated && - !m_vars[i].flags.is_static) { - void *buf = *static_cast<char**>(m_vars[i].ptr) - - m_vars[i].mic_offset - - (m_vars[i].flags.is_stack_buf? - 0 : m_vars[i].offset); - if (buf == NULL) { - break; - } - // decrement buffer reference count - OFFLOAD_TIMER_START(c_offload_target_release_buffer_refs); - BufReleaseRef(buf); - OFFLOAD_TIMER_STOP(c_offload_target_release_buffer_refs); - } - if (m_vars[i].flags.preallocated && m_vars[i].alloc_if) { - m_out.send_data((void*) m_vars[i].ptr, sizeof(void*)); - } - break; - - case c_func_ptr: - case c_func_ptr_ptr: - if (m_vars[i].direction.out) { - m_out.send_func_ptr(*((void**) m_vars[i].ptr)); - } - break; - - case c_dv_data: - case c_dv_ptr_data: - case c_dv_data_slice: - case c_dv_ptr_data_slice: - if (src_is_for_mic && - m_vars[i].free_if && - !m_vars[i].flags.is_static) { - ArrDesc *dvp = (m_vars_extra[i].type_src == c_dv_data || - m_vars_extra[i].type_src == c_dv_data_slice) ? - static_cast<ArrDesc*>(m_vars[i].ptr) : - *static_cast<ArrDesc**>(m_vars[i].ptr); - - void *buf = reinterpret_cast<char*>(dvp->Base) - - m_vars[i].mic_offset - - m_vars[i].offset; - - if (buf == NULL) { - break; - } - - // decrement buffer reference count - OFFLOAD_TIMER_START(c_offload_target_release_buffer_refs); - BufReleaseRef(buf); - OFFLOAD_TIMER_STOP(c_offload_target_release_buffer_refs); - } - break; - - default: - LIBOFFLOAD_ERROR(c_unknown_var_type, m_vars_extra[i].type_dst); - abort(); - } - - if (m_vars[i].into) { - switch (m_vars_extra[i].type_dst) { - case c_data_ptr_array: - break; - case c_data: - case c_void_ptr: - case c_void_ptr_ptr: - case c_cean_var: - case c_dv: - break; - - case c_string_ptr: - case c_data_ptr: - case c_string_ptr_ptr: - case c_data_ptr_ptr: - case c_cean_var_ptr: - case c_cean_var_ptr_ptr: - case c_dv_ptr: - if (m_vars[i].direction.in && - m_vars[i].free_if && - !m_vars[i].flags.is_static_dstn) { - void *buf = *static_cast<char**>(m_vars[i].into) - - m_vars[i].mic_offset - - (m_vars[i].flags.is_stack_buf? - 0 : m_vars[i].offset); - - if (buf == NULL) { - break; - } - // decrement buffer reference count - OFFLOAD_TIMER_START( - c_offload_target_release_buffer_refs); - BufReleaseRef(buf); - OFFLOAD_TIMER_STOP( - c_offload_target_release_buffer_refs); - } - break; - - case c_func_ptr: - case c_func_ptr_ptr: - break; - - case c_dv_data: - case c_dv_ptr_data: - case c_dv_data_slice: - case c_dv_ptr_data_slice: - if (m_vars[i].free_if && - m_vars[i].direction.in && - !m_vars[i].flags.is_static_dstn) { - ArrDesc *dvp = - (m_vars_extra[i].type_dst == c_dv_data_slice || - m_vars_extra[i].type_dst == c_dv_data) ? - static_cast<ArrDesc*>(m_vars[i].into) : - *static_cast<ArrDesc**>(m_vars[i].into); - void *buf = reinterpret_cast<char*>(dvp->Base) - - m_vars[i].mic_offset - - m_vars[i].offset; - - if (buf == NULL) { - break; - } - // decrement buffer reference count - OFFLOAD_TIMER_START( - c_offload_target_release_buffer_refs); - BufReleaseRef(buf); - OFFLOAD_TIMER_STOP( - c_offload_target_release_buffer_refs); - } - break; - - default: - LIBOFFLOAD_ERROR(c_unknown_var_type, m_vars_extra[i].type_dst); - abort(); - } - } - } - - OFFLOAD_DEBUG_TRACE(2, "OUT buffer @ p %p size %lld\n", - m_out.get_buffer_start(), - m_out.get_buffer_size()); - - OFFLOAD_DEBUG_DUMP_BYTES(2, - m_out.get_buffer_start(), - m_out.get_buffer_size()); - - OFFLOAD_DEBUG_TRACE_1(1, get_offload_number(), c_offload_copyout_data, - "Total copyout data sent to host: [%lld] bytes\n", - m_out.get_tfr_size()); - - OFFLOAD_TIMER_STOP(c_offload_target_gather_outputs); -} - -void __offload_target_init(void) -{ -#ifdef SEP_SUPPORT - const char* env_var = getenv(sep_monitor_env); - if (env_var != 0 && *env_var != '\0') { - sep_monitor = atoi(env_var); - } - env_var = getenv(sep_device_env); - if (env_var != 0 && *env_var != '\0') { - sep_device = env_var; - } -#endif // SEP_SUPPORT - - prefix = report_get_message_str(c_report_mic); - - // init frequency - mic_frequency = COIPerfGetCycleFrequency(); -} - -// User-visible offload API - -int _Offload_number_of_devices(void) -{ - return mic_engines_total; -} - -int _Offload_get_device_number(void) -{ - return mic_index; -} - -int _Offload_get_physical_device_number(void) -{ - uint32_t index; - EngineGetIndex(&index); - return index; -} diff --git a/liboffloadmic/runtime/offload_target.h b/liboffloadmic/runtime/offload_target.h deleted file mode 100644 index 8d2971b..0000000 --- a/liboffloadmic/runtime/offload_target.h +++ /dev/null @@ -1,129 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -// The parts of the offload library used only on the target - -#ifndef OFFLOAD_TARGET_H_INCLUDED -#define OFFLOAD_TARGET_H_INCLUDED - -#include "offload_common.h" -#include "coi/coi_server.h" - -// The offload descriptor. -class OffloadDescriptor -{ -public: - ~OffloadDescriptor() { - if (m_vars != 0) { - free(m_vars); - free(m_vars_extra); - } - } - - // Entry point for COI. Synchronously execute offloaded region given - // the provided buffers, misc and return data. - static void offload( - uint32_t buffer_count, - void** buffers, - void* misc_data, - uint16_t misc_data_len, - void* return_data, - uint16_t return_data_len - ); - - // scatters input data from in buffer to target variables - void scatter_copyin_data(); - - // gathers output data to the buffer - void gather_copyout_data(); - - // merges local variable descriptors with the descriptors received from - // host - void merge_var_descs(VarDesc *vars, VarDesc2 *vars2, int vars_total); - - int get_offload_number() const { - return m_offload_number; - } - - void set_offload_number(int number) { - m_offload_number = number; - } - -private: - // Constructor - OffloadDescriptor() : m_vars(0) - {} - -private: - typedef std::list<void*> BufferList; - - // The Marshaller for the inputs of the offloaded region. - Marshaller m_in; - - // The Marshaller for the outputs of the offloaded region. - Marshaller m_out; - - // List of buffers that are passed to dispatch call - BufferList m_buffers; - - // Variable descriptors received from host - VarDesc* m_vars; - int m_vars_total; - int m_offload_number; - - // extra data associated with each variable descriptor - struct VarExtra { - uint16_t type_src; - uint16_t type_dst; - }; - - VarExtra* m_vars_extra; -}; - -// one time target initialization in main -DLL_LOCAL extern void __offload_target_init(void); - -// logical device index -DLL_LOCAL extern int mic_index; - -// total number of available logical devices -DLL_LOCAL extern int mic_engines_total; - -// device frequency (from COI) -DLL_LOCAL extern uint64_t mic_frequency; - -struct RefInfo { - RefInfo(bool is_add, long amount):is_added(is_add),count(amount) - {} - bool is_added; - long count; -}; - -#endif // OFFLOAD_TARGET_H_INCLUDED diff --git a/liboffloadmic/runtime/offload_target_main.cpp b/liboffloadmic/runtime/offload_target_main.cpp deleted file mode 100644 index 68f7c30..0000000 --- a/liboffloadmic/runtime/offload_target_main.cpp +++ /dev/null @@ -1,37 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -extern "C" void __offload_target_main(void); - -int main(int argc, char ** argv) -{ - __offload_target_main(); - return 0; -} diff --git a/liboffloadmic/runtime/offload_timer.h b/liboffloadmic/runtime/offload_timer.h deleted file mode 100644 index 30a1149..0000000 --- a/liboffloadmic/runtime/offload_timer.h +++ /dev/null @@ -1,192 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#ifndef OFFLOAD_TIMER_H_INCLUDED -#define OFFLOAD_TIMER_H_INCLUDED - -#include <stdio.h> -#include <stdarg.h> -#include <stdint.h> -#include "liboffload_error_codes.h" - -DLL_LOCAL extern int timer_enabled; - -#ifdef TIMING_SUPPORT - -struct OffloadTargetTimerData { - uint64_t frequency; - struct { - uint64_t start; - uint64_t total; - } phases[c_offload_target_max_phase]; -}; - -struct OffloadHostTimerData { - // source file name and line number - const char* file; - int line; - - // host timer data - struct { - uint64_t start; - uint64_t total; - } phases[c_offload_host_max_phase]; - - uint64_t sent_bytes; - uint64_t received_bytes; - int card_number; - int offload_number; - - // target timer data - OffloadTargetTimerData target; - - // next element - OffloadHostTimerData *next; -}; - -#if HOST_LIBRARY - -DLL_LOCAL extern int offload_report_level; -DLL_LOCAL extern int offload_report_enabled; -#define OFFLOAD_REPORT_1 1 -#define OFFLOAD_REPORT_2 2 -#define OFFLOAD_REPORT_3 3 -#define OFFLOAD_REPORT_ON 1 -#define OFFLOAD_REPORT_OFF 0 - -#define OFFLOAD_TIMER_DATALEN() \ - ((timer_enabled || (offload_report_level && offload_report_enabled)) ? \ - ((1 + c_offload_target_max_phase) * sizeof(uint64_t)) : 0) - -#define OFFLOAD_TIMER_START(timer_data, pnode) \ - if (timer_enabled || \ - (offload_report_level && offload_report_enabled)) { \ - offload_timer_start(timer_data, pnode); \ - } - -#define OFFLOAD_TIMER_STOP(timer_data, pnode) \ - if (timer_enabled || \ - (offload_report_level && offload_report_enabled)) { \ - offload_timer_stop(timer_data, pnode); \ - } - -#define OFFLOAD_TIMER_INIT(file, line) \ - offload_timer_init(file, line); - -#define OFFLOAD_TIMER_TARGET_DATA(timer_data, data) \ - if (timer_enabled || \ - (offload_report_level && offload_report_enabled)) { \ - offload_timer_fill_target_data(timer_data, data); \ - } - -#define OFFLOAD_TIMER_HOST_SDATA(timer_data, data) \ - if (offload_report_level && offload_report_enabled) { \ - offload_timer_fill_host_sdata(timer_data, data); \ - } - -#define OFFLOAD_TIMER_HOST_RDATA(timer_data, data) \ - if (offload_report_level && offload_report_enabled) { \ - offload_timer_fill_host_rdata(timer_data, data); \ - } - -#define OFFLOAD_TIMER_HOST_MIC_NUM(timer_data, data) \ - if (offload_report_level && offload_report_enabled) { \ - offload_timer_fill_host_mic_num(timer_data, data); \ - } - -extern DLL_LOCAL void offload_timer_start(OffloadHostTimerData *, - OffloadHostPhase t_node); -extern DLL_LOCAL void offload_timer_stop(OffloadHostTimerData *, - OffloadHostPhase t_node); -extern DLL_LOCAL OffloadHostTimerData * offload_timer_init(const char *file, int line); -extern DLL_LOCAL void offload_timer_fill_target_data(OffloadHostTimerData *, - void *data); -extern DLL_LOCAL void offload_timer_fill_host_sdata(OffloadHostTimerData *, - uint64_t sent_bytes); -extern DLL_LOCAL void offload_timer_fill_host_rdata(OffloadHostTimerData *, - uint64_t sent_bytes); -extern DLL_LOCAL void offload_timer_fill_host_mic_num(OffloadHostTimerData *, - int card_number); - -// Utility structure for starting/stopping timer -struct OffloadTimer { - OffloadTimer(OffloadHostTimerData *data, OffloadHostPhase phase) : - m_data(data), - m_phase(phase) - { - OFFLOAD_TIMER_START(m_data, m_phase); - } - - ~OffloadTimer() - { - OFFLOAD_TIMER_STOP(m_data, m_phase); - } - -private: - OffloadHostTimerData* m_data; - OffloadHostPhase m_phase; -}; - -#else - -#define OFFLOAD_TIMER_DATALEN() \ - ((timer_enabled) ? \ - ((1 + c_offload_target_max_phase) * sizeof(uint64_t)) : 0) - -#define OFFLOAD_TIMER_START(pnode) \ - if (timer_enabled) offload_timer_start(pnode); - -#define OFFLOAD_TIMER_STOP(pnode) \ - if (timer_enabled) offload_timer_stop(pnode); - -#define OFFLOAD_TIMER_INIT() \ - if (timer_enabled) offload_timer_init(); - -#define OFFLOAD_TIMER_TARGET_DATA(data) \ - if (timer_enabled) offload_timer_fill_target_data(data); - -extern DLL_LOCAL void offload_timer_start(OffloadTargetPhase t_node); -extern DLL_LOCAL void offload_timer_stop(OffloadTargetPhase t_node); -extern DLL_LOCAL void offload_timer_init(void); -extern DLL_LOCAL void offload_timer_fill_target_data(void *data); - -#endif // HOST_LIBRARY - -#else // TIMING_SUPPORT - -#define OFFLOAD_TIMER_START(...) -#define OFFLOAD_TIMER_STOP(...) -#define OFFLOAD_TIMER_INIT(...) -#define OFFLOAD_TIMER_TARGET_DATA(...) -#define OFFLOAD_TIMER_DATALEN(...) (0) - -#endif // TIMING_SUPPORT - -#endif // OFFLOAD_TIMER_H_INCLUDED diff --git a/liboffloadmic/runtime/offload_timer_host.cpp b/liboffloadmic/runtime/offload_timer_host.cpp deleted file mode 100644 index 3d93508..0000000 --- a/liboffloadmic/runtime/offload_timer_host.cpp +++ /dev/null @@ -1,379 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#include "offload_timer.h" - -#ifdef __INTEL_COMPILER -#include <ia32intrin.h> -#else // __INTEL_COMPILER -#include <x86intrin.h> -#endif // __INTEL_COMPILER - -#include "offload_host.h" -#include <sstream> -#include <iostream> -#include <iomanip> - -int timer_enabled = 0; - -#ifdef TIMING_SUPPORT - -int offload_report_level = 0; -int offload_report_enabled = 1; - -static const int host_timer_prefix_spaces[] = { - /*c_offload_host_setup_buffers*/ 0, - /*c_offload_host_initialize*/ 2, - /*c_offload_host_target_acquire*/ 2, - /*c_offload_host_wait_deps*/ 2, - /*c_offload_host_setup_buffers*/ 2, - /*c_offload_host_alloc_buffers*/ 4, - /*c_offload_host_setup_misc_data*/ 2, - /*c_offload_host_alloc_data_buffer*/ 4, - /*c_offload_host_send_pointers*/ 2, - /*c_offload_host_gather_inputs*/ 2, - /*c_offload_host_map_in_data_buffer*/ 4, - /*c_offload_host_unmap_in_data_buffer*/ 4, - /*c_offload_host_start_compute*/ 2, - /*c_offload_host_wait_compute*/ 2, - /*c_offload_host_start_buffers_reads*/ 2, - /*c_offload_host_scatter_outputs*/ 2, - /*c_offload_host_map_out_data_buffer*/ 4, - /*c_offload_host_unmap_out_data_buffer*/ 4, - /*c_offload_host_wait_buffers_reads*/ 2, - /*c_offload_host_destroy_buffers*/ 2 -}; - -const static int target_timer_prefix_spaces[] = { -/*c_offload_target_total_time*/ 0, -/*c_offload_target_descriptor_setup*/ 2, -/*c_offload_target_func_lookup*/ 2, -/*c_offload_target_func_time*/ 2, -/*c_offload_target_scatter_inputs*/ 4, -/*c_offload_target_add_buffer_refs*/ 6, -/*c_offload_target_compute*/ 4, -/*c_offload_target_gather_outputs*/ 4, -/*c_offload_target_release_buffer_refs*/ 6 -}; - -static OffloadHostTimerData* timer_data_head; -static OffloadHostTimerData* timer_data_tail; -static mutex_t timer_data_mutex; - -static void offload_host_phase_name(std::stringstream &ss, int p_node); -static void offload_target_phase_name(std::stringstream &ss, int p_node); - -extern void Offload_Timer_Print(void) -{ - std::string buf; - std::stringstream ss; - const char *stars = - "**************************************************************"; - - ss << "\n\n" << stars << "\n"; - ss << " "; - ss << report_get_message_str(c_report_title) << "\n"; - ss << stars << "\n"; - double frequency = cpu_frequency; - - for (OffloadHostTimerData *pnode = timer_data_head; - pnode != 0; pnode = pnode->next) { - ss << " "; - ss << report_get_message_str(c_report_from_file) << " "<< pnode->file; - ss << report_get_message_str(c_report_line) << " " << pnode->line; - ss << "\n"; - for (int i = 0; i < c_offload_host_max_phase ; i++) { - ss << " "; - offload_host_phase_name(ss, i); - ss << " " << std::fixed << std::setprecision(5); - ss << (double)pnode->phases[i].total / frequency << "\n"; - } - - for (int i = 0; i < c_offload_target_max_phase ; i++) { - double time = 0; - if (pnode->target.frequency != 0) { - time = (double) pnode->target.phases[i].total / - (double) pnode->target.frequency; - } - ss << " "; - offload_target_phase_name(ss, i); - ss << " " << std::fixed << std::setprecision(5); - ss << time << "\n"; - } - } - - buf = ss.str(); - fprintf(stdout, buf.data()); - fflush(stdout); -} - -extern void Offload_Report_Prolog(OffloadHostTimerData *pnode) -{ - double frequency = cpu_frequency; - std::string buf; - std::stringstream ss; - - if (pnode) { - // [Offload] [Mic 0] [File] file.c - ss << "[" << report_get_message_str(c_report_offload) << "] ["; - ss << report_get_message_str(c_report_mic) << " "; - ss << pnode->card_number << "] ["; - ss << report_get_message_str(c_report_file); - ss << "] " << pnode->file << "\n"; - - // [Offload] [Mic 0] [Line] 1234 - ss << "[" << report_get_message_str(c_report_offload) << "] ["; - ss << report_get_message_str(c_report_mic) << " "; - ss << pnode->card_number << "] ["; - ss << report_get_message_str(c_report_line); - ss << "] " << pnode->line << "\n"; - - // [Offload] [Mic 0] [Tag] Tag 1 - ss << "[" << report_get_message_str(c_report_offload) << "] ["; - ss << report_get_message_str(c_report_mic) << " "; - ss << pnode->card_number << "] ["; - ss << report_get_message_str(c_report_tag); - ss << "] " << report_get_message_str(c_report_tag); - ss << " " << pnode->offload_number << "\n"; - - buf = ss.str(); - fprintf(stdout, buf.data()); - fflush(stdout); - } -} - -extern void Offload_Report_Epilog(OffloadHostTimerData * timer_data) -{ - double frequency = cpu_frequency; - std::string buf; - std::stringstream ss; - - OffloadHostTimerData *pnode = timer_data; - - if (!pnode) { - return; - } - ss << "[" << report_get_message_str(c_report_offload) << "] ["; - ss << report_get_message_str(c_report_host) << "] ["; - ss << report_get_message_str(c_report_tag) << " "; - ss << pnode->offload_number << "] ["; - ss << report_get_message_str(c_report_cpu_time) << "] "; - ss << std::fixed << std::setprecision(6); - ss << (double) pnode->phases[0].total / frequency; - ss << report_get_message_str(c_report_seconds) << "\n"; - - if (offload_report_level >= OFFLOAD_REPORT_2) { - ss << "[" << report_get_message_str(c_report_offload) << "] ["; - ss << report_get_message_str(c_report_mic); - ss << " " << pnode->card_number; - ss << "] [" << report_get_message_str(c_report_tag) << " "; - ss << pnode->offload_number << "] ["; - ss << report_get_message_str(c_report_cpu_to_mic_data) << "] "; - ss << pnode->sent_bytes << " "; - ss << report_get_message_str(c_report_bytes) << "\n"; - } - - double time = 0; - if (pnode->target.frequency != 0) { - time = (double) pnode->target.phases[0].total / - (double) pnode->target.frequency; - } - ss << "[" << report_get_message_str(c_report_offload) << "] ["; - ss << report_get_message_str(c_report_mic) << " "; - ss << pnode->card_number<< "] ["; - ss << report_get_message_str(c_report_tag) << " "; - ss << pnode->offload_number << "] ["; - ss << report_get_message_str(c_report_mic_time) << "] "; - ss << std::fixed << std::setprecision(6) << time; - ss << report_get_message_str(c_report_seconds) << "\n"; - - if (offload_report_level >= OFFLOAD_REPORT_2) { - ss << "[" << report_get_message_str(c_report_offload) << "] ["; - ss << report_get_message_str(c_report_mic); - ss << " " << pnode->card_number; - ss << "] [" << report_get_message_str(c_report_tag) << " "; - ss << pnode->offload_number << "] ["; - ss << report_get_message_str(c_report_mic_to_cpu_data) << "] "; - ss << pnode->received_bytes << " "; - ss << report_get_message_str(c_report_bytes) << "\n"; - } - ss << "\n"; - - buf = ss.str(); - fprintf(stdout, buf.data()); - fflush(stdout); - - offload_report_free_data(timer_data); -} - -extern void offload_report_free_data(OffloadHostTimerData * timer_data) -{ - OffloadHostTimerData *pnode_last = NULL; - - for (OffloadHostTimerData *pnode = timer_data_head; - pnode != 0; pnode = pnode->next) { - if (timer_data == pnode) { - if (pnode_last) { - pnode_last->next = pnode->next; - } - else { - timer_data_head = pnode->next; - } - OFFLOAD_FREE(pnode); - break; - } - pnode_last = pnode; - } -} - -static void fill_buf_with_spaces(std::stringstream &ss, int num) -{ - for (; num > 0; num--) { - ss << " "; - } -} - -static void offload_host_phase_name(std::stringstream &ss, int p_node) -{ - int prefix_spaces; - int str_length; - int tail_length; - const int message_length = 40; - char const *str; - - str = report_get_host_stage_str(p_node); - prefix_spaces = host_timer_prefix_spaces[p_node]; - fill_buf_with_spaces(ss, prefix_spaces); - str_length = strlen(str); - ss << str; - tail_length = message_length - prefix_spaces - str_length; - tail_length = tail_length > 0? tail_length : 1; - fill_buf_with_spaces(ss, tail_length); -} - -static void offload_target_phase_name(std::stringstream &ss, int p_node) -{ - int prefix_spaces; - int str_length; - const int message_length = 40; - int tail_length; - char const *str; - - str = report_get_target_stage_str(p_node); - prefix_spaces = target_timer_prefix_spaces[p_node]; - fill_buf_with_spaces(ss, prefix_spaces); - str_length = strlen(str); - ss << str; - tail_length = message_length - prefix_spaces - str_length; - tail_length = (tail_length > 0)? tail_length : 1; - fill_buf_with_spaces(ss, tail_length); -} - -void offload_timer_start(OffloadHostTimerData * timer_data, - OffloadHostPhase p_type) -{ - timer_data->phases[p_type].start = _rdtsc(); -} - -void offload_timer_stop(OffloadHostTimerData * timer_data, - OffloadHostPhase p_type) -{ - timer_data->phases[p_type].total += _rdtsc() - - timer_data->phases[p_type].start; -} - -void offload_timer_fill_target_data(OffloadHostTimerData * timer_data, - void *buf) -{ - uint64_t *data = (uint64_t*) buf; - - timer_data->target.frequency = *data++; - for (int i = 0; i < c_offload_target_max_phase; i++) { - timer_data->target.phases[i].total = *data++; - } -} - -void offload_timer_fill_host_sdata(OffloadHostTimerData * timer_data, - uint64_t sent_bytes) -{ - if (timer_data) { - timer_data->sent_bytes += sent_bytes; - } -} - -void offload_timer_fill_host_rdata(OffloadHostTimerData * timer_data, - uint64_t received_bytes) -{ - if (timer_data) { - timer_data->received_bytes += received_bytes; - } -} - -void offload_timer_fill_host_mic_num(OffloadHostTimerData * timer_data, - int card_number) -{ - if (timer_data) { - timer_data->card_number = card_number; - } -} - -OffloadHostTimerData* offload_timer_init(const char *file, int line) -{ - static bool first_time = true; - OffloadHostTimerData* timer_data = NULL; - - timer_data_mutex.lock(); - { - if (timer_enabled || - (offload_report_level && offload_report_enabled)) { - timer_data = (OffloadHostTimerData*) - OFFLOAD_MALLOC(sizeof(OffloadHostTimerData), 0); - memset(timer_data, 0, sizeof(OffloadHostTimerData)); - - timer_data->offload_number = OFFLOAD_DEBUG_INCR_OFLD_NUM() - 1; - - if (timer_data_head == 0) { - timer_data_head = timer_data; - timer_data_tail = timer_data; - } - else { - timer_data_tail->next = timer_data; - timer_data_tail = timer_data; - } - - timer_data->file = file; - timer_data->line = line; - } - } - timer_data_mutex.unlock(); - return timer_data; -} - -#endif // TIMING_SUPPORT diff --git a/liboffloadmic/runtime/offload_timer_target.cpp b/liboffloadmic/runtime/offload_timer_target.cpp deleted file mode 100644 index 860f297..0000000 --- a/liboffloadmic/runtime/offload_timer_target.cpp +++ /dev/null @@ -1,87 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#include "offload_timer.h" -#include "offload_target.h" - -#ifdef __INTEL_COMPILER -#include <ia32intrin.h> -#else // __INTEL_COMPILER -#include <x86intrin.h> -#endif // __INTEL_COMPILER - - - -int timer_enabled = 0; - -#ifdef TIMING_SUPPORT - -#if defined(LINUX) || defined(FREEBSD) -static __thread OffloadTargetTimerData timer_data; -#else // WINNT -static __declspec(thread) OffloadTargetTimerData timer_data; -#endif // defined(LINUX) || defined(FREEBSD) - - -void offload_timer_start( - OffloadTargetPhase p_type -) -{ - timer_data.phases[p_type].start = _rdtsc(); -} - -void offload_timer_stop( - OffloadTargetPhase p_type -) -{ - timer_data.phases[p_type].total += _rdtsc() - - timer_data.phases[p_type].start; -} - -void offload_timer_init() -{ - memset(&timer_data, 0, sizeof(OffloadTargetTimerData)); -} - -void offload_timer_fill_target_data( - void *buf -) -{ - uint64_t *data = (uint64_t*) buf; - - timer_data.frequency = mic_frequency; - memcpy(data++, &(timer_data.frequency), sizeof(uint64_t)); - - for (int i = 0; i < c_offload_target_max_phase; i++) { - memcpy(data++, &(timer_data.phases[i].total), sizeof(uint64_t)); - } -} - -#endif // TIMING_SUPPORT diff --git a/liboffloadmic/runtime/offload_trace.cpp b/liboffloadmic/runtime/offload_trace.cpp deleted file mode 100644 index 8d69c28..0000000 --- a/liboffloadmic/runtime/offload_trace.cpp +++ /dev/null @@ -1,409 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#include "offload_trace.h" -#include <stdio.h> -#include <stdlib.h> -#include <stdint.h> -#include <sstream> -#include "liboffload_error_codes.h" - -extern const char *prefix; - -#if !HOST_LIBRARY -extern int mic_index; -#endif - -// The debug routines - -static const char * offload_stage(std::stringstream &ss, - int offload_number, - const char *tag, - const char *text, - bool print_tag) -{ - ss << "[" << report_get_message_str(c_report_offload) << "]"; -#if HOST_LIBRARY - ss << " [" << prefix << "]"; - if (print_tag) { - ss << " [" << report_get_message_str(c_report_tag); - ss << " " << offload_number << "]"; - } - else { - ss << " "; - } - ss << " [" << tag << "]"; - ss << " " << text; -#else - ss << " [" << prefix << " " << mic_index << "]"; - if (print_tag) { - ss << " [" << report_get_message_str(c_report_tag); - ss << " " << offload_number << "]"; - } - ss << " [" << tag << "]"; - ss << " " << text; -#endif - return 0; -} - -static const char * offload_message_2str(std::stringstream &ss, - int offload_number, - const char *tag, - const char *text) -{ - ss << "[" << report_get_message_str(c_report_offload) << "]"; - ss << " [" << prefix << "]"; - ss << " [" << report_get_message_str(c_report_tag); - ss << " " << offload_number << "]"; - ss << " [" << tag << "]"; - ss << " " << text; - return 0; -} - -void offload_stage_print(int stage, int offload_number, ...) -{ - std::string buf; - std::stringstream ss; - char const *str1; - char const *str2; - va_list va_args; - va_start(va_args, offload_number); - va_arg(va_args, char*); - - switch (stage) { - case c_offload_start: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_start); - offload_stage(ss, offload_number, str1, str2, true); - break; - case c_offload_init: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_init); - offload_stage(ss, offload_number, str1, str2, false); - ss << " " << report_get_message_str(c_report_logical_card); - ss << " " << va_arg(va_args, int); - ss << " = " << report_get_message_str(c_report_physical_card); - ss << " " << va_arg(va_args, int); - break; - case c_offload_register: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_register); - offload_stage(ss, offload_number, str1, str2, true); - break; - case c_offload_init_func: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_init_func); - offload_stage(ss, offload_number, str1, str2, true); - ss << ": " << va_arg(va_args, char*); - break; - case c_offload_create_buf_host: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_create_buf_host); - offload_stage(ss, offload_number, str1, str2, true); - ss << ": base=0x" << std::hex << va_arg(va_args, uint64_t); - ss << " length=" << std::dec << va_arg(va_args, uint64_t); - break; - case c_offload_create_buf_mic: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_create_buf_mic); - offload_stage(ss, offload_number, str1, str2, true); - ss << ": size=" << va_arg(va_args, uint64_t); - ss << " offset=" << va_arg(va_args, int); - if (va_arg(va_args,int)) - ss << " (2M page)"; - break; - case c_offload_send_pointer_data: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_send_pointer_data); - offload_stage(ss, offload_number, str1, str2, true); - break; - case c_offload_sent_pointer_data: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_sent_pointer_data); - offload_stage(ss, offload_number, str1, str2, true); - ss << " " << va_arg(va_args, uint64_t); - break; - case c_offload_gather_copyin_data: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_gather_copyin_data); - offload_stage(ss, offload_number, str1, str2, true); - break; - case c_offload_copyin_data: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_copyin_data); - offload_stage(ss, offload_number, str1, str2, true); - ss << " " << va_arg(va_args, uint64_t) << " "; - break; - case c_offload_compute: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_compute); - offload_stage(ss, offload_number, str1, str2, true); - break; - case c_offload_receive_pointer_data: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_receive_pointer_data); - offload_stage(ss, offload_number, str1, str2, true); - break; - case c_offload_received_pointer_data: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_received_pointer_data); - offload_stage(ss, offload_number, str1, str2, true); - ss << " " << va_arg(va_args, uint64_t); - break; - case c_offload_start_target_func: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_start_target_func); - offload_stage(ss, offload_number, str1, str2, true); - ss << ": " << va_arg(va_args, char*); - break; - case c_offload_var: - str1 = report_get_message_str(c_report_var); - offload_stage(ss, offload_number, str1, " ", true); - va_arg(va_args, int); - ss << va_arg(va_args, char*); - ss << " " << " " << va_arg(va_args, char*); - break; - case c_offload_scatter_copyin_data: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_scatter_copyin_data); - offload_stage(ss, offload_number, str1, str2, true); - break; - case c_offload_gather_copyout_data: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_gather_copyout_data); - offload_stage(ss, offload_number, str1, str2, true); - break; - case c_offload_scatter_copyout_data: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_scatter_copyout_data); - offload_stage(ss, offload_number, str1, str2, true); - break; - case c_offload_copyout_data: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_copyout_data); - offload_stage(ss, offload_number, str1, str2, true); - ss << " " << va_arg(va_args, uint64_t); - break; - case c_offload_signal: - { - uint64_t *signal; - str1 = report_get_message_str(c_report_state_signal); - str2 = report_get_message_str(c_report_signal); - offload_message_2str(ss, offload_number, str1, str2); - signal = va_arg(va_args, uint64_t*); - if (signal) - ss << " 0x" << std::hex << *signal; - else - ss << " none"; - } - break; - case c_offload_stream: - { - int64_t stream; - str1 = report_get_message_str(c_report_state_stream); - str2 = report_get_message_str(c_report_stream); - offload_message_2str(ss, offload_number, str1, str2); - stream = va_arg(va_args, int64_t); - if (stream) - ss << " 0x" << std::hex << stream; - else - ss << " none"; - } - break; - case c_offload_wait: - { - int count; - OffloadWaitKind kind; - uint64_t **signal; - kind = (enum OffloadWaitKind) va_arg(va_args, int); - // kind == c_offload_wait_signal for signal; - // other kinds are for stream - if (kind == c_offload_wait_signal) { - str1 = report_get_message_str(c_report_state_signal); - } - else { - str1 = report_get_message_str(c_report_state_stream); - } - str2 = report_get_message_str(c_report_wait); - offload_message_2str(ss, offload_number, str1, str2); - count = va_arg(va_args, int); - signal = va_arg(va_args, uint64_t**); - if (count) { - if (kind == c_offload_wait_signal) { - while (count) { - ss << " " << std::hex << signal[count-1]; - count--; - } - } - else if (kind == c_offload_wait_stream) { - ss << signal; - } - else { - ss << " all"; - } - } - else - ss << " none"; - } - break; - case c_offload_unregister: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_unregister); - offload_stage(ss, offload_number, str1, str2, false); - break; - case c_offload_destroy: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_destroy); - offload_stage(ss, offload_number, str1, str2, true); - break; - case c_offload_myoinit: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_myoinit); - offload_stage(ss, offload_number, str1, str2, false); - break; - case c_offload_myoregister: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_myoregister); - offload_stage(ss, offload_number, str1, str2, false); - break; - case c_offload_myofini: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_myofini); - offload_stage(ss, offload_number, str1, str2, false); - break; - case c_offload_mic_myo_shared: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_mic_myo_shared); - offload_stage(ss, offload_number, str1, str2, false); - ss << " " << va_arg(va_args, char*); - break; - case c_offload_mic_myo_fptr: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_mic_myo_fptr); - offload_stage(ss, offload_number, str1, str2, false); - ss << " " << va_arg(va_args, char*); - break; - case c_offload_myosharedmalloc: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_myosharedmalloc); - offload_stage(ss, offload_number, str1, str2, false); - va_arg(va_args, char*); - ss << " " << va_arg(va_args, size_t); - break; - case c_offload_myosharedfree: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_myosharedfree); - offload_stage(ss, offload_number, str1, str2, false); - break; - case c_offload_myosharedalignedmalloc: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_myosharedalignedmalloc); - offload_stage(ss, offload_number, str1, str2, false); - va_arg(va_args, char*); - ss << " " << va_arg(va_args, size_t); - ss << " " << va_arg(va_args, size_t); - break; - case c_offload_myosharedalignedfree: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_myosharedalignedfree); - offload_stage(ss, offload_number, str1, str2, false); - ss << " " << va_arg(va_args, size_t); - break; - case c_offload_myoacquire: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_myoacquire); - offload_stage(ss, offload_number, str1, str2, false); - break; - case c_offload_myorelease: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_myorelease); - offload_stage(ss, offload_number, str1, str2, false); - break; - case c_offload_myosupportsfeature: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_myosupportsfeature); - offload_stage(ss, offload_number, str1, str2, false); - va_arg(va_args, int); - ss << " " << va_arg(va_args, int); - ss << " " << va_arg(va_args, int); - ss << " " << va_arg(va_args, int); - break; - case c_offload_myosharedarenacreate: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_myosharedarenacreate); - offload_stage(ss, offload_number, str1, str2, false); - va_arg(va_args, char*); - ss << " " << va_arg(va_args, int); - ss << " " << va_arg(va_args, int); - ss << " " << va_arg(va_args, unsigned int); - break; - case c_offload_myosharedalignedarenamalloc: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_myosharedalignedarenamalloc); - offload_stage(ss, offload_number, str1, str2, false); - va_arg(va_args, char*); - ss << " " << va_arg(va_args, int); - ss << " " << va_arg(va_args, size_t); - ss << " " << va_arg(va_args, size_t); - break; - case c_offload_myosharedalignedarenafree: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_myosharedalignedarenafree); - offload_stage(ss, offload_number, str1, str2, false); - va_arg(va_args, char*); - ss << " " << va_arg(va_args, int); - ss << " " << va_arg(va_args, size_t); - break; - case c_offload_myoarenaacquire: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_myoarenaacquire); - offload_stage(ss, offload_number, str1, str2, false); - va_arg(va_args, char*); - ss << " " << va_arg(va_args, int); - break; - case c_offload_myoarenarelease: - str1 = report_get_message_str(c_report_state); - str2 = report_get_message_str(c_report_myoarenarelease); - offload_stage(ss, offload_number, str1, str2, false); - va_arg(va_args, char*); - ss << " " << va_arg(va_args, int); - break; - default: - LIBOFFLOAD_ERROR(c_report_unknown_trace_node); - abort(); - } - ss << "\n"; - buf = ss.str(); - fprintf(stdout, buf.data()); - fflush(stdout); - - va_end(va_args); - return; -} diff --git a/liboffloadmic/runtime/offload_trace.h b/liboffloadmic/runtime/offload_trace.h deleted file mode 100644 index e48aa01..0000000 --- a/liboffloadmic/runtime/offload_trace.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -// The parts of the offload library common to host and target -#include "offload_util.h" - -DLL_LOCAL void offload_stage_print(int stage, int offload_number, ...); - -enum OffloadTraceStage { - // Total time spent on the target - c_offload_start = 0, - c_offload_init, - c_offload_register, - c_offload_init_func, - c_offload_create_buf_host, - c_offload_create_buf_mic, - c_offload_send_pointer_data, - c_offload_sent_pointer_data, - c_offload_gather_copyin_data, - c_offload_copyin_data, - c_offload_compute, - c_offload_receive_pointer_data, - c_offload_received_pointer_data, - c_offload_start_target_func, - c_offload_var, - c_offload_scatter_copyin_data, - c_offload_gather_copyout_data, - c_offload_scatter_copyout_data, - c_offload_copyout_data, - c_offload_signal, - c_offload_wait, - c_offload_unregister, - c_offload_destroy, - c_offload_finish, - c_offload_myoinit, - c_offload_myoregister, - c_offload_mic_myo_shared, - c_offload_mic_myo_fptr, - c_offload_myosharedmalloc, - c_offload_myosharedfree, - c_offload_myosharedalignedmalloc, - c_offload_myosharedalignedfree, - c_offload_myoacquire, - c_offload_myorelease, - c_offload_myofini, - c_offload_myosupportsfeature, - c_offload_myosharedarenacreate, - c_offload_myosharedalignedarenamalloc, - c_offload_myosharedalignedarenafree, - c_offload_myoarenaacquire, - c_offload_myoarenarelease, - c_offload_stream -}; - -enum OffloadWaitKind { - c_offload_wait_signal = 0, - c_offload_wait_stream, - c_offload_wait_all_streams -}; diff --git a/liboffloadmic/runtime/offload_util.cpp b/liboffloadmic/runtime/offload_util.cpp deleted file mode 100644 index bb43487..0000000 --- a/liboffloadmic/runtime/offload_util.cpp +++ /dev/null @@ -1,226 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#include "offload_util.h" -#include <errno.h> -#include "liboffload_error_codes.h" - -#ifdef TARGET_WINNT -void *thread_getspecific(pthread_key_t key) -{ - if (key == 0) { - return NULL; - } - else { - return TlsGetValue(key); - } -} - -int thread_setspecific(pthread_key_t key, const void *value) -{ - return (TlsSetValue(key, (LPVOID)value)) ? 0 : GetLastError(); -} -#endif // TARGET_WINNT - -bool __offload_parse_size_string(const char *str, uint64_t &new_size) -{ - uint64_t val; - char *suffix; - - errno = 0; -#ifdef TARGET_WINNT - val = strtoul(str, &suffix, 10); -#else // TARGET_WINNT - val = strtoull(str, &suffix, 10); -#endif // TARGET_WINNT - if (errno != 0 || suffix == str) { - return false; - } - - if (suffix[0] == '\0') { - // default is Kilobytes - new_size = val * 1024; - return true; - } - else if (suffix[1] == '\0') { - // Optional suffixes: B (bytes), K (Kilobytes), M (Megabytes), - // G (Gigabytes), or T (Terabytes) specify the units. - switch (suffix[0]) { - case 'b': - case 'B': - new_size = val; - break; - - case 'k': - case 'K': - new_size = val * 1024; - break; - - case 'm': - case 'M': - new_size = val * 1024 * 1024; - break; - - case 'g': - case 'G': - new_size = val * 1024 * 1024 * 1024; - break; - - case 't': - case 'T': - new_size = val * 1024 * 1024 * 1024 * 1024; - break; - - default: - return false; - } - return true; - } - - return false; -} - -bool __offload_parse_int_string(const char *str, int64_t &value) -{ - int64_t val; - char *suffix; - - errno = 0; -#ifdef TARGET_WINNT - val = strtol(str, &suffix, 0); -#else - val = strtoll(str, &suffix, 0); -#endif - if (errno == 0 && suffix != str && *suffix == '\0') { - value = val; - return true; - } - return false; -} - -#ifdef TARGET_WINNT -extern void* DL_open(const char *path) -{ - void *handle; - int error_mode; - - /* - * do not display message box with error if it the call below fails to - * load dynamic library. - */ - error_mode = SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOOPENFILEERRORBOX); - - /* load dynamic library */ - handle = (void*) LoadLibrary(path); - - /* restore error mode */ - SetErrorMode(error_mode); - - return handle; -} - -extern int DL_addr(const void *addr, Dl_info *dl_info) -{ - MEMORY_BASIC_INFORMATION mem_info; - char mod_name[MAX_PATH]; - HMODULE mod_handle; - - /* Fill MEMORY_BASIC_INFORMATION struct */ - if (!VirtualQuery(addr, &mem_info, sizeof(mem_info))) { - return 0; - } - mod_handle = (HMODULE)mem_info.AllocationBase; - - /* ANSI file name for module */ - if (!GetModuleFileNameA(mod_handle, (char*) mod_name, sizeof(mod_name))) { - return 0; - } - strcpy(dl_info->dli_fname, mod_name); - dl_info->dli_fbase = mem_info.BaseAddress; - dl_info->dli_saddr = addr; - strcpy(dl_info->dli_sname, mod_name); - return 1; -} - -// Run once -static BOOL CALLBACK __offload_run_once_wrapper( - PINIT_ONCE initOnce, - PVOID parameter, - PVOID *context -) -{ - void (*init_routine)(void) = (void(*)(void)) parameter; - init_routine(); - return true; -} - -void __offload_run_once(OffloadOnceControl *ctrl, void (*func)(void)) -{ - InitOnceExecuteOnce(ctrl, __offload_run_once_wrapper, (void*) func, 0); -} -#endif // TARGET_WINNT - -/* ARGSUSED */ // version is not used on windows -void* DL_sym(void *handle, const char *name, const char *version) -{ -#ifdef TARGET_WINNT - return GetProcAddress((HMODULE) handle, name); -#else // TARGET_WINNT - if (version == 0) { - return dlsym(handle, name); - } - else { - return dlvsym(handle, name, version); - } -#endif // TARGET_WINNT -} - -int64_t get_el_value( - char *base, - int64_t offset, - int64_t size) -{ - int64_t val = 0; - switch (size) { - case 1: - val = static_cast<int64_t>(*((char *)(base + offset))); - break; - case 2: - val = static_cast<int64_t>(*((short *)(base + offset))); - break; - case 4: - val = static_cast<int64_t>(*((int *)(base + offset))); - break; - default: - val = *((int64_t *)(base + offset)); - break; - } - return val; -} diff --git a/liboffloadmic/runtime/offload_util.h b/liboffloadmic/runtime/offload_util.h deleted file mode 100644 index 7898462..0000000 --- a/liboffloadmic/runtime/offload_util.h +++ /dev/null @@ -1,182 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#ifndef OFFLOAD_UTIL_H_INCLUDED -#define OFFLOAD_UTIL_H_INCLUDED - -#include <stdlib.h> - -#ifdef TARGET_WINNT - #define DLL_LOCAL -#else - #define DLL_LOCAL __attribute__((visibility("hidden"))) -#endif - -#ifdef TARGET_WINNT -// Don't use <stdint.h> as compiling with VS2010 makes ofldbegin.obj -// incompatible with STL library of versions older than VS2010. -typedef unsigned long long int uint64_t; -typedef signed long long int int64_t; -#include <windows.h> -#include <process.h> -#else // TARGET_WINNT -#include <stdint.h> -#include <dlfcn.h> -#include <pthread.h> -#endif // TARGET_WINNT - -#ifdef TARGET_WINNT -typedef unsigned pthread_key_t; -typedef int pid_t; - -#define __func__ __FUNCTION__ -#define strtok_r(s,d,p) strtok_s(s,d,p) -#define strcasecmp(a,b) stricmp(a,b) - -#define thread_key_create(key, destructor) \ - (((*key = TlsAlloc()) > 0) ? 0 : GetLastError()) -#define thread_key_delete(key) TlsFree(key) - -#ifndef S_ISREG -#define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG) -#endif - -void* thread_getspecific(pthread_key_t key); -int thread_setspecific(pthread_key_t key, const void *value); -#else -#define thread_key_create(key, destructor) \ - pthread_key_create((key), (destructor)) -#define thread_key_delete(key) pthread_key_delete(key) -#define thread_getspecific(key) pthread_getspecific(key) -#define thread_setspecific(key, value) pthread_setspecific(key, value) -#endif // TARGET_WINNT - -// Mutex implementation -struct mutex_t { - mutex_t() { -#ifdef TARGET_WINNT - InitializeCriticalSection(&m_lock); -#else // TARGET_WINNT - pthread_mutex_init(&m_lock, 0); -#endif // TARGET_WINNT - } - - ~mutex_t() { -#ifdef TARGET_WINNT - DeleteCriticalSection(&m_lock); -#else // TARGET_WINNT - pthread_mutex_destroy(&m_lock); -#endif // TARGET_WINNT - } - - void lock() { -#ifdef TARGET_WINNT - EnterCriticalSection(&m_lock); -#else // TARGET_WINNT - pthread_mutex_lock(&m_lock); -#endif // TARGET_WINNT - } - - void unlock() { -#ifdef TARGET_WINNT - LeaveCriticalSection(&m_lock); -#else // TARGET_WINNT - pthread_mutex_unlock(&m_lock); -#endif // TARGET_WINNT - } - -private: -#ifdef TARGET_WINNT - CRITICAL_SECTION m_lock; -#else - pthread_mutex_t m_lock; -#endif -}; - -struct mutex_locker_t { - mutex_locker_t(mutex_t &mutex) : m_mutex(mutex) { - m_mutex.lock(); - } - - ~mutex_locker_t() { - m_mutex.unlock(); - } - -private: - mutex_t &m_mutex; -}; - -// Dynamic loader interface -#ifdef TARGET_WINNT -struct Dl_info -{ - char dli_fname[MAX_PATH]; - void *dli_fbase; - char dli_sname[MAX_PATH]; - const void *dli_saddr; -}; - -void* DL_open(const char *path); -#define DL_close(handle) FreeLibrary((HMODULE) (handle)) -int DL_addr(const void *addr, Dl_info *info); -#else -#define DL_open(path) dlopen((path), RTLD_NOW) -#define DL_close(handle) dlclose(handle) -#define DL_addr(addr, info) dladdr((addr), (info)) -#endif // TARGET_WINNT - -DLL_LOCAL extern void* DL_sym(void *handle, const char *name, const char *version); - -// One-time initialization API -#ifdef TARGET_WINNT -typedef INIT_ONCE OffloadOnceControl; -#define OFFLOAD_ONCE_CONTROL_INIT INIT_ONCE_STATIC_INIT - -extern void __offload_run_once(OffloadOnceControl *ctrl, void (*func)(void)); -#else -typedef pthread_once_t OffloadOnceControl; -#define OFFLOAD_ONCE_CONTROL_INIT PTHREAD_ONCE_INIT - -#define __offload_run_once(ctrl, func) pthread_once(ctrl, func) -#endif // TARGET_WINNT - -// Parses size specification string. -DLL_LOCAL extern bool __offload_parse_size_string(const char *str, uint64_t &new_size); - -// Parses string with integer value -DLL_LOCAL extern bool __offload_parse_int_string(const char *str, int64_t &value); - -// get value by its base, offset and size -DLL_LOCAL int64_t get_el_value( - char *base, - int64_t offset, - int64_t size -); -#endif // OFFLOAD_UTIL_H_INCLUDED diff --git a/liboffloadmic/runtime/ofldbegin.cpp b/liboffloadmic/runtime/ofldbegin.cpp deleted file mode 100644 index 49d4050..0000000 --- a/liboffloadmic/runtime/ofldbegin.cpp +++ /dev/null @@ -1,337 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#if HOST_LIBRARY -#include "offload_table.h" -#ifdef MYO_SUPPORT -#include "offload_myo_host.h" -#endif // MYO_SUPPORT -#else -#include "compiler_if_target.h" -#include "offload_target.h" -#ifdef MYO_SUPPORT -#include "offload_myo_target.h" -#endif // MYO_SUPPORT -#endif // HOST_LIBRARY - -// Initializes library and registers specified offload image. -// Don't use this declarations from offload_host.h as offload_table.h -// is used instead of it. Using offload_host.h contradicts with -// STL library compiled with VS2010. -extern "C" bool __offload_register_image(const void* image); -extern "C" void __offload_unregister_image(const void* image); -extern "C" bool __offload_target_image_is_executable(const void *image); - -#ifdef TARGET_WINNT -#define ALLOCATE(name) __declspec(allocate(name)) -#define DLL_LOCAL -#else // TARGET_WINNT -#define ALLOCATE(name) __attribute__((section(name))) -#define DLL_LOCAL __attribute__((visibility("hidden"))) -#endif // TARGET_WINNT - -#if HOST_LIBRARY -// the host program/shared library should always have __offload_target_image -// symbol defined. This symbol specifies the beginning of the target program -// image. -extern "C" DLL_LOCAL const void* __offload_target_image; -#else // HOST_LIBRARY -// Define a weak main which would be used on target side in case usere's -// source file containing main does not have offload code. -#pragma weak main -int main(void) -{ - OFFLOAD_TARGET_MAIN(); - return 0; -} - -#pragma weak MAIN__ -extern "C" int MAIN__(void) -{ - OFFLOAD_TARGET_MAIN(); - return 0; -} -#endif // HOST_LIBRARY - -// offload section prolog -ALLOCATE(OFFLOAD_ENTRY_TABLE_SECTION_START) -#ifdef TARGET_WINNT -__declspec(align(sizeof(FuncTable::Entry))) -#endif // TARGET_WINNT -static FuncTable::Entry __offload_entry_table_start = { 0 }; - -// list element for the current module -static FuncList::Node __offload_entry_node = { - { &__offload_entry_table_start + 1, -1 }, - 0, 0 -}; - -// offload fp section prolog -ALLOCATE(OFFLOAD_FUNC_TABLE_SECTION_START) -#ifdef TARGET_WINNT -__declspec(align(sizeof(FuncTable::Entry))) -#endif // TARGET_WINNT -static FuncTable::Entry __offload_func_table_start = { 0 }; - -// list element for the current module -static FuncList::Node __offload_func_node = { - { &__offload_func_table_start + 1, -1 }, - 0, 0 -}; - -// offload fp section prolog -ALLOCATE(OFFLOAD_VAR_TABLE_SECTION_START) -#ifdef TARGET_WINNT -__declspec(align(sizeof(VarTable::Entry))) -#endif // TARGET_WINNT -static VarTable::Entry __offload_var_table_start = { 0 }; - -// list element for the current module -static VarList::Node __offload_var_node = { - { &__offload_var_table_start + 1 }, - 0, 0 -}; - -#ifdef MYO_SUPPORT - -// offload myo shared var section prolog -// first element is empty -ALLOCATE(OFFLOAD_MYO_SHARED_TABLE_SECTION_START) -#ifdef TARGET_WINNT -__declspec(align(sizeof(SharedTableEntry))) -#endif // TARGET_WINNT -static MYOVarTable::Entry __offload_myo_shared_var_start = { 0 }; - -// list element for the current module -// table entry pointer skips the empty first entry -static MYOVarTableList::Node __offload_myo_shared_var_node = { - { &__offload_myo_shared_var_start + 1 }, - 0, 0 -}; - -// offload myo shared vtable section prolog -// first element is empty -ALLOCATE(OFFLOAD_MYO_SHARED_VTABLE_SECTION_START) -#ifdef TARGET_WINNT -__declspec(align(sizeof(SharedTableEntry))) -#endif // TARGET_WINNT -static MYOVarTable::Entry __offload_myo_shared_vtable_start = { 0 }; - -// list element for the current module -// table entry pointer skips the empty first entry -static MYOVarTableList::Node __offload_myo_shared_vtable_node = { - { &__offload_myo_shared_vtable_start + 1 }, - 0, 0 -}; - -// offload myo shared var init section prolog -// first element is empty -ALLOCATE(OFFLOAD_MYO_SHARED_INIT_TABLE_SECTION_START) -#ifdef TARGET_WINNT -__declspec(align(sizeof(InitTableEntry))) -#endif // TARGET_WINNT -static MYOInitTable::Entry __offload_myo_init_table_start = { 0 }; - -// list element for the current module -// table entry pointer skips the empty first entry -static MYOInitTableList::Node __offload_myo_init_table_node = { - { &__offload_myo_init_table_start + 1 }, - 0, 0 -}; - -// The functions and variables needed for a built-in -// remote function entry for vtable initialization on MIC - -#if !HOST_LIBRARY -MyoError __offload_init_vtables(void) -{ - SharedTableEntry *t_start; - - //OFFLOAD_DEBUG_TRACE(3, "%s\n", __func__); - t_start = &__offload_myo_shared_vtable_start + 1; - //OFFLOAD_DEBUG_TRACE(3, "%s(%p)\n", __func__, t_start); - while (t_start->varName != 0) { - //OFFLOAD_DEBUG_TRACE(4, - // "myo shared vtable \"%s\" &myo_ptr = %p myo_ptr = %p\n", - // t_start->varName, - // (void *)(t_start->sharedAddr), - // ((void **)(t_start->sharedAddr))[0]); - t_start++; - } - - __offload_myo_shared_init_table_process( - &__offload_myo_init_table_start + 1); - return MYO_SUCCESS; -} -#endif // !HOST_LIBRARY - -static void vtable_initializer() -{ -} - -#if !HOST_LIBRARY -static MyoError vtable_initializer_wrapper() -{ - __offload_myoAcquire(); - __offload_init_vtables(); - __offload_myoRelease(); - return MYO_SUCCESS; -} -#endif - -static void* __offload_vtable_initializer_thunk_ptr = 0; - -// offload myo fptr section prolog -// first element is pre-initialized to the MIC vtable initializer -ALLOCATE(OFFLOAD_MYO_FPTR_TABLE_SECTION_START) -#ifdef TARGET_WINNT -__declspec(align(sizeof(FptrTableEntry))) -#endif // TARGET_WINNT -static MYOFuncTable::Entry __offload_myo_fptr_table_start = { -#if HOST_LIBRARY - "--vtable_initializer--", - (void*)&vtable_initializer, - (void*)&__offload_vtable_initializer_thunk_ptr, -#ifdef TARGET_WINNT - // Dummy to pad up to 32 bytes - 0 -#endif // TARGET_WINNT -#else // HOST_LIBRARY - "--vtable_initializer--", - (void*)&vtable_initializer, - (void*)&vtable_initializer_wrapper, - &__offload_vtable_initializer_thunk_ptr, -#endif // HOST_LIBRARY -}; - -// list element for the current module -static MYOFuncTableList::Node __offload_myo_fptr_table_node = { - { &__offload_myo_fptr_table_start }, - 0, 0 -}; - -#endif // MYO_SUPPORT - -// init/fini code which adds/removes local lookup data to/from the global list - -static void offload_fini(); -static void offload_fini_so(); - -#ifndef TARGET_WINNT -static void offload_init() __attribute__((constructor(101))); -#else // TARGET_WINNT -static void offload_init(); - -// Place offload initialization before user constructors -ALLOCATE(OFFLOAD_CRTINIT_SECTION_START) -static void (*addressof_offload_init)() = offload_init; -#endif // TARGET_WINNT - -static void offload_init() -{ - bool success; - - // Set offload version - __offload_set_version(OFFLOAD_VERSION_17); - - // register offload tables - __offload_register_tables(&__offload_entry_node, - &__offload_func_node, - &__offload_var_node); - -#if HOST_LIBRARY - success = __offload_register_image(&__offload_target_image); - if (!success) - { - return; - } -#endif // HOST_LIBRARY -#ifdef MYO_SUPPORT -#if HOST_LIBRARY - // If this was the main program register main atexit routine - if (__offload_myoProcessTables( - &__offload_target_image, - &__offload_myo_init_table_node, - &__offload_myo_shared_var_node, - &__offload_myo_shared_vtable_node, - &__offload_myo_fptr_table_node)) - { - atexit(offload_fini); -#ifdef TARGET_WINNT - } else { - atexit(offload_fini_so); -#endif - } -#else // HOST_LIBRARY - __offload_myoProcessTables( - &__offload_myo_init_table_start + 1, - &__offload_myo_shared_var_start + 1, - &__offload_myo_shared_vtable_start + 1, - &__offload_myo_fptr_table_start - ); -#endif // HOST_LIBRARY -#endif // MYO_SUPPORT -} - -#ifndef TARGET_WINNT -static void offload_fini_so() __attribute__((destructor(101))); -#endif // TARGET_WINNT - -static void offload_fini() -{ -#if HOST_LIBRARY - __offload_unregister_image(&__offload_target_image); -#endif // HOST_LIBRARY -} - -static void offload_fini_so() -{ - // Offload and MYO tables need to be removed from list - // to prevent invalid accesses after dlclose - // Remove offload tables - __offload_unregister_tables(&__offload_entry_node, - &__offload_func_node, - &__offload_var_node); -#if HOST_LIBRARY - if(!__offload_target_image_is_executable(&__offload_target_image)) { - __offload_unregister_image(&__offload_target_image); - } -#endif -#ifdef MYO_SUPPORT -#if HOST_LIBRARY - // Remove MYO tables - __offload_myoRemoveTables( - &__offload_myo_init_table_node, - &__offload_myo_shared_var_node, - &__offload_myo_shared_vtable_node, - &__offload_myo_fptr_table_node); -#endif // HOST_LIBRARY -#endif // MYO_SUPPORT -} diff --git a/liboffloadmic/runtime/ofldend.cpp b/liboffloadmic/runtime/ofldend.cpp deleted file mode 100644 index 3cabc1a..0000000 --- a/liboffloadmic/runtime/ofldend.cpp +++ /dev/null @@ -1,114 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#if HOST_LIBRARY -#include "offload_table.h" -#ifdef MYO_SUPPORT -#include "offload_myo_host.h" -#endif // MYO_SUPPORT -#else -#include "offload_target.h" -#ifdef MYO_SUPPORT -#include "offload_myo_target.h" -#endif // MYO_SUPPORT -#endif // HOST_LIBRARY - -#ifdef TARGET_WINNT -#define ALLOCATE(name) __declspec(allocate(name)) -#else // TARGET_WINNT -#define ALLOCATE(name) __attribute__((section(name))) -#endif // TARGET_WINNT - -// offload entry table -ALLOCATE(OFFLOAD_ENTRY_TABLE_SECTION_END) -#ifdef TARGET_WINNT -__declspec(align(sizeof(FuncTable::Entry))) -#endif // TARGET_WINNT -static FuncTable::Entry __offload_entry_table_end = { (const char*)-1 }; - -// offload function table -ALLOCATE(OFFLOAD_FUNC_TABLE_SECTION_END) -#ifdef TARGET_WINNT -__declspec(align(sizeof(FuncTable::Entry))) -#endif // TARGET_WINNT -static FuncTable::Entry __offload_func_table_end = { (const char*)-1 }; - -// data table -ALLOCATE(OFFLOAD_VAR_TABLE_SECTION_END) -#ifdef TARGET_WINNT -__declspec(align(sizeof(VarTable::Entry))) -#endif // TARGET_WINNT -static VarTable::Entry __offload_var_table_end = { (const char*)-1 }; - -#ifdef MYO_SUPPORT - -// offload myo shared var section epilog -ALLOCATE(OFFLOAD_MYO_SHARED_TABLE_SECTION_END) -#ifdef TARGET_WINNT -__declspec(align(sizeof(SharedTableEntry))) -static MYOVarTable::Entry __offload_myo_shared_var_end = - { (const char*)-1, 0 }; -#else // TARGET_WINNT -static MYOVarTable::Entry __offload_myo_shared_var_end = { 0 }; -#endif // TARGET_WINNT - -// offload myo shared vtable section epilog -ALLOCATE(OFFLOAD_MYO_SHARED_VTABLE_SECTION_END) -#ifdef TARGET_WINNT -__declspec(align(sizeof(SharedTableEntry))) -static MYOVarTable::Entry __offload_myo_shared_vtable_end = - { (const char*)-1, 0 }; -#else // TARGET_WINNT -static MYOVarTable::Entry __offload_myo_shared_vtable_end = { 0 }; -#endif // TARGET_WINNT - -//#if HOST_LIBRARY -// offload myo shared var init section epilog -ALLOCATE(OFFLOAD_MYO_SHARED_INIT_TABLE_SECTION_END) -#ifdef TARGET_WINNT -__declspec(align(sizeof(InitTableEntry))) -static MYOInitTable::Entry __offload_myo_init_table_end = - { (const char*)-1, 0 }; -#else // TARGET_WINNT -static MYOInitTable::Entry __offload_myo_init_table_end = { 0 }; -#endif // TARGET_WINNT -//#endif // HOST_LIBRARY - -// offload myo fptr section epilog -ALLOCATE(OFFLOAD_MYO_FPTR_TABLE_SECTION_END) -#ifdef TARGET_WINNT -__declspec(align(sizeof(FptrTableEntry))) -static MYOFuncTable::Entry __offload_myo_fptr_table_end = - { (const char*)-1, 0, 0 }; -#else // TARGET_WINNT -static MYOFuncTable::Entry __offload_myo_fptr_table_end = { 0 }; -#endif // TARGET_WINNT - -#endif // MYO_SUPPORT diff --git a/liboffloadmic/runtime/orsl-lite/include/orsl-lite.h b/liboffloadmic/runtime/orsl-lite/include/orsl-lite.h deleted file mode 100644 index 867bae5f..0000000 --- a/liboffloadmic/runtime/orsl-lite/include/orsl-lite.h +++ /dev/null @@ -1,241 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#ifndef _ORSL_LITE_H_ -#define _ORSL_LITE_H_ - -#ifndef TARGET_WINNT -#include <sched.h> -#else -#define cpu_set_t int -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/** Type of a ORSLBusySet */ -typedef enum ORSLBusySetType { - BUSY_SET_EMPTY = 0, /**< Empty set */ - BUSY_SET_PARTIAL = 1, /**< Non-empty set that omits some threads */ - BUSY_SET_FULL = 2 /**< A set that includes all threads on the card */ -} BusySetType; - -/** ORSLBusySet encapsulation */ -typedef struct ORSLBusySet { - BusySetType type; /**< Set type */ -#ifdef __linux__ - cpu_set_t cpu_set; /**< CPU mask (unused for BUSY_SET_EMPTY and - BUSY_SET_PARTIAL sets) represented by the standard - Linux CPU set type -- cpu_set_t. Threads are numbered - starting from 0. The maximal possible thread number - is system-specific. See CPU_SET(3) family of macros - for more details. Unused in ORSL Lite. */ -#endif -} ORSLBusySet; - -/** Client tag */ -typedef char* ORSLTag; - -/** Maximal length of tag in characters */ -#define ORSL_MAX_TAG_LEN 128 - -/** Maximal number of cards that can be managed by ORSL */ -#define ORSL_MAX_CARDS 32 - -/** Reserves computational resources on a set of cards. Blocks. - * - * If any of the resources cannot be reserved, this function will block until - * they become available. Reservation can be recursive if performed by the - * same tag. A recursively reserved resource must be released the same number - * of times it was reserved. - * - * @see ORSLTryReserve - * - * @param[in] n Number of cards to reserve resources on. Cannot be < 0 - * or > ORSL_MAX_CARDS. - * - * @param[in] inds Indices of the cards: an integer array with n elements. - * Cannot be NULL if n > 0. Valid card indices are from 0 - * to ORSL_MAX_CARDS-1. Cannot contain duplicate elements. - * - * @param[in] bsets Requested resources on each of the card. Cannot be NULL - * if n > 0. - * - * @param[in] tag ORSLTag of the calling client. Cannot be NULL. Length - * must not exeed ORSL_MAX_TAG_LEN. - * - * @returns 0 if the resources were successfully reserved - * - * @returns EINVAL if any of the arguments is invalid - * - * @returns EAGAIN limit of recursive reservations reached - * (not in ORSL Lite) - * - * @returns ENOSYS (in ORSL Lite) if type of any of the busy sets is - * equal to BUSY_SET_PARTIAL - */ -int ORSLReserve(const int n, const int *__restrict inds, - const ORSLBusySet *__restrict bsets, - const ORSLTag __restrict tag); - -/** Reserves computational resources on a set of cards. Does not block. - * - * If any of the resources cannot be reserved, this function will return - * immediately. Reservation can be recursive if performed by the same tag. - * A recursively reserved resource must be released the same number of times - * it was reserved. - * - * @see ORSLReserve - * - * @param[in] n Number of cards to reserve resources on. Cannot be < 0 - * or > ORSL_MAX_CARDS. - * - * @param[in] inds Indices of the cards: an integer array with n elements. - * Cannot be NULL if n > 0. Valid card indices are from 0 - * to ORSL_MAX_CARDS-1. Cannot contain duplicate elements. - * - * @param[inout] bsets Requested resources on each of the card. Cannot be - * NULL if n > 0. - * - * @param[in] tag ORSLTag of the calling client. Cannot be NULL. Length - * must not exceed ORSL_MAX_TAG_LEN. - * - * @returns 0 if the resources were successfully reserved - * - * @returns EBUSY if some of the requested resources are busy - * - * @returns EINVAL if any of the arguments is invalid - * - * @returns EAGAIN limit of recursive reservations reached - * (not in ORSL Lite) - * - * @returns ENOSYS (in ORSL Lite) if type of any of the busy sets is - * equal to BUSY_SET_PARTIAL - */ -int ORSLTryReserve(const int n, const int *__restrict inds, - const ORSLBusySet *__restrict bsets, - const ORSLTag __restrict tag); - -/** Granularify of partial reservation */ -typedef enum ORSLPartialGranularity { - GRAN_CARD = 0, /**< Card granularity */ - GRAN_THREAD = 1 /**< Thread granularity */ -} ORSLPartialGranularity; - -/** Requests reservation of some of computational resources on a set of cards. - * Does not block. Updates user-provided bsets to indicate which resources - * were reserved. - * - * If any of the resources cannot be reserved, this function will update busy - * sets provided by the caller to reflect what resources were actually - * reserved. This function supports two granularity modes: 'card' and - * 'thread'. When granularity is set to 'card', a failure to reserve a thread - * on the card will imply that reservation has failed for the whole card. When - * granularity is set to 'thread', reservation on a card will be considered - * successful as long as at least one thread on the card was successfully - * reserved. Reservation can be recursive if performed by the same tag. A - * recursively reserved resource must be released the same number of times it - * was reserved. - * - * @param[in] gran Reservation granularity - * - * @param[in] n Number of cards to reserve resources on. Cannot be < 0 - * or > ORSL_MAX_CARDS. - * - * @param[in] inds Indices of the cards: an integer array with n elements. - * Cannot be NULL if n > 0. Valid card indices are from 0 - * to ORSL_MAX_CARDS-1. Cannot contain duplicate elements. - * - * @param[in] bsets Requested resources on each of the card. Cannot be NULL - * if n > 0. - * - * @param[in] tag ORSLTag of the calling client. Cannot be NULL. Length - * must not exceed ORSL_MAX_TAG_LEN. - * - * @returns 0 if at least some of the resources were successfully - * reserved - * - * @returns EBUSY if all of the requested resources are busy - * - * @returns EINVAL if any of the arguments is invalid - * - * @returns EAGAIN limit of recursive reservations reached - * (not in ORSL Lite) - * - * @returns ENOSYS (in ORSL Lite) if type of any of the busy sets is - * equal to BUSY_SET_PARTIAL - */ -int ORSLReservePartial(const ORSLPartialGranularity gran, const int n, - const int *__restrict inds, - ORSLBusySet *__restrict bsets, - const ORSLTag __restrict tag); - -/** Releases previously reserved computational resources on a set of cards. - * - * This function will fail if any of the resources to be released were not - * reserved by the calling client. - * - * @see ORSLReserve - * @see ORSLTryReserve - * @see ORSLReservePartial - * - * @param[in] n Number of cards to reserve resources on. Cannot be < 0 - * or > ORSL_MAX_CARDS. - * - * @param[in] inds Indices of the cards: an integer array with n elements. - * Cannot be NULL if n > 0. Valid card indices are from 0 - * to ORSL_MAX_CARDS-1. Cannot contain duplicate elements. - * - * @param[in] bsets Requested resources on each of the card. Cannot be NULL - * if n > 0. - * - * @param[in] tag ORSLTag of the calling client. Cannot be NULL. Length - * must not exceed ORSL_MAX_TAG_LEN. - * - * @returns 0 if the resources were successfully released - * - * @returns EINVAL if any of the arguments is invalid - * - * @returns EPERM the calling client did not reserve some of the - * resources it is trying to release. - * - * @returns ENOSYS (in ORSL Lite) if type of any of the busy sets is - * equal to BUSY_SET_PARTIAL - */ -int ORSLRelease(const int n, const int *__restrict inds, - const ORSLBusySet *__restrict bsets, - const ORSLTag __restrict tag); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/liboffloadmic/runtime/orsl-lite/lib/orsl-lite.c b/liboffloadmic/runtime/orsl-lite/lib/orsl-lite.c deleted file mode 100644 index 669c40a..0000000 --- a/liboffloadmic/runtime/orsl-lite/lib/orsl-lite.c +++ /dev/null @@ -1,357 +0,0 @@ -/* - Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#include <errno.h> -#include <string.h> -#include <limits.h> -#include <assert.h> - -#include "orsl-lite/include/orsl-lite.h" - -#define DISABLE_SYMBOL_VERSIONING - -#if defined(__linux__) && !defined(DISABLE_SYMBOL_VERSIONING) -#define symver(src, tgt, verstr) __asm__(".symver " #src "," #tgt verstr) -symver(ORSLReserve0, ORSLReserve, "@@ORSL_0.0"); -symver(ORSLTryReserve0, ORSLTryReserve, "@@ORSL_0.0"); -symver(ORSLReservePartial0, ORSLReservePartial, "@@ORSL_0.0"); -symver(ORSLRelease0, ORSLRelease, "@@ORSL_0.0"); -#else -#define ORSLReserve0 ORSLReserve -#define ORSLTryReserve0 ORSLTryReserve -#define ORSLReservePartial0 ORSLReservePartial -#define ORSLRelease0 ORSLRelease -#endif - -#ifdef __linux__ -#include <pthread.h> -static pthread_mutex_t global_mutex = PTHREAD_MUTEX_INITIALIZER; -static pthread_cond_t release_cond = PTHREAD_COND_INITIALIZER; -#endif - -#ifdef _WIN32 -#include <windows.h> -#pragma intrinsic(_ReadWriteBarrier) -static SRWLOCK global_mutex = SRWLOCK_INIT; -static volatile int release_cond_initialized = 0; -static CONDITION_VARIABLE release_cond; - -static void state_lazy_init_sync() -{ - if (!release_cond_initialized) { - AcquireSRWLockExclusive(&global_mutex); - _ReadWriteBarrier(); - if (!release_cond_initialized) { - InitializeConditionVariable(&release_cond); - release_cond_initialized = 1; - } - ReleaseSRWLockExclusive(&global_mutex); - } -} -#endif - -static int state_lock() -{ -#ifdef __linux__ - return pthread_mutex_lock(&global_mutex); -#endif - -#ifdef _WIN32 - AcquireSRWLockExclusive(&global_mutex); - return 0; -#endif -} - -static int state_unlock() -{ -#ifdef __linux__ - return pthread_mutex_unlock(&global_mutex); -#endif - -#ifdef _WIN32 - ReleaseSRWLockExclusive(&global_mutex); - return 0; -#endif -} - -static int state_wait_for_release() -{ -#ifdef __linux__ - return pthread_cond_wait(&release_cond, &global_mutex); -#endif - -#ifdef _WIN32 - return SleepConditionVariableSRW(&release_cond, - &global_mutex, INFINITE, 0) == 0 ? 1 : 0; -#endif -} - -static int state_signal_release() -{ -#ifdef __linux__ - return pthread_cond_signal(&release_cond); -#endif - -#ifdef _WIN32 - WakeConditionVariable(&release_cond); - return 0; -#endif -} - -static struct { - char owner[ORSL_MAX_TAG_LEN + 1]; - unsigned long rsrv_cnt; -} rsrv_data[ORSL_MAX_CARDS]; - -static int check_args(const int n, const int *__restrict inds, - const ORSLBusySet *__restrict bsets, - const ORSLTag __restrict tag) -{ - int i; - int card_specified[ORSL_MAX_CARDS]; - if (tag == NULL) return -1; - if (strlen((char *)tag) > ORSL_MAX_TAG_LEN) return -1; - if (n < 0 || n >= ORSL_MAX_CARDS) return -1; - if (n != 0 && (inds == NULL || bsets == NULL)) return -1; - for (i = 0; i < ORSL_MAX_CARDS; i++) - card_specified[i] = 0; - for (i = 0; i < n; i++) { - int ind = inds[i]; - if (ind < 0 || ind >= ORSL_MAX_CARDS) return -1; - if (card_specified[ind]) return -1; - card_specified[ind] = 1; - } - return 0; -} - -static int check_bsets(const int n, const ORSLBusySet *bsets) -{ - int i; - for (i = 0; i < n; i++) - if (bsets[i].type == BUSY_SET_PARTIAL) return -1; - return 0; -} - -static int can_reserve_card(int card, const ORSLBusySet *__restrict bset, - const ORSLTag __restrict tag) -{ - assert(tag != NULL); - assert(bset != NULL); - assert(strlen((char *)tag) < ORSL_MAX_TAG_LEN); - assert(bset->type != BUSY_SET_PARTIAL); - - return (bset->type == BUSY_SET_EMPTY || - ((rsrv_data[card].rsrv_cnt == 0 || - strncmp((char *)tag, - rsrv_data[card].owner, ORSL_MAX_TAG_LEN) == 0) && - rsrv_data[card].rsrv_cnt < ULONG_MAX)) ? 0 : - 1; -} - -static void reserve_card(int card, const ORSLBusySet *__restrict bset, - const ORSLTag __restrict tag) -{ - assert(tag != NULL); - assert(bset != NULL); - assert(strlen((char *)tag) < ORSL_MAX_TAG_LEN); - assert(bset->type != BUSY_SET_PARTIAL); - - if (bset->type == BUSY_SET_EMPTY) - return; - - assert(rsrv_data[card].rsrv_cnt == 0 || - strncmp((char *)tag, - rsrv_data[card].owner, ORSL_MAX_TAG_LEN) == 0); - assert(rsrv_data[card].rsrv_cnt < ULONG_MAX); - - if (rsrv_data[card].rsrv_cnt == 0) - strncpy(rsrv_data[card].owner, (char *)tag, ORSL_MAX_TAG_LEN); - rsrv_data[card].owner[ORSL_MAX_TAG_LEN] = '\0'; - rsrv_data[card].rsrv_cnt++; -} - -static int can_release_card(int card, const ORSLBusySet *__restrict bset, - const ORSLTag __restrict tag) -{ - assert(tag != NULL); - assert(bset != NULL); - assert(strlen((char *)tag) < ORSL_MAX_TAG_LEN); - assert(bset->type != BUSY_SET_PARTIAL); - - return (bset->type == BUSY_SET_EMPTY || (rsrv_data[card].rsrv_cnt > 0 && - strncmp((char *)tag, - rsrv_data[card].owner, ORSL_MAX_TAG_LEN) == 0)) ? 0 : 1; -} - -static void release_card(int card, const ORSLBusySet *__restrict bset, - const ORSLTag __restrict tag) -{ - assert(tag != NULL); - assert(bset != NULL); - assert(strlen((char *)tag) < ORSL_MAX_TAG_LEN); - assert(bset->type != BUSY_SET_PARTIAL); - - if (bset->type == BUSY_SET_EMPTY) - return; - - assert(strncmp((char *)tag, - rsrv_data[card].owner, ORSL_MAX_TAG_LEN) == 0); - assert(rsrv_data[card].rsrv_cnt > 0); - - rsrv_data[card].rsrv_cnt--; -} - -int ORSLReserve0(const int n, const int *__restrict inds, - const ORSLBusySet *__restrict bsets, - const ORSLTag __restrict tag) -{ - int i, ok; - - if (n == 0) return 0; - if (check_args(n, inds, bsets, tag) != 0) return EINVAL; - if (check_bsets(n, bsets) != 0) return ENOSYS; - - state_lock(); - - /* Loop until we find that all the resources we want are available */ - do { - ok = 1; - for (i = 0; i < n; i++) - if (can_reserve_card(inds[i], &bsets[i], tag) != 0) { - ok = 0; - /* Wait for someone to release some resources */ - state_wait_for_release(); - break; - } - } while (!ok); - - /* At this point we are good to reserve_card the resources we want */ - for (i = 0; i < n; i++) - reserve_card(inds[i], &bsets[i], tag); - - state_unlock(); - return 0; -} - -int ORSLTryReserve0(const int n, const int *__restrict inds, - const ORSLBusySet *__restrict bsets, - const ORSLTag __restrict tag) -{ - int i, rc = EBUSY; - - if (n == 0) return 0; - if (check_args(n, inds, bsets, tag) != 0) return EINVAL; - if (check_bsets(n, bsets) != 0) return ENOSYS; - - state_lock(); - - /* Check resource availability once */ - for (i = 0; i < n; i++) - if (can_reserve_card(inds[i], &bsets[i], tag) != 0) - goto bail_out; - - /* At this point we are good to reserve the resources we want */ - for (i = 0; i < n; i++) - reserve_card(inds[i], &bsets[i], tag); - - rc = 0; - -bail_out: - state_unlock(); - return rc; -} - -int ORSLReservePartial0(const ORSLPartialGranularity gran, const int n, - const int *__restrict inds, ORSLBusySet *__restrict bsets, - const ORSLTag __restrict tag) -{ - int rc = EBUSY; - int i, num_avail = n; - - if (n == 0) return 0; - if (gran != GRAN_CARD && gran != GRAN_THREAD) return EINVAL; - if (gran != GRAN_CARD) return EINVAL; - if (check_args(n, inds, bsets, tag) != 0) return EINVAL; - if (check_bsets(n, bsets) != 0) return ENOSYS; - - state_lock(); - - /* Check resource availability once; remove unavailable resources from the - * user-provided list */ - for (i = 0; i < n; i++) - if (can_reserve_card(inds[i], &bsets[i], tag) != 0) { - num_avail--; - bsets[i].type = BUSY_SET_EMPTY; - } - - if (num_avail == 0) - goto bail_out; - - /* At this point we are good to reserve the resources we want */ - for (i = 0; i < n; i++) - reserve_card(inds[i], &bsets[i], tag); - - rc = 0; - -bail_out: - state_unlock(); - return rc; -} - -int ORSLRelease0(const int n, const int *__restrict inds, - const ORSLBusySet *__restrict bsets, - const ORSLTag __restrict tag) -{ - int i, rc = EPERM; - - if (n == 0) return 0; - if (check_args(n, inds, bsets, tag) != 0) return EINVAL; - if (check_bsets(n, bsets) != 0) return ENOSYS; - - state_lock(); - - /* Check that we can release all the resources */ - for (i = 0; i < n; i++) - if (can_release_card(inds[i], &bsets[i], tag) != 0) - goto bail_out; - - /* At this point we are good to release the resources we want */ - for (i = 0; i < n; i++) - release_card(inds[i], &bsets[i], tag); - - state_signal_release(); - - rc = 0; - -bail_out: - state_unlock(); - return rc; -} - -/* vim:set et: */ diff --git a/liboffloadmic/runtime/orsl-lite/version.txt b/liboffloadmic/runtime/orsl-lite/version.txt deleted file mode 100644 index ab5f599..0000000 --- a/liboffloadmic/runtime/orsl-lite/version.txt +++ /dev/null @@ -1 +0,0 @@ -ORSL-lite 0.7 |