diff --git a/build/CMakeCache.txt b/build/CMakeCache.txt new file mode 100644 index 0000000000000000000000000000000000000000..7895d8bdfc8e635e566a8c4257973d7516bb60dd --- /dev/null +++ b/build/CMakeCache.txt @@ -0,0 +1,915 @@ +# This is the CMakeCache file. +# For build in directory: /home/huchen/FAISS/faiss/build +# It was generated by CMake: /usr/bin/cmake3 +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//Path to a library. +BLAS_guide_LIBRARY:FILEPATH=BLAS_guide_LIBRARY-NOTFOUND + +//Path to a library. +BLAS_iomp5_LIBRARY:FILEPATH=/opt/dtk-21.04/llvm/lib/libiomp5.so + +//Path to a library. +BLAS_mkl_core_LIBRARY:FILEPATH=/home/huchen/intel-compiler-2017.5.239/mkl/lib/intel64_lin/libmkl_core.so + +//Path to a library. +BLAS_mkl_intel_LIBRARY:FILEPATH=BLAS_mkl_intel_LIBRARY-NOTFOUND + +//Path to a library. +BLAS_mkl_intel_lp64_LIBRARY:FILEPATH=/home/huchen/intel-compiler-2017.5.239/mkl/lib/intel64_lin/libmkl_intel_lp64.so + +//Path to a library. +BLAS_mkl_intel_thread_LIBRARY:FILEPATH=/home/huchen/intel-compiler-2017.5.239/mkl/lib/intel64_lin/libmkl_intel_thread.so + +//Builds the googlemock subproject +BUILD_GMOCK:BOOL= + +//No help, variable specified on the command line. +BUILD_SHARED_LIBS:UNINITIALIZED=ON + +//Build the testing tree. +BUILD_TESTING:BOOL=ON + +//Path to a program. +BZRCOMMAND:FILEPATH=BZRCOMMAND-NOTFOUND + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=/opt/rh/devtoolset-7/root/usr/bin/addr2line + +//Path to a program. +CMAKE_AR:FILEPATH=/opt/rh/devtoolset-7/root/usr/bin/ar + +//Choose the type of build, options are: None Debug Release RelWithDebInfo +// MinSizeRel ... +CMAKE_BUILD_TYPE:STRING= + +//Enable/Disable color output during build. +CMAKE_COLOR_MAKEFILE:BOOL=ON + +//CXX compiler +CMAKE_CXX_COMPILER:FILEPATH=/opt/dtk-21.04/bin/hipcc + +//LLVM archiver +CMAKE_CXX_COMPILER_AR:FILEPATH=CMAKE_CXX_COMPILER_AR-NOTFOUND + +//Generate index for LLVM archive +CMAKE_CXX_COMPILER_RANLIB:FILEPATH=CMAKE_CXX_COMPILER_RANLIB-NOTFOUND + +//Flags used by the CXX compiler during all build types. +CMAKE_CXX_FLAGS:STRING= + +//Flags used by the CXX compiler during DEBUG builds. +CMAKE_CXX_FLAGS_DEBUG:STRING=-g + +//Flags used by the CXX compiler during MINSIZEREL builds. +CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the CXX compiler during RELEASE builds. +CMAKE_CXX_FLAGS_RELEASE:STRING=-O2 -DNDEBUG + +//Flags used by the CXX compiler during RELWITHDEBINFO builds. +CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//C compiler +CMAKE_C_COMPILER:FILEPATH=/opt/dtk-21.04/bin/hipcc + +//LLVM archiver +CMAKE_C_COMPILER_AR:FILEPATH=CMAKE_C_COMPILER_AR-NOTFOUND + +//Generate index for LLVM archive +CMAKE_C_COMPILER_RANLIB:FILEPATH=CMAKE_C_COMPILER_RANLIB-NOTFOUND + +//Flags used by the C compiler during all build types. +CMAKE_C_FLAGS:STRING= + +//Flags used by the C compiler during DEBUG builds. +CMAKE_C_FLAGS_DEBUG:STRING=-g + +//Flags used by the C compiler during MINSIZEREL builds. +CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the C compiler during RELEASE builds. +CMAKE_C_FLAGS_RELEASE:STRING=-O2 -DNDEBUG + +//Flags used by the C compiler during RELWITHDEBINFO builds. +CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND + +//Flags used by the linker during all build types. +CMAKE_EXE_LINKER_FLAGS:STRING=-Wl,-rpath=/opt/rh/devtoolset-7/root/usr/lib64 -Wl,-rpath=/opt/rh/devtoolset-7/root/usr/lib + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of compile commands during generation. +CMAKE_EXPORT_COMPILE_COMMANDS:BOOL= + +//User executables (bin) +CMAKE_INSTALL_BINDIR:PATH=bin + +//Read-only architecture-independent data (DATAROOTDIR) +CMAKE_INSTALL_DATADIR:PATH= + +//Read-only architecture-independent data root (share) +CMAKE_INSTALL_DATAROOTDIR:PATH=share + +//Documentation root (DATAROOTDIR/doc/PROJECT_NAME) +CMAKE_INSTALL_DOCDIR:PATH= + +//C header files (include) +CMAKE_INSTALL_INCLUDEDIR:PATH=include + +//Info documentation (DATAROOTDIR/info) +CMAKE_INSTALL_INFODIR:PATH= + +//Object code libraries (lib64) +CMAKE_INSTALL_LIBDIR:PATH=lib64 + +//Program executables (libexec) +CMAKE_INSTALL_LIBEXECDIR:PATH=libexec + +//Locale-dependent data (DATAROOTDIR/locale) +CMAKE_INSTALL_LOCALEDIR:PATH= + +//Modifiable single-machine data (var) +CMAKE_INSTALL_LOCALSTATEDIR:PATH=var + +//Man documentation (DATAROOTDIR/man) +CMAKE_INSTALL_MANDIR:PATH= + +//C header files for non-gcc (/usr/include) +CMAKE_INSTALL_OLDINCLUDEDIR:PATH=/usr/include + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/usr/local + +//Run-time variable data (LOCALSTATEDIR/run) +CMAKE_INSTALL_RUNSTATEDIR:PATH= + +//System admin executables (sbin) +CMAKE_INSTALL_SBINDIR:PATH=sbin + +//Modifiable architecture-independent data (com) +CMAKE_INSTALL_SHAREDSTATEDIR:PATH=com + +//Read-only single-machine data (etc) +CMAKE_INSTALL_SYSCONFDIR:PATH=etc + +//Path to a program. +CMAKE_LINKER:FILEPATH=/opt/rh/devtoolset-7/root/usr/bin/ld + +//Path to a program. +CMAKE_MAKE_PROGRAM:FILEPATH=/opt/rh/devtoolset-7/root/usr/bin/gmake + +//Flags used by the linker during the creation of modules during +// all build types. +CMAKE_MODULE_LINKER_FLAGS:STRING=-Wl,-rpath=/opt/rh/devtoolset-7/root/usr/lib64 -Wl,-rpath=/opt/rh/devtoolset-7/root/usr/lib + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//No help, variable specified on the command line. +CMAKE_MODULE_PATH:UNINITIALIZED=/opt/dtk-21.04/hip/cmake/ + +//Path to a program. +CMAKE_NM:FILEPATH=/opt/rh/devtoolset-7/root/usr/bin/nm + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=/opt/rh/devtoolset-7/root/usr/bin/objcopy + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=/opt/rh/devtoolset-7/root/usr/bin/objdump + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC=A library for efficient similarity search and clustering of dense vectors. + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC=https://github.com/facebookresearch/faiss + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=faiss + +//Value Computed by CMake +CMAKE_PROJECT_VERSION:STATIC=1.6.4 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_MAJOR:STATIC=1 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_MINOR:STATIC=6 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_PATCH:STATIC=4 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_TWEAK:STATIC= + +//Path to a program. +CMAKE_RANLIB:FILEPATH=/opt/rh/devtoolset-7/root/usr/bin/ranlib + +//Path to a program. +CMAKE_READELF:FILEPATH=/opt/rh/devtoolset-7/root/usr/bin/readelf + +//Flags used by the linker during the creation of shared libraries +// during all build types. +CMAKE_SHARED_LINKER_FLAGS:STRING=-Wl,-rpath=/opt/rh/devtoolset-7/root/usr/lib64 -Wl,-rpath=/opt/rh/devtoolset-7/root/usr/lib + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the linker during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_STRIP:FILEPATH=/opt/rh/devtoolset-7/root/usr/bin/strip + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//Path to the coverage program that CTest uses for performing coverage +// inspection +COVERAGE_COMMAND:FILEPATH=/opt/rh/devtoolset-7/root/usr/bin/gcov + +//Extra command line flags to pass to the coverage tool +COVERAGE_EXTRA_FLAGS:STRING=-l + +//How many times to retry timed-out CTest submissions. +CTEST_SUBMIT_RETRY_COUNT:STRING=3 + +//How long to wait between timed-out CTest submissions. +CTEST_SUBMIT_RETRY_DELAY:STRING=5 + +//Path to a program. +CVSCOMMAND:FILEPATH=CVSCOMMAND-NOTFOUND + +//Options passed to the cvs update command. +CVS_UPDATE_OPTIONS:STRING=-d -A -P + +//Maximum time allowed before CTest will kill the test. +DART_TESTING_TIMEOUT:STRING=1500 + +//Build C API. +FAISS_ENABLE_C_API:BOOL=OFF + +//Enable support for GPU indexes. +FAISS_ENABLE_GPU:BOOL=ON + +//Build Python extension. +FAISS_ENABLE_PYTHON:BOOL=ON + +FAISS_OPT_LEVEL:BOOL=sse4 + +//Directory under which to collect all populated content +FETCHCONTENT_BASE_DIR:PATH=/home/huchen/FAISS/faiss/build/_deps + +//Disables all attempts to download or update content and assumes +// source dirs already exist +FETCHCONTENT_FULLY_DISCONNECTED:BOOL=OFF + +//Enables QUIET option for all content population +FETCHCONTENT_QUIET:BOOL=ON + +//When not empty, overrides where to find pre-populated content +// for googletest +FETCHCONTENT_SOURCE_DIR_GOOGLETEST:PATH= + +//Enables UPDATE_DISCONNECTED behavior for all content population +FETCHCONTENT_UPDATES_DISCONNECTED:BOOL=OFF + +//Enables UPDATE_DISCONNECTED behavior just for population of googletest +FETCHCONTENT_UPDATES_DISCONNECTED_GOOGLETEST:BOOL=OFF + +//Path to a program. +GITCOMMAND:FILEPATH=/opt/git-2.30.0/bin/git + +//Path to a program. +HGCOMMAND:FILEPATH=HGCOMMAND-NOTFOUND + +//Semicolon delimited flags for CLANG +HIP_CLANG_FLAGS:STRING= + +//Semicolon delimited flags for CLANG +HIP_CLANG_FLAGS_DEBUG:STRING= + +//Semicolon delimited flags for CLANG +HIP_CLANG_FLAGS_MINSIZEREL:STRING= + +//Semicolon delimited flags for CLANG +HIP_CLANG_FLAGS_RELEASE:STRING= + +//Semicolon delimited flags for CLANG +HIP_CLANG_FLAGS_RELWITHDEBINFO:STRING= + +//HIP compiler as computed by hipconfig +HIP_COMPILER:STRING=clang + +//Semicolon delimited flags for HCC +HIP_HCC_FLAGS:STRING= + +//Semicolon delimited flags for HCC +HIP_HCC_FLAGS_DEBUG:STRING= + +//Semicolon delimited flags for HCC +HIP_HCC_FLAGS_MINSIZEREL:STRING= + +//Semicolon delimited flags for HCC +HIP_HCC_FLAGS_RELEASE:STRING= + +//Semicolon delimited flags for HCC +HIP_HCC_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +HIP_HIPCC_CMAKE_LINKER_HELPER:FILEPATH=/opt/dtk-21.04/hip/bin/hipcc_cmake_linker_helper + +//Path to a program. +HIP_HIPCC_EXECUTABLE:FILEPATH=/opt/dtk-21.04/hip/bin/hipcc + +//Semicolon delimited flags for HIPCC +HIP_HIPCC_FLAGS:STRING= + +//Semicolon delimited flags for HIPCC +HIP_HIPCC_FLAGS_DEBUG:STRING= + +//Semicolon delimited flags for HIPCC +HIP_HIPCC_FLAGS_MINSIZEREL:STRING= + +//Semicolon delimited flags for HIPCC +HIP_HIPCC_FLAGS_RELEASE:STRING= + +//Semicolon delimited flags for HIPCC +HIP_HIPCC_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +HIP_HIPCONFIG_EXECUTABLE:FILEPATH=/opt/dtk-21.04/hip/bin/hipconfig + +//Host code compilation mode +HIP_HOST_COMPILATION_CPP:BOOL=ON + +//Semicolon delimted flags for NVCC +HIP_NVCC_FLAGS:STRING= + +//Semicolon delimited flags for NVCC +HIP_NVCC_FLAGS_DEBUG:STRING= + +//Semicolon delimited flags for NVCC +HIP_NVCC_FLAGS_MINSIZEREL:STRING= + +//Semicolon delimited flags for NVCC +HIP_NVCC_FLAGS_RELEASE:STRING= + +//Semicolon delimited flags for NVCC +HIP_NVCC_FLAGS_RELWITHDEBINFO:STRING= + +//HIP platform as computed by hipconfig +HIP_PLATFORM:STRING=hcc + +//HIP installed location +HIP_ROOT_DIR:PATH=/opt/dtk-21.04/hip + +//HIP runtime as computed by hipconfig +HIP_RUNTIME:STRING=ROCclr + +//Print out the commands run while compiling the HIP source file. +// With the Makefile generator this defaults to VERBOSE variable +// specified on the command line, but can be forced on with this +// option. +HIP_VERBOSE_BUILD:BOOL=OFF + +//Version of HIP as computed from hipcc +HIP_VERSION:STRING=4.0.21112-7433ef47 + +//Enable installation of googletest. (Projects embedding googletest +// may want to turn this OFF.) +INSTALL_GTEST:BOOL= + +//Command to build the project +MAKECOMMAND:STRING=/usr/bin/cmake3 --build . --config "${CTEST_CONFIGURATION_TYPE}" + +//Path to the memory checking command, used for memory error detection. +MEMORYCHECK_COMMAND:FILEPATH=/opt/rh/devtoolset-7/root/usr/bin/valgrind + +//File that contains suppressions for the memory checker +MEMORYCHECK_SUPPRESSIONS_FILE:FILEPATH= + +//CXX compiler flags for OpenMP parallelization +OpenMP_CXX_FLAGS:STRING=-fopenmp=libomp + +//CXX compiler libraries for OpenMP parallelization +OpenMP_CXX_LIB_NAMES:STRING=omp + +//Path to the omp library for OpenMP +OpenMP_omp_LIBRARY:FILEPATH=/opt/dtk-21.04/llvm/lib/libomp.so + +//Path to a program. +P4COMMAND:FILEPATH=P4COMMAND-NOTFOUND + +//Path to a program. +PYTHON_EXECUTABLE:FILEPATH=/usr/bin/python + +//Name of the computer/site where compile is being run +SITE:STRING=DCUnode2 + +//Path to the SLURM sbatch executable +SLURM_SBATCH_COMMAND:FILEPATH=SLURM_SBATCH_COMMAND-NOTFOUND + +//Path to the SLURM srun executable +SLURM_SRUN_COMMAND:FILEPATH=SLURM_SRUN_COMMAND-NOTFOUND + +//Path to a program. +SVNCOMMAND:FILEPATH=SVNCOMMAND-NOTFOUND + +//Path to a file. +SWIG_DIR:PATH=/home/huchen/FAISS/swig-4.0.2-build/share/swig/4.0.2 + +//Path to a program. +SWIG_EXECUTABLE:FILEPATH=/home/huchen/FAISS/swig-4.0.2-build/bin/swig + +//Swig version +SWIG_VERSION:STRING=4.0.2 + +//Value Computed by CMake +faiss_BINARY_DIR:STATIC=/home/huchen/FAISS/faiss/build + +//Value Computed by CMake +faiss_SOURCE_DIR:STATIC=/home/huchen/FAISS/faiss + +//Value Computed by CMake +googletest-distribution_BINARY_DIR:STATIC=/home/huchen/FAISS/faiss/build/_deps/googletest-build + +//Value Computed by CMake +googletest-distribution_SOURCE_DIR:STATIC=/home/huchen/FAISS/faiss/build/_deps/googletest-src + +//Value Computed by CMake +gtest_BINARY_DIR:STATIC=/home/huchen/FAISS/faiss/build/_deps/googletest-build/googletest + +//Value Computed by CMake +gtest_SOURCE_DIR:STATIC=/home/huchen/FAISS/faiss/build/_deps/googletest-src/googletest + +//Build gtest's sample programs. +gtest_build_samples:BOOL=OFF + +//Build all of gtest's own tests. +gtest_build_tests:BOOL=OFF + +//Disable uses of pthreads in gtest. +gtest_disable_pthreads:BOOL=OFF + +//Use shared (DLL) run-time lib even when Google Test is built +// as static lib. +gtest_force_shared_crt:BOOL=OFF + +//Build gtest with internal symbols hidden in shared libraries. +gtest_hide_internal_symbols:BOOL=OFF + +//Dependencies for the target +gtest_main_LIB_DEPENDS:STATIC=general;gtest; + +//Value Computed by CMake +pyfaiss_BINARY_DIR:STATIC=/home/huchen/FAISS/faiss/build/faiss/python + +//Value Computed by CMake +pyfaiss_SOURCE_DIR:STATIC=/home/huchen/FAISS/faiss/faiss/python + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: BLAS_guide_LIBRARY +BLAS_guide_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: BLAS_iomp5_LIBRARY +BLAS_iomp5_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: BLAS_mkl_core_LIBRARY +BLAS_mkl_core_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: BLAS_mkl_intel_LIBRARY +BLAS_mkl_intel_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: BLAS_mkl_intel_lp64_LIBRARY +BLAS_mkl_intel_lp64_LIBRARY-ADVANCED:INTERNAL=1 +//Have function sgemm_ +BLAS_mkl_intel_lp64_threadlibs_mkl_intel_thread_threadlibs_mkl_core_threadlibs_iomp5_threadlibs_WORKS:INTERNAL=1 +//ADVANCED property for variable: BLAS_mkl_intel_thread_LIBRARY +BLAS_mkl_intel_thread_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: BZRCOMMAND +BZRCOMMAND-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=/home/huchen/FAISS/faiss/build +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=17 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=5 +//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE +CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=/usr/bin/cmake3 +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=/usr/bin/cpack3 +//ADVANCED property for variable: CMAKE_CTEST_COMMAND +CMAKE_CTEST_COMMAND-ADVANCED:INTERNAL=1 +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=/usr/bin/ctest3 +//ADVANCED property for variable: CMAKE_CXX_COMPILER +CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR +CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB +CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS +CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG +CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL +CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE +CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO +CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER +CMAKE_C_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_AR +CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB +CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS +CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG +CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL +CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE +CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO +CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Path to cache edit program executable. +CMAKE_EDIT_COMMAND:INTERNAL=/usr/bin/ccmake3 +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS +CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Unix Makefiles +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Test CMAKE_HAVE_LIBC_PTHREAD +CMAKE_HAVE_LIBC_PTHREAD:INTERNAL= +//Have library pthreads +CMAKE_HAVE_PTHREADS_CREATE:INTERNAL= +//Have library pthread +CMAKE_HAVE_PTHREAD_CREATE:INTERNAL= +//Have include pthread.h +CMAKE_HAVE_PTHREAD_H:INTERNAL=1 +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=/home/huchen/FAISS/faiss +//ADVANCED property for variable: CMAKE_INSTALL_BINDIR +CMAKE_INSTALL_BINDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_DATADIR +CMAKE_INSTALL_DATADIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_DATAROOTDIR +CMAKE_INSTALL_DATAROOTDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_DOCDIR +CMAKE_INSTALL_DOCDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_INCLUDEDIR +CMAKE_INSTALL_INCLUDEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_INFODIR +CMAKE_INSTALL_INFODIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LIBDIR +CMAKE_INSTALL_LIBDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LIBEXECDIR +CMAKE_INSTALL_LIBEXECDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LOCALEDIR +CMAKE_INSTALL_LOCALEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LOCALSTATEDIR +CMAKE_INSTALL_LOCALSTATEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_MANDIR +CMAKE_INSTALL_MANDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_OLDINCLUDEDIR +CMAKE_INSTALL_OLDINCLUDEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_RUNSTATEDIR +CMAKE_INSTALL_RUNSTATEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_SBINDIR +CMAKE_INSTALL_SBINDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_SHAREDSTATEDIR +CMAKE_INSTALL_SHAREDSTATEDIR-ADVANCED:INTERNAL=1 +//Install .so files without execute permission. +CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0 +//ADVANCED property for variable: CMAKE_INSTALL_SYSCONFDIR +CMAKE_INSTALL_SYSCONFDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MAKE_PROGRAM +CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=10 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=/usr/share/cmake3 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//uname command +CMAKE_UNAME:INTERNAL=/usr/bin/uname +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: COVERAGE_COMMAND +COVERAGE_COMMAND-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: COVERAGE_EXTRA_FLAGS +COVERAGE_EXTRA_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CTEST_SUBMIT_RETRY_COUNT +CTEST_SUBMIT_RETRY_COUNT-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CTEST_SUBMIT_RETRY_DELAY +CTEST_SUBMIT_RETRY_DELAY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CVSCOMMAND +CVSCOMMAND-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CVS_UPDATE_OPTIONS +CVS_UPDATE_OPTIONS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: DART_TESTING_TIMEOUT +DART_TESTING_TIMEOUT-ADVANCED:INTERNAL=1 +//Details about finding HIP +FIND_PACKAGE_MESSAGE_DETAILS_HIP:INTERNAL=[/opt/dtk-21.04/hip][/opt/dtk-21.04/hip/bin/hipcc][/opt/dtk-21.04/hip/bin/hipconfig][hcc][clang][ROCclr][v4.0.21112-7433ef47()] +//Details about finding MKL +FIND_PACKAGE_MESSAGE_DETAILS_MKL:INTERNAL=[/home/huchen/intel-compiler-2017.5.239/mkl/lib/intel64_lin/libmkl_intel_lp64.so;/home/huchen/intel-compiler-2017.5.239/mkl/lib/intel64_lin/libmkl_intel_thread.so;/home/huchen/intel-compiler-2017.5.239/mkl/lib/intel64_lin/libmkl_core.so;/opt/dtk-21.04/llvm/lib/libiomp5.so;-pthread;-lm;-ldl][v()] +//Details about finding OpenMP +FIND_PACKAGE_MESSAGE_DETAILS_OpenMP:INTERNAL=[TRUE][c ][v()] +//Details about finding OpenMP_CXX +FIND_PACKAGE_MESSAGE_DETAILS_OpenMP_CXX:INTERNAL=[-fopenmp=libomp][/opt/dtk-21.04/llvm/lib/libomp.so][v()] +//Details about finding Python +FIND_PACKAGE_MESSAGE_DETAILS_Python:INTERNAL=[/usr/lib64/libpython3.6m.so][/usr/include/python3.6m][/usr/local/lib64/python3.6/site-packages/numpy/core/include][cfound components: Development NumPy Interpreter ][v3.6.8()] +//Details about finding PythonInterp +FIND_PACKAGE_MESSAGE_DETAILS_PythonInterp:INTERNAL=[/usr/bin/python][v2.7.5()] +//Details about finding SWIG +FIND_PACKAGE_MESSAGE_DETAILS_SWIG:INTERNAL=[/home/huchen/FAISS/swig-4.0.2-build/bin/swig][/home/huchen/FAISS/swig-4.0.2-build/share/swig/4.0.2][v4.0.2()] +//Details about finding Threads +FIND_PACKAGE_MESSAGE_DETAILS_Threads:INTERNAL=[TRUE][v()] +//ADVANCED property for variable: GITCOMMAND +GITCOMMAND-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: HGCOMMAND +HGCOMMAND-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: HIP_CLANG_FLAGS +HIP_CLANG_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: HIP_CLANG_FLAGS_DEBUG +HIP_CLANG_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: HIP_CLANG_FLAGS_MINSIZEREL +HIP_CLANG_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: HIP_CLANG_FLAGS_RELEASE +HIP_CLANG_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: HIP_CLANG_FLAGS_RELWITHDEBINFO +HIP_CLANG_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//Test HIP_CLANG_SUPPORTS_PARALLEL_JOBS +HIP_CLANG_SUPPORTS_PARALLEL_JOBS:INTERNAL=1 +//ADVANCED property for variable: HIP_COMPILER +HIP_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: HIP_HCC_FLAGS +HIP_HCC_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: HIP_HCC_FLAGS_DEBUG +HIP_HCC_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: HIP_HCC_FLAGS_MINSIZEREL +HIP_HCC_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: HIP_HCC_FLAGS_RELEASE +HIP_HCC_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: HIP_HCC_FLAGS_RELWITHDEBINFO +HIP_HCC_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: HIP_HIPCC_CMAKE_LINKER_HELPER +HIP_HIPCC_CMAKE_LINKER_HELPER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: HIP_HIPCC_EXECUTABLE +HIP_HIPCC_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: HIP_HIPCC_FLAGS +HIP_HIPCC_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: HIP_HIPCC_FLAGS_DEBUG +HIP_HIPCC_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: HIP_HIPCC_FLAGS_MINSIZEREL +HIP_HIPCC_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: HIP_HIPCC_FLAGS_RELEASE +HIP_HIPCC_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: HIP_HIPCC_FLAGS_RELWITHDEBINFO +HIP_HIPCC_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: HIP_HIPCONFIG_EXECUTABLE +HIP_HIPCONFIG_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: HIP_HOST_COMPILATION_CPP +HIP_HOST_COMPILATION_CPP-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: HIP_NVCC_FLAGS +HIP_NVCC_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: HIP_NVCC_FLAGS_DEBUG +HIP_NVCC_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: HIP_NVCC_FLAGS_MINSIZEREL +HIP_NVCC_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: HIP_NVCC_FLAGS_RELEASE +HIP_NVCC_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: HIP_NVCC_FLAGS_RELWITHDEBINFO +HIP_NVCC_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: HIP_PLATFORM +HIP_PLATFORM-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: HIP_RUNTIME +HIP_RUNTIME-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: HIP_VERSION +HIP_VERSION-ADVANCED:INTERNAL=1 +//Location of +HIP_run_hipcc:INTERNAL=/opt/dtk-21.04/hip/cmake/FindHIP/run_hipcc.cmake +//Location of +HIP_run_make2cmake:INTERNAL=/opt/dtk-21.04/hip/cmake/FindHIP/run_make2cmake.cmake +//ADVANCED property for variable: MAKECOMMAND +MAKECOMMAND-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: MEMORYCHECK_COMMAND +MEMORYCHECK_COMMAND-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: MEMORYCHECK_SUPPRESSIONS_FILE +MEMORYCHECK_SUPPRESSIONS_FILE-ADVANCED:INTERNAL=1 +//Result of TRY_COMPILE +OpenMP_COMPILE_RESULT_CXX_fopenmplibomp:INTERNAL=TRUE +//ADVANCED property for variable: OpenMP_CXX_FLAGS +OpenMP_CXX_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: OpenMP_CXX_LIB_NAMES +OpenMP_CXX_LIB_NAMES-ADVANCED:INTERNAL=1 +//CXX compiler's OpenMP specification date +OpenMP_CXX_SPEC_DATE:INTERNAL= +//Result of TRY_COMPILE +OpenMP_SPECTEST_CXX_:INTERNAL=FALSE +//ADVANCED property for variable: OpenMP_omp_LIBRARY +OpenMP_omp_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: P4COMMAND +P4COMMAND-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: PYTHON_EXECUTABLE +PYTHON_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: SITE +SITE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: SLURM_SBATCH_COMMAND +SLURM_SBATCH_COMMAND-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: SLURM_SRUN_COMMAND +SLURM_SRUN_COMMAND-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: SVNCOMMAND +SVNCOMMAND-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: SWIG_DIR +SWIG_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: SWIG_EXECUTABLE +SWIG_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: SWIG_VERSION +SWIG_VERSION-ADVANCED:INTERNAL=1 +//Result of TRY_COMPILE +THREADS_HAVE_PTHREAD_ARG:INTERNAL=TRUE +//CMAKE_INSTALL_PREFIX during last run +_GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX:INTERNAL=/usr/local +_Python_DEVELOPMENT_SIGNATURE:INTERNAL=a1531279030483f53aa2fcb11e7663c0 +//Path to a program. +_Python_EXECUTABLE:INTERNAL=/usr/bin/python3.6 +//Path to a file. +_Python_INCLUDE_DIR:INTERNAL=/usr/include/python3.6m +//Python Properties +_Python_INTERPRETER_PROPERTIES:INTERNAL=Python;3;6;8;64;m;cpython-36m-x86_64-linux-gnu;/usr/lib64/python3.6;/usr/lib64/python3.6;/usr/lib/python3.6/site-packages;/usr/lib64/python3.6/site-packages +_Python_INTERPRETER_SIGNATURE:INTERNAL=432331c8a3a1412512c2dd94e2690586 +//Path to a library. +_Python_LIBRARY_RELEASE:INTERNAL=/usr/lib64/libpython3.6m.so +_Python_NUMPY_SIGNATURE:INTERNAL=033acb8cb7cacbd91ea6e0766a031695 +//Path to a file. +_Python_NumPy_INCLUDE_DIR:INTERNAL=/usr/local/lib64/python3.6/site-packages/numpy/core/include +//ADVANCED property for variable: gtest_build_samples +gtest_build_samples-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: gtest_build_tests +gtest_build_tests-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: gtest_disable_pthreads +gtest_disable_pthreads-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: gtest_force_shared_crt +gtest_force_shared_crt-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: gtest_hide_internal_symbols +gtest_hide_internal_symbols-ADVANCED:INTERNAL=1 + diff --git a/build/CMakeFiles/3.17.5/CMakeCCompiler.cmake b/build/CMakeFiles/3.17.5/CMakeCCompiler.cmake new file mode 100644 index 0000000000000000000000000000000000000000..8cb3be342538d3135347e06ce6a45a9ce3368f92 --- /dev/null +++ b/build/CMakeFiles/3.17.5/CMakeCCompiler.cmake @@ -0,0 +1,76 @@ +set(CMAKE_C_COMPILER "/opt/dtk-21.04/bin/hipcc") +set(CMAKE_C_COMPILER_ARG1 "") +set(CMAKE_C_COMPILER_ID "Clang") +set(CMAKE_C_COMPILER_VERSION "12.0.0") +set(CMAKE_C_COMPILER_VERSION_INTERNAL "") +set(CMAKE_C_COMPILER_WRAPPER "") +set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11") +set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert") +set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes") +set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros") +set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert") + +set(CMAKE_C_PLATFORM_ID "Linux") +set(CMAKE_C_SIMULATE_ID "") +set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_C_SIMULATE_VERSION "") + + + +set(CMAKE_AR "/opt/rh/devtoolset-7/root/usr/bin/ar") +set(CMAKE_C_COMPILER_AR "CMAKE_C_COMPILER_AR-NOTFOUND") +set(CMAKE_RANLIB "/opt/rh/devtoolset-7/root/usr/bin/ranlib") +set(CMAKE_C_COMPILER_RANLIB "CMAKE_C_COMPILER_RANLIB-NOTFOUND") +set(CMAKE_LINKER "/opt/rh/devtoolset-7/root/usr/bin/ld") +set(CMAKE_MT "") +set(CMAKE_COMPILER_IS_GNUCC ) +set(CMAKE_C_COMPILER_LOADED 1) +set(CMAKE_C_COMPILER_WORKS TRUE) +set(CMAKE_C_ABI_COMPILED TRUE) +set(CMAKE_COMPILER_IS_MINGW ) +set(CMAKE_COMPILER_IS_CYGWIN ) +if(CMAKE_COMPILER_IS_CYGWIN) + set(CYGWIN 1) + set(UNIX 1) +endif() + +set(CMAKE_C_COMPILER_ENV_VAR "CC") + +if(CMAKE_COMPILER_IS_MINGW) + set(MINGW 1) +endif() +set(CMAKE_C_COMPILER_ID_RUN 1) +set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) +set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) +set(CMAKE_C_LINKER_PREFERENCE 10) + +# Save compiler ABI information. +set(CMAKE_C_SIZEOF_DATA_PTR "8") +set(CMAKE_C_COMPILER_ABI "ELF") +set(CMAKE_C_LIBRARY_ARCHITECTURE "") + +if(CMAKE_C_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_C_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") +endif() + +if(CMAKE_C_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + +set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_C_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/opt/dtk-21.04/llvm/lib/clang/12.0.0;/opt/dtk-21.04/hsa/include;/opt/dtk-21.04/hip/include;/opt/dtk-21.04/include;/opt/dtk-21.04;/opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux;/opt/rh/devtoolset-7/root/usr/include/c++/7;/usr/local/include;/opt/dtk-21.04/llvm/lib/clang/12.0.0/include;/usr/include") +set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "gcc_s;gcc;pthread;m;amdhip64;clang_rt.builtins-x86_64;stdc++;m;gcc_s;gcc;c;gcc_s;gcc") +set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/opt/dtk-21.04/hip/lib;/opt/dtk-21.04/llvm/lib/clang/12.0.0/lib/linux;/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7;/opt/rh/devtoolset-7/root/usr/lib64;/lib64;/usr/lib64;/opt/rh/devtoolset-7/root/usr/lib;/opt/dtk-21.04/llvm/lib;/lib;/usr/lib") +set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/build/CMakeFiles/3.17.5/CMakeCXXCompiler.cmake b/build/CMakeFiles/3.17.5/CMakeCXXCompiler.cmake new file mode 100644 index 0000000000000000000000000000000000000000..a6fbb3668fc1ee417e13a084f33f748108075744 --- /dev/null +++ b/build/CMakeFiles/3.17.5/CMakeCXXCompiler.cmake @@ -0,0 +1,88 @@ +set(CMAKE_CXX_COMPILER "/opt/dtk-21.04/bin/hipcc") +set(CMAKE_CXX_COMPILER_ARG1 "") +set(CMAKE_CXX_COMPILER_ID "Clang") +set(CMAKE_CXX_COMPILER_VERSION "12.0.0") +set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "") +set(CMAKE_CXX_COMPILER_WRAPPER "") +set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "11") +set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20") +set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters") +set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") +set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") +set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17") +set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20") + +set(CMAKE_CXX_PLATFORM_ID "Linux") +set(CMAKE_CXX_SIMULATE_ID "") +set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_CXX_SIMULATE_VERSION "") + + + +set(CMAKE_AR "/opt/rh/devtoolset-7/root/usr/bin/ar") +set(CMAKE_CXX_COMPILER_AR "CMAKE_CXX_COMPILER_AR-NOTFOUND") +set(CMAKE_RANLIB "/opt/rh/devtoolset-7/root/usr/bin/ranlib") +set(CMAKE_CXX_COMPILER_RANLIB "CMAKE_CXX_COMPILER_RANLIB-NOTFOUND") +set(CMAKE_LINKER "/opt/rh/devtoolset-7/root/usr/bin/ld") +set(CMAKE_MT "") +set(CMAKE_COMPILER_IS_GNUCXX ) +set(CMAKE_CXX_COMPILER_LOADED 1) +set(CMAKE_CXX_COMPILER_WORKS TRUE) +set(CMAKE_CXX_ABI_COMPILED TRUE) +set(CMAKE_COMPILER_IS_MINGW ) +set(CMAKE_COMPILER_IS_CYGWIN ) +if(CMAKE_COMPILER_IS_CYGWIN) + set(CYGWIN 1) + set(UNIX 1) +endif() + +set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") + +if(CMAKE_COMPILER_IS_MINGW) + set(MINGW 1) +endif() +set(CMAKE_CXX_COMPILER_ID_RUN 1) +set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;CPP;cu) +set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC;cuh) + +foreach (lang C OBJC OBJCXX) + if (CMAKE_${lang}_COMPILER_ID_RUN) + foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS) + list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension}) + endforeach() + endif() +endforeach() + +set(CMAKE_CXX_LINKER_PREFERENCE 30) +set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) + +# Save compiler ABI information. +set(CMAKE_CXX_SIZEOF_DATA_PTR "8") +set(CMAKE_CXX_COMPILER_ABI "ELF") +set(CMAKE_CXX_LIBRARY_ARCHITECTURE "") + +if(CMAKE_CXX_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_CXX_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") +endif() + +if(CMAKE_CXX_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + +set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "/opt/dtk-21.04/llvm/lib/clang/12.0.0;/opt/dtk-21.04/hsa/include;/opt/dtk-21.04/hip/include;/opt/dtk-21.04/hiprand/include;/opt/dtk-21.04/rocrand/include;/opt/dtk-21.04/include;/opt/dtk-21.04;/opt/dtk-21.04/llvm/lib/clang/12.0.0/include/cuda_wrappers;/opt/rh/devtoolset-7/root/usr/include/c++/7;/opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux;/opt/rh/devtoolset-7/root/usr/include/c++/7/backward;/usr/local/include;/opt/dtk-21.04/llvm/lib/clang/12.0.0/include;/usr/include") +set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "gcc_s;gcc;pthread;m;amdhip64;clang_rt.builtins-x86_64;stdc++;m;gcc_s;gcc;c;gcc_s;gcc") +set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/opt/dtk-21.04/hip/lib;/opt/dtk-21.04/llvm/lib/clang/12.0.0/lib/linux;/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7;/opt/rh/devtoolset-7/root/usr/lib64;/lib64;/usr/lib64;/opt/rh/devtoolset-7/root/usr/lib;/opt/dtk-21.04/llvm/lib;/lib;/usr/lib") +set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/build/CMakeFiles/3.17.5/CMakeDetermineCompilerABI_C.bin b/build/CMakeFiles/3.17.5/CMakeDetermineCompilerABI_C.bin new file mode 100755 index 0000000000000000000000000000000000000000..df1a7d3cf2ab0796d8085ddd97c568cdf302b4e2 Binary files /dev/null and b/build/CMakeFiles/3.17.5/CMakeDetermineCompilerABI_C.bin differ diff --git a/build/CMakeFiles/3.17.5/CMakeDetermineCompilerABI_CXX.bin b/build/CMakeFiles/3.17.5/CMakeDetermineCompilerABI_CXX.bin new file mode 100755 index 0000000000000000000000000000000000000000..d39e6f00f3723871e917999573c087fc630dc1c6 Binary files /dev/null and b/build/CMakeFiles/3.17.5/CMakeDetermineCompilerABI_CXX.bin differ diff --git a/build/CMakeFiles/3.17.5/CMakeSystem.cmake b/build/CMakeFiles/3.17.5/CMakeSystem.cmake new file mode 100644 index 0000000000000000000000000000000000000000..cbcb8ff4bdc5366227bdc36f0245bf6b968d5cd4 --- /dev/null +++ b/build/CMakeFiles/3.17.5/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Linux-3.10.0-957.el7.x86_64") +set(CMAKE_HOST_SYSTEM_NAME "Linux") +set(CMAKE_HOST_SYSTEM_VERSION "3.10.0-957.el7.x86_64") +set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64") + + + +set(CMAKE_SYSTEM "Linux-3.10.0-957.el7.x86_64") +set(CMAKE_SYSTEM_NAME "Linux") +set(CMAKE_SYSTEM_VERSION "3.10.0-957.el7.x86_64") +set(CMAKE_SYSTEM_PROCESSOR "x86_64") + +set(CMAKE_CROSSCOMPILING "FALSE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/build/CMakeFiles/3.17.5/CompilerIdC/CMakeCCompilerId.c b/build/CMakeFiles/3.17.5/CompilerIdC/CMakeCCompilerId.c new file mode 100644 index 0000000000000000000000000000000000000000..d884b50908c9852aad6d3b60781f4e529edc4d50 --- /dev/null +++ b/build/CMakeFiles/3.17.5/CompilerIdC/CMakeCCompilerId.c @@ -0,0 +1,671 @@ +#ifdef __cplusplus +# error "A C++ compiler has been selected for C." +#endif + +#if defined(__18CXX) +# define ID_VOID_MAIN +#endif +#if defined(__CLASSIC_C__) +/* cv-qualifiers did not exist in K&R C */ +# define const +# define volatile +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_C) +# define COMPILER_ID "SunPro" +# if __SUNPRO_C >= 0x5100 + /* __SUNPRO_C = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# endif + +#elif defined(__HP_cc) +# define COMPILER_ID "HP" + /* __HP_cc = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) + +#elif defined(__DECC) +# define COMPILER_ID "Compaq" + /* __DECC_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) + +#elif defined(__IBMC__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 +# define COMPILER_ID "XL" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version) +# define COMPILER_ID "Fujitsu" + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TINYC__) +# define COMPILER_ID "TinyCC" + +#elif defined(__BCC__) +# define COMPILER_ID "Bruce" + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + +#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC) +# define COMPILER_ID "SDCC" +# if defined(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR) +# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH) +# else + /* SDCC = VRP */ +# define COMPILER_VERSION_MAJOR DEC(SDCC/100) +# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) +# define COMPILER_VERSION_PATCH DEC(SDCC % 10) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXE) || defined(__CRAYXC) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number components. */ +#ifdef COMPILER_VERSION_MAJOR +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + + +#if !defined(__STDC__) +# if (defined(_MSC_VER) && !defined(__clang__)) \ + || (defined(__ibmxl__) || defined(__IBMC__)) +# define C_DIALECT "90" +# else +# define C_DIALECT +# endif +#elif __STDC_VERSION__ >= 201000L +# define C_DIALECT "11" +#elif __STDC_VERSION__ >= 199901L +# define C_DIALECT "99" +#else +# define C_DIALECT "90" +#endif +const char* info_language_dialect_default = + "INFO" ":" "dialect_default[" C_DIALECT "]"; + +/*--------------------------------------------------------------------------*/ + +#ifdef ID_VOID_MAIN +void main() {} +#else +# if defined(__CLASSIC_C__) +int main(argc, argv) int argc; char *argv[]; +# else +int main(int argc, char* argv[]) +# endif +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXE) || defined(__CRAYXC) + require += info_cray[argc]; +#endif + require += info_language_dialect_default[argc]; + (void)argv; + return require; +} +#endif diff --git a/build/CMakeFiles/3.17.5/CompilerIdC/a.out b/build/CMakeFiles/3.17.5/CompilerIdC/a.out new file mode 100755 index 0000000000000000000000000000000000000000..b4c1153a5b095a78234e7e14c1cd67a6f86482eb Binary files /dev/null and b/build/CMakeFiles/3.17.5/CompilerIdC/a.out differ diff --git a/build/CMakeFiles/3.17.5/CompilerIdCXX/CMakeCXXCompilerId.cpp b/build/CMakeFiles/3.17.5/CompilerIdCXX/CMakeCXXCompilerId.cpp new file mode 100644 index 0000000000000000000000000000000000000000..69cfdba6bc7bccb09bf234388908de035caa0969 --- /dev/null +++ b/build/CMakeFiles/3.17.5/CompilerIdCXX/CMakeCXXCompilerId.cpp @@ -0,0 +1,660 @@ +/* This source file must have a .cpp extension so that all C++ compilers + recognize the extension without flags. Borland does not know .cxx for + example. */ +#ifndef __cplusplus +# error "A C compiler has been selected for C++." +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__COMO__) +# define COMPILER_ID "Comeau" + /* __COMO_VERSION__ = VRR */ +# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100) +# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100) + +#elif defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_CC) +# define COMPILER_ID "SunPro" +# if __SUNPRO_CC >= 0x5100 + /* __SUNPRO_CC = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# endif + +#elif defined(__HP_aCC) +# define COMPILER_ID "HP" + /* __HP_aCC = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) + +#elif defined(__DECCXX) +# define COMPILER_ID "Compaq" + /* __DECCXX_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) + +#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 +# define COMPILER_ID "XL" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version) +# define COMPILER_ID "Fujitsu" + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) || defined(__GNUG__) +# define COMPILER_ID "GNU" +# if defined(__GNUC__) +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# else +# define COMPILER_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXE) || defined(__CRAYXC) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number components. */ +#ifdef COMPILER_VERSION_MAJOR +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + + +#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && _MSVC_LANG < 201403L +# if defined(__INTEL_CXX11_MODE__) +# if defined(__cpp_aggregate_nsdmi) +# define CXX_STD 201402L +# else +# define CXX_STD 201103L +# endif +# else +# define CXX_STD 199711L +# endif +#elif defined(_MSC_VER) && defined(_MSVC_LANG) +# define CXX_STD _MSVC_LANG +#else +# define CXX_STD __cplusplus +#endif + +const char* info_language_dialect_default = "INFO" ":" "dialect_default[" +#if CXX_STD > 201703L + "20" +#elif CXX_STD >= 201703L + "17" +#elif CXX_STD >= 201402L + "14" +#elif CXX_STD >= 201103L + "11" +#else + "98" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXE) || defined(__CRAYXC) + require += info_cray[argc]; +#endif + require += info_language_dialect_default[argc]; + (void)argv; + return require; +} diff --git a/build/CMakeFiles/3.17.5/CompilerIdCXX/a.out b/build/CMakeFiles/3.17.5/CompilerIdCXX/a.out new file mode 100755 index 0000000000000000000000000000000000000000..05e5ada0633a996d8cb4bb3c6be7cb533951c72b Binary files /dev/null and b/build/CMakeFiles/3.17.5/CompilerIdCXX/a.out differ diff --git a/build/CMakeFiles/CMakeDirectoryInformation.cmake b/build/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000000000000000000000000000000000000..f2aa3f924d61252118e5f336a110a356f0ee18fe --- /dev/null +++ b/build/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/huchen/FAISS/faiss") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/huchen/FAISS/faiss/build") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/build/CMakeFiles/CMakeError.log b/build/CMakeFiles/CMakeError.log new file mode 100644 index 0000000000000000000000000000000000000000..efad02a7ba90ec02ce9515a45b2c0eae8feaae58 --- /dev/null +++ b/build/CMakeFiles/CMakeError.log @@ -0,0 +1,199 @@ +Detecting CXX OpenMP version failed with the following output: +Change Dir: /home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/opt/rh/devtoolset-7/root/usr/bin/gmake cmTC_4be7e/fast && /opt/rh/devtoolset-7/root/usr/bin/gmake -f CMakeFiles/cmTC_4be7e.dir/build.make CMakeFiles/cmTC_4be7e.dir/build +gmake[1]: Entering directory '/home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp' +Building CXX object CMakeFiles/cmTC_4be7e.dir/OpenMPCheckVersion.cpp.o +/opt/dtk-21.04/bin/hipcc -fopenmp=libomp -std=gnu++11 -o CMakeFiles/cmTC_4be7e.dir/OpenMPCheckVersion.cpp.o -c /home/huchen/FAISS/faiss/build/CMakeFiles/FindOpenMP/OpenMPCheckVersion.cpp +/home/huchen/FAISS/faiss/build/CMakeFiles/FindOpenMP/OpenMPCheckVersion.cpp:6:38: error: use of undeclared identifier '_OPENMP' + ('0' + ((_OPENMP/100000)%10)), + ^ +/home/huchen/FAISS/faiss/build/CMakeFiles/FindOpenMP/OpenMPCheckVersion.cpp:7:38: error: use of undeclared identifier '_OPENMP' + ('0' + ((_OPENMP/10000)%10)), + ^ +/home/huchen/FAISS/faiss/build/CMakeFiles/FindOpenMP/OpenMPCheckVersion.cpp:8:38: error: use of undeclared identifier '_OPENMP' + ('0' + ((_OPENMP/1000)%10)), + ^ +/home/huchen/FAISS/faiss/build/CMakeFiles/FindOpenMP/OpenMPCheckVersion.cpp:9:38: error: use of undeclared identifier '_OPENMP' + ('0' + ((_OPENMP/100)%10)), + ^ +/home/huchen/FAISS/faiss/build/CMakeFiles/FindOpenMP/OpenMPCheckVersion.cpp:10:38: error: use of undeclared identifier '_OPENMP' + ('0' + ((_OPENMP/10)%10)), + ^ +/home/huchen/FAISS/faiss/build/CMakeFiles/FindOpenMP/OpenMPCheckVersion.cpp:11:38: error: use of undeclared identifier '_OPENMP' + ('0' + ((_OPENMP/1)%10)), + ^ +6 errors generated when compiling for gfx900. +gmake[1]: *** [CMakeFiles/cmTC_4be7e.dir/build.make:86: CMakeFiles/cmTC_4be7e.dir/OpenMPCheckVersion.cpp.o] Error 1 +gmake[1]: Leaving directory '/home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp' +gmake: *** [Makefile:141: cmTC_4be7e/fast] Error 2 + + + +Performing C++ SOURCE FILE Test CMAKE_HAVE_LIBC_PTHREAD failed with the following output: +Change Dir: /home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/opt/rh/devtoolset-7/root/usr/bin/gmake cmTC_e2e66/fast && /opt/rh/devtoolset-7/root/usr/bin/gmake -f CMakeFiles/cmTC_e2e66.dir/build.make CMakeFiles/cmTC_e2e66.dir/build +gmake[1]: Entering directory '/home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp' +Building CXX object CMakeFiles/cmTC_e2e66.dir/src.cxx.o +/opt/dtk-21.04/bin/hipcc -DCMAKE_HAVE_LIBC_PTHREAD -std=gnu++11 -o CMakeFiles/cmTC_e2e66.dir/src.cxx.o -c /home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp/src.cxx +Linking CXX executable cmTC_e2e66 +/usr/bin/cmake3 -E cmake_link_script CMakeFiles/cmTC_e2e66.dir/link.txt --verbose=1 +/opt/dtk-21.04/bin/hipcc -DCMAKE_HAVE_LIBC_PTHREAD -Wl,-rpath=/opt/rh/devtoolset-7/root/usr/lib64 -Wl,-rpath=/opt/rh/devtoolset-7/root/usr/lib CMakeFiles/cmTC_e2e66.dir/src.cxx.o -o cmTC_e2e66 +CMakeFiles/cmTC_e2e66.dir/src.cxx.o: In function `main': +src.cxx:(.text+0x46): undefined reference to `pthread_atfork' +clang-12: error: linker command failed with exit code 1 (use -v to see invocation) +gmake[1]: *** [CMakeFiles/cmTC_e2e66.dir/build.make:107: cmTC_e2e66] Error 1 +gmake[1]: Leaving directory '/home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp' +gmake: *** [Makefile:141: cmTC_e2e66/fast] Error 2 + + +Source file was: +#include + +void* test_func(void* data) +{ + return data; +} + +int main(void) +{ + pthread_t thread; + pthread_create(&thread, NULL, test_func, NULL); + pthread_detach(thread); + pthread_cancel(thread); + pthread_join(thread, NULL); + pthread_atfork(NULL, NULL, NULL); + pthread_exit(NULL); + + return 0; +} + +Determining if the function pthread_create exists in the pthreads failed with the following output: +Change Dir: /home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/opt/rh/devtoolset-7/root/usr/bin/gmake cmTC_6b912/fast && /opt/rh/devtoolset-7/root/usr/bin/gmake -f CMakeFiles/cmTC_6b912.dir/build.make CMakeFiles/cmTC_6b912.dir/build +gmake[1]: Entering directory '/home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp' +Building CXX object CMakeFiles/cmTC_6b912.dir/CheckFunctionExists.cxx.o +/opt/dtk-21.04/bin/hipcc -DCHECK_FUNCTION_EXISTS=pthread_create -std=gnu++11 -o CMakeFiles/cmTC_6b912.dir/CheckFunctionExists.cxx.o -c /home/huchen/FAISS/faiss/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx +/home/huchen/FAISS/faiss/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx:7:3: error: functions that differ only in their return type cannot be overloaded + CHECK_FUNCTION_EXISTS(void); + ^ +:3:31: note: expanded from here +#define CHECK_FUNCTION_EXISTS pthread_create + ^ +/usr/include/pthread.h:235:12: note: previous declaration is here +extern int pthread_create (pthread_t *__restrict __newthread, + ~~~ ^ +/home/huchen/FAISS/faiss/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx:17:3: error: no matching function for call to 'pthread_create' + CHECK_FUNCTION_EXISTS(); + ^~~~~~~~~~~~~~~~~~~~~ +:3:31: note: expanded from here +#define CHECK_FUNCTION_EXISTS pthread_create + ^~~~~~~~~~~~~~ +/usr/include/pthread.h:235:12: note: candidate function not viable: requires 4 arguments, but 0 were provided +extern int pthread_create (pthread_t *__restrict __newthread, + ^ +2 errors generated when compiling for gfx900. +gmake[1]: *** [CMakeFiles/cmTC_6b912.dir/build.make:86: CMakeFiles/cmTC_6b912.dir/CheckFunctionExists.cxx.o] Error 1 +gmake[1]: Leaving directory '/home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp' +gmake: *** [Makefile:141: cmTC_6b912/fast] Error 2 + + + +Determining if the function pthread_create exists in the pthread failed with the following output: +Change Dir: /home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/opt/rh/devtoolset-7/root/usr/bin/gmake cmTC_d2507/fast && /opt/rh/devtoolset-7/root/usr/bin/gmake -f CMakeFiles/cmTC_d2507.dir/build.make CMakeFiles/cmTC_d2507.dir/build +gmake[1]: Entering directory '/home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp' +Building CXX object CMakeFiles/cmTC_d2507.dir/CheckFunctionExists.cxx.o +/opt/dtk-21.04/bin/hipcc -DCHECK_FUNCTION_EXISTS=pthread_create -std=gnu++11 -o CMakeFiles/cmTC_d2507.dir/CheckFunctionExists.cxx.o -c /home/huchen/FAISS/faiss/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx +/home/huchen/FAISS/faiss/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx:7:3: error: functions that differ only in their return type cannot be overloaded + CHECK_FUNCTION_EXISTS(void); + ^ +:3:31: note: expanded from here +#define CHECK_FUNCTION_EXISTS pthread_create + ^ +/usr/include/pthread.h:235:12: note: previous declaration is here +extern int pthread_create (pthread_t *__restrict __newthread, + ~~~ ^ +/home/huchen/FAISS/faiss/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx:17:3: error: no matching function for call to 'pthread_create' + CHECK_FUNCTION_EXISTS(); + ^~~~~~~~~~~~~~~~~~~~~ +:3:31: note: expanded from here +#define CHECK_FUNCTION_EXISTS pthread_create + ^~~~~~~~~~~~~~ +/usr/include/pthread.h:235:12: note: candidate function not viable: requires 4 arguments, but 0 were provided +extern int pthread_create (pthread_t *__restrict __newthread, + ^ +2 errors generated when compiling for gfx900. +gmake[1]: *** [CMakeFiles/cmTC_d2507.dir/build.make:86: CMakeFiles/cmTC_d2507.dir/CheckFunctionExists.cxx.o] Error 1 +gmake[1]: Leaving directory '/home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp' +gmake: *** [Makefile:141: cmTC_d2507/fast] Error 2 + + + +Detecting CXX OpenMP version failed with the following output: +Change Dir: /home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/opt/rh/devtoolset-7/root/usr/bin/gmake cmTC_45fd1/fast && /opt/rh/devtoolset-7/root/usr/bin/gmake -f CMakeFiles/cmTC_45fd1.dir/build.make CMakeFiles/cmTC_45fd1.dir/build +gmake[1]: Entering directory '/home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp' +Building CXX object CMakeFiles/cmTC_45fd1.dir/OpenMPCheckVersion.cpp.o +/opt/dtk-21.04/bin/hipcc -fopenmp=libomp -std=gnu++11 -o CMakeFiles/cmTC_45fd1.dir/OpenMPCheckVersion.cpp.o -c /home/huchen/FAISS/faiss/build/CMakeFiles/FindOpenMP/OpenMPCheckVersion.cpp +/home/huchen/FAISS/faiss/build/CMakeFiles/FindOpenMP/OpenMPCheckVersion.cpp:6:38: error: use of undeclared identifier '_OPENMP' + ('0' + ((_OPENMP/100000)%10)), + ^ +/home/huchen/FAISS/faiss/build/CMakeFiles/FindOpenMP/OpenMPCheckVersion.cpp:7:38: error: use of undeclared identifier '_OPENMP' + ('0' + ((_OPENMP/10000)%10)), + ^ +/home/huchen/FAISS/faiss/build/CMakeFiles/FindOpenMP/OpenMPCheckVersion.cpp:8:38: error: use of undeclared identifier '_OPENMP' + ('0' + ((_OPENMP/1000)%10)), + ^ +/home/huchen/FAISS/faiss/build/CMakeFiles/FindOpenMP/OpenMPCheckVersion.cpp:9:38: error: use of undeclared identifier '_OPENMP' + ('0' + ((_OPENMP/100)%10)), + ^ +/home/huchen/FAISS/faiss/build/CMakeFiles/FindOpenMP/OpenMPCheckVersion.cpp:10:38: error: use of undeclared identifier '_OPENMP' + ('0' + ((_OPENMP/10)%10)), + ^ +/home/huchen/FAISS/faiss/build/CMakeFiles/FindOpenMP/OpenMPCheckVersion.cpp:11:38: error: use of undeclared identifier '_OPENMP' + ('0' + ((_OPENMP/1)%10)), + ^ +6 errors generated when compiling for gfx900. +gmake[1]: *** [CMakeFiles/cmTC_45fd1.dir/build.make:86: CMakeFiles/cmTC_45fd1.dir/OpenMPCheckVersion.cpp.o] Error 1 +gmake[1]: Leaving directory '/home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp' +gmake: *** [Makefile:141: cmTC_45fd1/fast] Error 2 + + + +Detecting CXX OpenMP version failed with the following output: +Change Dir: /home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/opt/rh/devtoolset-7/root/usr/bin/gmake cmTC_bc418/fast && /opt/rh/devtoolset-7/root/usr/bin/gmake -f CMakeFiles/cmTC_bc418.dir/build.make CMakeFiles/cmTC_bc418.dir/build +gmake[1]: Entering directory '/home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp' +Building CXX object CMakeFiles/cmTC_bc418.dir/OpenMPCheckVersion.cpp.o +/opt/dtk-21.04/bin/hipcc -fopenmp=libomp -std=gnu++11 -o CMakeFiles/cmTC_bc418.dir/OpenMPCheckVersion.cpp.o -c /home/huchen/FAISS/faiss/build/CMakeFiles/FindOpenMP/OpenMPCheckVersion.cpp +/home/huchen/FAISS/faiss/build/CMakeFiles/FindOpenMP/OpenMPCheckVersion.cpp:6:38: error: use of undeclared identifier '_OPENMP' + ('0' + ((_OPENMP/100000)%10)), + ^ +/home/huchen/FAISS/faiss/build/CMakeFiles/FindOpenMP/OpenMPCheckVersion.cpp:7:38: error: use of undeclared identifier '_OPENMP' + ('0' + ((_OPENMP/10000)%10)), + ^ +/home/huchen/FAISS/faiss/build/CMakeFiles/FindOpenMP/OpenMPCheckVersion.cpp:8:38: error: use of undeclared identifier '_OPENMP' + ('0' + ((_OPENMP/1000)%10)), + ^ +/home/huchen/FAISS/faiss/build/CMakeFiles/FindOpenMP/OpenMPCheckVersion.cpp:9:38: error: use of undeclared identifier '_OPENMP' + ('0' + ((_OPENMP/100)%10)), + ^ +/home/huchen/FAISS/faiss/build/CMakeFiles/FindOpenMP/OpenMPCheckVersion.cpp:10:38: error: use of undeclared identifier '_OPENMP' + ('0' + ((_OPENMP/10)%10)), + ^ +/home/huchen/FAISS/faiss/build/CMakeFiles/FindOpenMP/OpenMPCheckVersion.cpp:11:38: error: use of undeclared identifier '_OPENMP' + ('0' + ((_OPENMP/1)%10)), + ^ +6 errors generated when compiling for gfx900. +gmake[1]: *** [CMakeFiles/cmTC_bc418.dir/build.make:86: CMakeFiles/cmTC_bc418.dir/OpenMPCheckVersion.cpp.o] Error 1 +gmake[1]: Leaving directory '/home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp' +gmake: *** [Makefile:141: cmTC_bc418/fast] Error 2 + + + diff --git a/build/CMakeFiles/CMakeOutput.log b/build/CMakeFiles/CMakeOutput.log new file mode 100644 index 0000000000000000000000000000000000000000..b9468a7532108a3b60188a29532c1d05ade4eb54 --- /dev/null +++ b/build/CMakeFiles/CMakeOutput.log @@ -0,0 +1,1018 @@ +The system is: Linux - 3.10.0-957.el7.x86_64 - x86_64 +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. +Compiler: /opt/dtk-21.04/bin/hipcc +Build flags: +Id flags: + +The output was: +0 + + +Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out" + +The CXX compiler identification is Clang, found in "/home/huchen/FAISS/faiss/build/CMakeFiles/3.17.5/CompilerIdCXX/a.out" + +Determining if the CXX compiler works passed with the following output: +Change Dir: /home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/opt/rh/devtoolset-7/root/usr/bin/gmake cmTC_53fb5/fast && /opt/rh/devtoolset-7/root/usr/bin/gmake -f CMakeFiles/cmTC_53fb5.dir/build.make CMakeFiles/cmTC_53fb5.dir/build +gmake[1]: Entering directory '/home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp' +Building CXX object CMakeFiles/cmTC_53fb5.dir/testCXXCompiler.cxx.o +/opt/dtk-21.04/bin/hipcc -o CMakeFiles/cmTC_53fb5.dir/testCXXCompiler.cxx.o -c /home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp/testCXXCompiler.cxx +Linking CXX executable cmTC_53fb5 +/usr/bin/cmake3 -E cmake_link_script CMakeFiles/cmTC_53fb5.dir/link.txt --verbose=1 +/opt/dtk-21.04/bin/hipcc -Wl,-rpath=/opt/rh/devtoolset-7/root/usr/lib64 -Wl,-rpath=/opt/rh/devtoolset-7/root/usr/lib CMakeFiles/cmTC_53fb5.dir/testCXXCompiler.cxx.o -o cmTC_53fb5 +gmake[1]: Leaving directory '/home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp' + + + +Detecting CXX compiler ABI info compiled with the following output: +Change Dir: /home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/opt/rh/devtoolset-7/root/usr/bin/gmake cmTC_c8be4/fast && /opt/rh/devtoolset-7/root/usr/bin/gmake -f CMakeFiles/cmTC_c8be4.dir/build.make CMakeFiles/cmTC_c8be4.dir/build +gmake[1]: Entering directory '/home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp' +Building CXX object CMakeFiles/cmTC_c8be4.dir/CMakeCXXCompilerABI.cpp.o +/opt/dtk-21.04/bin/hipcc -v -o CMakeFiles/cmTC_c8be4.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake3/Modules/CMakeCXXCompilerABI.cpp +clang version 12.0.0 (http://10.0.100.3/dcutoolkit/driverruntime/llvm-project.git f816f1d344d7e4e0e21fc9d134c1b82e12e972f5) +Target: x86_64-unknown-linux-gnu +Thread model: posix +InstalledDir: /opt/dtk-21.04/llvm/bin +Found candidate GCC installation: /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7 +Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/4.8.2 +Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/4.8.5 +Selected GCC installation: /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7 +Candidate multilib: .;@m64 +Candidate multilib: 32;@m32 +Selected multilib: .;@m64 +Found HIP installation: /opt/dtk-21.04, version 4.0.21112-7433ef47 + "/opt/dtk-21.04/llvm/bin/clang-12" -cc1 -triple amdgcn-amd-amdhsa -aux-triple x86_64-unknown-linux-gnu -emit-obj --mrelax-relocations -disable-free -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 1 -mframe-pointer=none -fno-rounding-math -mconstructor-aliases -aux-target-cpu x86-64 -fcuda-is-device -mllvm -amdgpu-internalize-symbols -fcuda-allow-variadic-functions -fvisibility hidden -fapply-global-visibility-to-externs -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/hip.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/ocml.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/ockl.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_daz_opt_off.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_unsafe_math_off.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_finite_only_off.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_correctly_rounded_sqrt_on.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_wavefrontsize64_on.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_isa_version_900.bc -target-cpu gfx900 -fno-split-dwarf-inlining -debugger-tuning=gdb -v -resource-dir /opt/dtk-21.04/llvm/lib/clang/12.0.0 -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/cuda_wrappers -internal-isystem /opt/dtk-21.04/include -include __clang_hip_runtime_wrapper.h -isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/.. -isystem /opt/dtk-21.04/hsa/include -isystem /opt/dtk-21.04/hip/include -D __HIP_ROCclr__ -D __HIP_ROCclr__ -c-isystem /opt/dtk-21.04/include -c-isystem /opt/dtk-21.04 -c-isystem /opencl/include -c-isystem /opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux -c-isystem /opt/rh/devtoolset-7/root/usr/include/c++/7 -c-isystem . -cxx-isystem /opt/dtk-21.04/hiprand/include/ -cxx-isystem /opt/dtk-21.04/rocrand/include -cxx-isystem /opt/dtk-21.04/include -cxx-isystem /opt/dtk-21.04 -cxx-isystem /opencl/include -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7 -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/x86_64-redhat-linux -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7 -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/x86_64-redhat-linux -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward -internal-isystem /usr/local/include -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -internal-isystem /usr/local/include -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O3 -std=c++11 -fdeprecated-macro -fno-autolink -fdebug-compilation-dir /home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp -ferror-limit 19 -fhip-new-launch-api -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -vectorize-loops -vectorize-slp -mllvm -amdgpu-early-inline-all=true -mllvm -amdgpu-function-calls=false -fcuda-allow-variadic-functions -faddrsig -o /tmp/CMakeCXXCompilerABI-gfx900-2b6afd.o -x hip /usr/share/cmake3/Modules/CMakeCXXCompilerABI.cpp +clang -cc1 version 12.0.0 based upon LLVM 12.0.0dtk_rel_21.04 default target x86_64-unknown-linux-gnu +ignoring nonexistent directory "/opencl/include" +ignoring nonexistent directory "/opencl/include" +ignoring nonexistent directory "/include" +ignoring nonexistent directory "/include" +ignoring duplicate directory "/opt/dtk-21.04/include" +ignoring duplicate directory "/opt/rh/devtoolset-7/root/usr/include/c++/7" +ignoring duplicate directory "/opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux" +ignoring duplicate directory "/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward" +ignoring duplicate directory "/usr/local/include" +ignoring duplicate directory "/opt/dtk-21.04/llvm/lib/clang/12.0.0/include" +ignoring duplicate directory "/usr/include" +ignoring duplicate directory "/usr/local/include" +ignoring duplicate directory "/opt/dtk-21.04/llvm/lib/clang/12.0.0/include" +ignoring duplicate directory "/usr/include" +#include "..." search starts here: +#include <...> search starts here: + /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/.. + /opt/dtk-21.04/hsa/include + /opt/dtk-21.04/hip/include + /opt/dtk-21.04/hiprand/include + /opt/dtk-21.04/rocrand/include + /opt/dtk-21.04/include + /opt/dtk-21.04 + /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/cuda_wrappers + /opt/rh/devtoolset-7/root/usr/include/c++/7 + /opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux + /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward + /usr/local/include + /opt/dtk-21.04/llvm/lib/clang/12.0.0/include + /usr/include +End of search list. + "/opt/dtk-21.04/llvm/bin/lld" -flavor gnu --no-undefined -shared -plugin-opt=-amdgpu-internalize-symbols -plugin-opt=mcpu=gfx900 -plugin-opt=O3 -plugin-opt=-amdgpu-early-inline-all=true -plugin-opt=-amdgpu-function-calls=false -o /tmp/CMakeCXXCompilerABI-gfx900-443841.out /tmp/CMakeCXXCompilerABI-gfx900-2b6afd.o + "/opt/dtk-21.04/llvm/bin/clang-12" -cc1 -triple amdgcn-amd-amdhsa -aux-triple x86_64-unknown-linux-gnu -emit-obj --mrelax-relocations -disable-free -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 1 -mframe-pointer=none -fno-rounding-math -mconstructor-aliases -aux-target-cpu x86-64 -fcuda-is-device -mllvm -amdgpu-internalize-symbols -fcuda-allow-variadic-functions -fvisibility hidden -fapply-global-visibility-to-externs -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/hip.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/ocml.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/ockl.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_daz_opt_off.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_unsafe_math_off.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_finite_only_off.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_correctly_rounded_sqrt_on.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_wavefrontsize64_on.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_isa_version_906.bc -target-cpu gfx906 -fno-split-dwarf-inlining -debugger-tuning=gdb -v -resource-dir /opt/dtk-21.04/llvm/lib/clang/12.0.0 -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/cuda_wrappers -internal-isystem /opt/dtk-21.04/include -include __clang_hip_runtime_wrapper.h -isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/.. -isystem /opt/dtk-21.04/hsa/include -isystem /opt/dtk-21.04/hip/include -D __HIP_ROCclr__ -D __HIP_ROCclr__ -c-isystem /opt/dtk-21.04/include -c-isystem /opt/dtk-21.04 -c-isystem /opencl/include -c-isystem /opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux -c-isystem /opt/rh/devtoolset-7/root/usr/include/c++/7 -c-isystem . -cxx-isystem /opt/dtk-21.04/hiprand/include/ -cxx-isystem /opt/dtk-21.04/rocrand/include -cxx-isystem /opt/dtk-21.04/include -cxx-isystem /opt/dtk-21.04 -cxx-isystem /opencl/include -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7 -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/x86_64-redhat-linux -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7 -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/x86_64-redhat-linux -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward -internal-isystem /usr/local/include -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -internal-isystem /usr/local/include -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O3 -std=c++11 -fdeprecated-macro -fno-autolink -fdebug-compilation-dir /home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp -ferror-limit 19 -fhip-new-launch-api -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -vectorize-loops -vectorize-slp -mllvm -amdgpu-early-inline-all=true -mllvm -amdgpu-function-calls=false -fcuda-allow-variadic-functions -faddrsig -o /tmp/CMakeCXXCompilerABI-gfx906-fe52d3.o -x hip /usr/share/cmake3/Modules/CMakeCXXCompilerABI.cpp +clang -cc1 version 12.0.0 based upon LLVM 12.0.0dtk_rel_21.04 default target x86_64-unknown-linux-gnu +ignoring nonexistent directory "/opencl/include" +ignoring nonexistent directory "/opencl/include" +ignoring nonexistent directory "/include" +ignoring nonexistent directory "/include" +ignoring duplicate directory "/opt/dtk-21.04/include" +ignoring duplicate directory "/opt/rh/devtoolset-7/root/usr/include/c++/7" +ignoring duplicate directory "/opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux" +ignoring duplicate directory "/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward" +ignoring duplicate directory "/usr/local/include" +ignoring duplicate directory "/opt/dtk-21.04/llvm/lib/clang/12.0.0/include" +ignoring duplicate directory "/usr/include" +ignoring duplicate directory "/usr/local/include" +ignoring duplicate directory "/opt/dtk-21.04/llvm/lib/clang/12.0.0/include" +ignoring duplicate directory "/usr/include" +#include "..." search starts here: +#include <...> search starts here: + /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/.. + /opt/dtk-21.04/hsa/include + /opt/dtk-21.04/hip/include + /opt/dtk-21.04/hiprand/include + /opt/dtk-21.04/rocrand/include + /opt/dtk-21.04/include + /opt/dtk-21.04 + /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/cuda_wrappers + /opt/rh/devtoolset-7/root/usr/include/c++/7 + /opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux + /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward + /usr/local/include + /opt/dtk-21.04/llvm/lib/clang/12.0.0/include + /usr/include +End of search list. + "/opt/dtk-21.04/llvm/bin/lld" -flavor gnu --no-undefined -shared -plugin-opt=-amdgpu-internalize-symbols -plugin-opt=mcpu=gfx906 -plugin-opt=O3 -plugin-opt=-amdgpu-early-inline-all=true -plugin-opt=-amdgpu-function-calls=false -o /tmp/CMakeCXXCompilerABI-gfx906-eaa030.out /tmp/CMakeCXXCompilerABI-gfx906-fe52d3.o + "/opt/dtk-21.04/llvm/bin/clang-offload-bundler" -type=o -targets=host-x86_64-unknown-linux,hip-amdgcn-amd-amdhsa-gfx900,hip-amdgcn-amd-amdhsa-gfx906 -inputs=/dev/null,/tmp/CMakeCXXCompilerABI-gfx900-443841.out,/tmp/CMakeCXXCompilerABI-gfx906-eaa030.out -outputs=/tmp/CMakeCXXCompilerABI-7f7b2a.hipfb + "/opt/dtk-21.04/llvm/bin/clang-12" -cc1 -triple x86_64-unknown-linux-gnu -aux-triple amdgcn-amd-amdhsa -emit-obj --mrelax-relocations -disable-free -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model static -mframe-pointer=none -fmath-errno -fno-rounding-math -mconstructor-aliases -munwind-tables -target-cpu x86-64 -fno-split-dwarf-inlining -debugger-tuning=gdb -v -resource-dir /opt/dtk-21.04/llvm/lib/clang/12.0.0 -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/cuda_wrappers -internal-isystem /opt/dtk-21.04/include -include __clang_hip_runtime_wrapper.h -isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/.. -isystem /opt/dtk-21.04/hsa/include -isystem /opt/dtk-21.04/hip/include -D __HIP_ROCclr__ -D __HIP_ROCclr__ -c-isystem /opt/dtk-21.04/include -c-isystem /opt/dtk-21.04 -c-isystem /opencl/include -c-isystem /opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux -c-isystem /opt/rh/devtoolset-7/root/usr/include/c++/7 -c-isystem . -cxx-isystem /opt/dtk-21.04/hiprand/include/ -cxx-isystem /opt/dtk-21.04/rocrand/include -cxx-isystem /opt/dtk-21.04/include -cxx-isystem /opt/dtk-21.04 -cxx-isystem /opencl/include -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7 -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/x86_64-redhat-linux -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7 -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/x86_64-redhat-linux -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward -internal-isystem /usr/local/include -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -internal-isystem /usr/local/include -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O3 -std=c++11 -fdeprecated-macro -fdebug-compilation-dir /home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp -ferror-limit 19 -fhip-new-launch-api -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -vectorize-loops -vectorize-slp -mllvm -amdgpu-early-inline-all=true -mllvm -amdgpu-function-calls=false -fcuda-include-gpubinary /tmp/CMakeCXXCompilerABI-7f7b2a.hipfb -fcuda-allow-variadic-functions -faddrsig -o CMakeFiles/cmTC_c8be4.dir/CMakeCXXCompilerABI.cpp.o -x hip /usr/share/cmake3/Modules/CMakeCXXCompilerABI.cpp +clang -cc1 version 12.0.0 based upon LLVM 12.0.0dtk_rel_21.04 default target x86_64-unknown-linux-gnu +ignoring nonexistent directory "/opencl/include" +ignoring nonexistent directory "/opencl/include" +ignoring nonexistent directory "/include" +ignoring nonexistent directory "/include" +ignoring duplicate directory "/opt/dtk-21.04/include" +ignoring duplicate directory "/opt/rh/devtoolset-7/root/usr/include/c++/7" +ignoring duplicate directory "/opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux" +ignoring duplicate directory "/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward" +ignoring duplicate directory "/usr/local/include" +ignoring duplicate directory "/opt/dtk-21.04/llvm/lib/clang/12.0.0/include" +ignoring duplicate directory "/usr/include" +#include "..." search starts here: +#include <...> search starts here: + /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/.. + /opt/dtk-21.04/hsa/include + /opt/dtk-21.04/hip/include + /opt/dtk-21.04/hiprand/include + /opt/dtk-21.04/rocrand/include + /opt/dtk-21.04/include + /opt/dtk-21.04 + /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/cuda_wrappers + /opt/rh/devtoolset-7/root/usr/include/c++/7 + /opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux + /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward + /usr/local/include + /opt/dtk-21.04/llvm/lib/clang/12.0.0/include + /usr/include +End of search list. +Linking CXX executable cmTC_c8be4 +/usr/bin/cmake3 -E cmake_link_script CMakeFiles/cmTC_c8be4.dir/link.txt --verbose=1 +/opt/dtk-21.04/bin/hipcc -Wl,-rpath=/opt/rh/devtoolset-7/root/usr/lib64 -Wl,-rpath=/opt/rh/devtoolset-7/root/usr/lib -v CMakeFiles/cmTC_c8be4.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_c8be4 +clang version 12.0.0 (http://10.0.100.3/dcutoolkit/driverruntime/llvm-project.git f816f1d344d7e4e0e21fc9d134c1b82e12e972f5) +Target: x86_64-unknown-linux-gnu +Thread model: posix +InstalledDir: /opt/dtk-21.04/llvm/bin +Found candidate GCC installation: /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7 +Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/4.8.2 +Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/4.8.5 +Selected GCC installation: /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7 +Candidate multilib: .;@m64 +Candidate multilib: 32;@m32 +Selected multilib: .;@m64 +Found HIP installation: /opt/dtk-21.04, version 4.0.21112-7433ef47 + "/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../bin/ld" --hash-style=gnu --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o cmTC_c8be4 /lib/../lib64/crt1.o /lib/../lib64/crti.o /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/crtbegin.o -L/opt/dtk-21.04/hip/lib -L/opt/dtk-21.04/llvm/bin/../lib/clang/12.0.0/lib/linux -L/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7 -L/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../.. -L/opt/dtk-21.04/llvm/bin/../lib -L/lib -L/usr/lib -lgcc_s -lgcc -lpthread -lm -rpath=/opt/rh/devtoolset-7/root/usr/lib64 -rpath=/opt/rh/devtoolset-7/root/usr/lib CMakeFiles/cmTC_c8be4.dir/CMakeCXXCompilerABI.cpp.o --enable-new-dtags --rpath=/opt/dtk-21.04/hip/lib:/opt/dtk-21.04/lib -lamdhip64 -lclang_rt.builtins-x86_64 -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/crtend.o /lib/../lib64/crtn.o +gmake[1]: Leaving directory '/home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp' + + + +Parsed CXX implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [/opt/dtk-21.04/llvm/lib/clang/12.0.0/include/..] + add: [/opt/dtk-21.04/hsa/include] + add: [/opt/dtk-21.04/hip/include] + add: [/opt/dtk-21.04/hiprand/include] + add: [/opt/dtk-21.04/rocrand/include] + add: [/opt/dtk-21.04/include] + add: [/opt/dtk-21.04] + add: [/opt/dtk-21.04/llvm/lib/clang/12.0.0/include/cuda_wrappers] + add: [/opt/rh/devtoolset-7/root/usr/include/c++/7] + add: [/opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux] + add: [/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward] + add: [/usr/local/include] + add: [/opt/dtk-21.04/llvm/lib/clang/12.0.0/include] + add: [/usr/include] + end of search list found + collapse include dir [/opt/dtk-21.04/llvm/lib/clang/12.0.0/include/..] ==> [/opt/dtk-21.04/llvm/lib/clang/12.0.0] + collapse include dir [/opt/dtk-21.04/hsa/include] ==> [/opt/dtk-21.04/hsa/include] + collapse include dir [/opt/dtk-21.04/hip/include] ==> [/opt/dtk-21.04/hip/include] + collapse include dir [/opt/dtk-21.04/hiprand/include] ==> [/opt/dtk-21.04/hiprand/include] + collapse include dir [/opt/dtk-21.04/rocrand/include] ==> [/opt/dtk-21.04/rocrand/include] + collapse include dir [/opt/dtk-21.04/include] ==> [/opt/dtk-21.04/include] + collapse include dir [/opt/dtk-21.04] ==> [/opt/dtk-21.04] + collapse include dir [/opt/dtk-21.04/llvm/lib/clang/12.0.0/include/cuda_wrappers] ==> [/opt/dtk-21.04/llvm/lib/clang/12.0.0/include/cuda_wrappers] + collapse include dir [/opt/rh/devtoolset-7/root/usr/include/c++/7] ==> [/opt/rh/devtoolset-7/root/usr/include/c++/7] + collapse include dir [/opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux] ==> [/opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux] + collapse include dir [/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward] ==> [/opt/rh/devtoolset-7/root/usr/include/c++/7/backward] + collapse include dir [/usr/local/include] ==> [/usr/local/include] + collapse include dir [/opt/dtk-21.04/llvm/lib/clang/12.0.0/include] ==> [/opt/dtk-21.04/llvm/lib/clang/12.0.0/include] + collapse include dir [/usr/include] ==> [/usr/include] + implicit include dirs: [/opt/dtk-21.04/llvm/lib/clang/12.0.0;/opt/dtk-21.04/hsa/include;/opt/dtk-21.04/hip/include;/opt/dtk-21.04/hiprand/include;/opt/dtk-21.04/rocrand/include;/opt/dtk-21.04/include;/opt/dtk-21.04;/opt/dtk-21.04/llvm/lib/clang/12.0.0/include/cuda_wrappers;/opt/rh/devtoolset-7/root/usr/include/c++/7;/opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux;/opt/rh/devtoolset-7/root/usr/include/c++/7/backward;/usr/local/include;/opt/dtk-21.04/llvm/lib/clang/12.0.0/include;/usr/include] + + +Parsed CXX implicit link information from above output: + link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: /home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):/opt/rh/devtoolset-7/root/usr/bin/gmake cmTC_c8be4/fast && /opt/rh/devtoolset-7/root/usr/bin/gmake -f CMakeFiles/cmTC_c8be4.dir/build.make CMakeFiles/cmTC_c8be4.dir/build] + ignore line: [gmake[1]: Entering directory '/home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp'] + ignore line: [Building CXX object CMakeFiles/cmTC_c8be4.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [/opt/dtk-21.04/bin/hipcc -v -o CMakeFiles/cmTC_c8be4.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake3/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [clang version 12.0.0 (http://10.0.100.3/dcutoolkit/driverruntime/llvm-project.git f816f1d344d7e4e0e21fc9d134c1b82e12e972f5)] + ignore line: [Target: x86_64-unknown-linux-gnu] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /opt/dtk-21.04/llvm/bin] + ignore line: [Found candidate GCC installation: /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7] + ignore line: [Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/4.8.2] + ignore line: [Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/4.8.5] + ignore line: [Selected GCC installation: /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7] + ignore line: [Candidate multilib: .] + ignore line: [@m64] + ignore line: [Candidate multilib: 32] + ignore line: [@m32] + ignore line: [Selected multilib: .] + ignore line: [@m64] + ignore line: [Found HIP installation: /opt/dtk-21.04 version 4.0.21112-7433ef47] + ignore line: [ "/opt/dtk-21.04/llvm/bin/clang-12" -cc1 -triple amdgcn-amd-amdhsa -aux-triple x86_64-unknown-linux-gnu -emit-obj --mrelax-relocations -disable-free -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 1 -mframe-pointer=none -fno-rounding-math -mconstructor-aliases -aux-target-cpu x86-64 -fcuda-is-device -mllvm -amdgpu-internalize-symbols -fcuda-allow-variadic-functions -fvisibility hidden -fapply-global-visibility-to-externs -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/hip.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/ocml.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/ockl.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_daz_opt_off.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_unsafe_math_off.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_finite_only_off.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_correctly_rounded_sqrt_on.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_wavefrontsize64_on.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_isa_version_900.bc -target-cpu gfx900 -fno-split-dwarf-inlining -debugger-tuning=gdb -v -resource-dir /opt/dtk-21.04/llvm/lib/clang/12.0.0 -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/cuda_wrappers -internal-isystem /opt/dtk-21.04/include -include __clang_hip_runtime_wrapper.h -isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/.. -isystem /opt/dtk-21.04/hsa/include -isystem /opt/dtk-21.04/hip/include -D __HIP_ROCclr__ -D __HIP_ROCclr__ -c-isystem /opt/dtk-21.04/include -c-isystem /opt/dtk-21.04 -c-isystem /opencl/include -c-isystem /opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux -c-isystem /opt/rh/devtoolset-7/root/usr/include/c++/7 -c-isystem . -cxx-isystem /opt/dtk-21.04/hiprand/include/ -cxx-isystem /opt/dtk-21.04/rocrand/include -cxx-isystem /opt/dtk-21.04/include -cxx-isystem /opt/dtk-21.04 -cxx-isystem /opencl/include -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7 -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/x86_64-redhat-linux -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7 -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/x86_64-redhat-linux -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward -internal-isystem /usr/local/include -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -internal-isystem /usr/local/include -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O3 -std=c++11 -fdeprecated-macro -fno-autolink -fdebug-compilation-dir /home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp -ferror-limit 19 -fhip-new-launch-api -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -vectorize-loops -vectorize-slp -mllvm -amdgpu-early-inline-all=true -mllvm -amdgpu-function-calls=false -fcuda-allow-variadic-functions -faddrsig -o /tmp/CMakeCXXCompilerABI-gfx900-2b6afd.o -x hip /usr/share/cmake3/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [clang -cc1 version 12.0.0 based upon LLVM 12.0.0dtk_rel_21.04 default target x86_64-unknown-linux-gnu] + ignore line: [ignoring nonexistent directory "/opencl/include"] + ignore line: [ignoring nonexistent directory "/opencl/include"] + ignore line: [ignoring nonexistent directory "/include"] + ignore line: [ignoring nonexistent directory "/include"] + ignore line: [ignoring duplicate directory "/opt/dtk-21.04/include"] + ignore line: [ignoring duplicate directory "/opt/rh/devtoolset-7/root/usr/include/c++/7"] + ignore line: [ignoring duplicate directory "/opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux"] + ignore line: [ignoring duplicate directory "/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward"] + ignore line: [ignoring duplicate directory "/usr/local/include"] + ignore line: [ignoring duplicate directory "/opt/dtk-21.04/llvm/lib/clang/12.0.0/include"] + ignore line: [ignoring duplicate directory "/usr/include"] + ignore line: [ignoring duplicate directory "/usr/local/include"] + ignore line: [ignoring duplicate directory "/opt/dtk-21.04/llvm/lib/clang/12.0.0/include"] + ignore line: [ignoring duplicate directory "/usr/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/..] + ignore line: [ /opt/dtk-21.04/hsa/include] + ignore line: [ /opt/dtk-21.04/hip/include] + ignore line: [ /opt/dtk-21.04/hiprand/include] + ignore line: [ /opt/dtk-21.04/rocrand/include] + ignore line: [ /opt/dtk-21.04/include] + ignore line: [ /opt/dtk-21.04] + ignore line: [ /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/cuda_wrappers] + ignore line: [ /opt/rh/devtoolset-7/root/usr/include/c++/7] + ignore line: [ /opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux] + ignore line: [ /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward] + ignore line: [ /usr/local/include] + ignore line: [ /opt/dtk-21.04/llvm/lib/clang/12.0.0/include] + ignore line: [ /usr/include] + ignore line: [End of search list.] + ignore line: [ "/opt/dtk-21.04/llvm/bin/lld" -flavor gnu --no-undefined -shared -plugin-opt=-amdgpu-internalize-symbols -plugin-opt=mcpu=gfx900 -plugin-opt=O3 -plugin-opt=-amdgpu-early-inline-all=true -plugin-opt=-amdgpu-function-calls=false -o /tmp/CMakeCXXCompilerABI-gfx900-443841.out /tmp/CMakeCXXCompilerABI-gfx900-2b6afd.o] + ignore line: [ "/opt/dtk-21.04/llvm/bin/clang-12" -cc1 -triple amdgcn-amd-amdhsa -aux-triple x86_64-unknown-linux-gnu -emit-obj --mrelax-relocations -disable-free -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 1 -mframe-pointer=none -fno-rounding-math -mconstructor-aliases -aux-target-cpu x86-64 -fcuda-is-device -mllvm -amdgpu-internalize-symbols -fcuda-allow-variadic-functions -fvisibility hidden -fapply-global-visibility-to-externs -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/hip.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/ocml.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/ockl.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_daz_opt_off.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_unsafe_math_off.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_finite_only_off.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_correctly_rounded_sqrt_on.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_wavefrontsize64_on.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_isa_version_906.bc -target-cpu gfx906 -fno-split-dwarf-inlining -debugger-tuning=gdb -v -resource-dir /opt/dtk-21.04/llvm/lib/clang/12.0.0 -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/cuda_wrappers -internal-isystem /opt/dtk-21.04/include -include __clang_hip_runtime_wrapper.h -isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/.. -isystem /opt/dtk-21.04/hsa/include -isystem /opt/dtk-21.04/hip/include -D __HIP_ROCclr__ -D __HIP_ROCclr__ -c-isystem /opt/dtk-21.04/include -c-isystem /opt/dtk-21.04 -c-isystem /opencl/include -c-isystem /opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux -c-isystem /opt/rh/devtoolset-7/root/usr/include/c++/7 -c-isystem . -cxx-isystem /opt/dtk-21.04/hiprand/include/ -cxx-isystem /opt/dtk-21.04/rocrand/include -cxx-isystem /opt/dtk-21.04/include -cxx-isystem /opt/dtk-21.04 -cxx-isystem /opencl/include -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7 -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/x86_64-redhat-linux -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7 -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/x86_64-redhat-linux -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward -internal-isystem /usr/local/include -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -internal-isystem /usr/local/include -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O3 -std=c++11 -fdeprecated-macro -fno-autolink -fdebug-compilation-dir /home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp -ferror-limit 19 -fhip-new-launch-api -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -vectorize-loops -vectorize-slp -mllvm -amdgpu-early-inline-all=true -mllvm -amdgpu-function-calls=false -fcuda-allow-variadic-functions -faddrsig -o /tmp/CMakeCXXCompilerABI-gfx906-fe52d3.o -x hip /usr/share/cmake3/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [clang -cc1 version 12.0.0 based upon LLVM 12.0.0dtk_rel_21.04 default target x86_64-unknown-linux-gnu] + ignore line: [ignoring nonexistent directory "/opencl/include"] + ignore line: [ignoring nonexistent directory "/opencl/include"] + ignore line: [ignoring nonexistent directory "/include"] + ignore line: [ignoring nonexistent directory "/include"] + ignore line: [ignoring duplicate directory "/opt/dtk-21.04/include"] + ignore line: [ignoring duplicate directory "/opt/rh/devtoolset-7/root/usr/include/c++/7"] + ignore line: [ignoring duplicate directory "/opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux"] + ignore line: [ignoring duplicate directory "/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward"] + ignore line: [ignoring duplicate directory "/usr/local/include"] + ignore line: [ignoring duplicate directory "/opt/dtk-21.04/llvm/lib/clang/12.0.0/include"] + ignore line: [ignoring duplicate directory "/usr/include"] + ignore line: [ignoring duplicate directory "/usr/local/include"] + ignore line: [ignoring duplicate directory "/opt/dtk-21.04/llvm/lib/clang/12.0.0/include"] + ignore line: [ignoring duplicate directory "/usr/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/..] + ignore line: [ /opt/dtk-21.04/hsa/include] + ignore line: [ /opt/dtk-21.04/hip/include] + ignore line: [ /opt/dtk-21.04/hiprand/include] + ignore line: [ /opt/dtk-21.04/rocrand/include] + ignore line: [ /opt/dtk-21.04/include] + ignore line: [ /opt/dtk-21.04] + ignore line: [ /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/cuda_wrappers] + ignore line: [ /opt/rh/devtoolset-7/root/usr/include/c++/7] + ignore line: [ /opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux] + ignore line: [ /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward] + ignore line: [ /usr/local/include] + ignore line: [ /opt/dtk-21.04/llvm/lib/clang/12.0.0/include] + ignore line: [ /usr/include] + ignore line: [End of search list.] + ignore line: [ "/opt/dtk-21.04/llvm/bin/lld" -flavor gnu --no-undefined -shared -plugin-opt=-amdgpu-internalize-symbols -plugin-opt=mcpu=gfx906 -plugin-opt=O3 -plugin-opt=-amdgpu-early-inline-all=true -plugin-opt=-amdgpu-function-calls=false -o /tmp/CMakeCXXCompilerABI-gfx906-eaa030.out /tmp/CMakeCXXCompilerABI-gfx906-fe52d3.o] + ignore line: [ "/opt/dtk-21.04/llvm/bin/clang-offload-bundler" -type=o -targets=host-x86_64-unknown-linux hip-amdgcn-amd-amdhsa-gfx900 hip-amdgcn-amd-amdhsa-gfx906 -inputs=/dev/null /tmp/CMakeCXXCompilerABI-gfx900-443841.out /tmp/CMakeCXXCompilerABI-gfx906-eaa030.out -outputs=/tmp/CMakeCXXCompilerABI-7f7b2a.hipfb] + ignore line: [ "/opt/dtk-21.04/llvm/bin/clang-12" -cc1 -triple x86_64-unknown-linux-gnu -aux-triple amdgcn-amd-amdhsa -emit-obj --mrelax-relocations -disable-free -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model static -mframe-pointer=none -fmath-errno -fno-rounding-math -mconstructor-aliases -munwind-tables -target-cpu x86-64 -fno-split-dwarf-inlining -debugger-tuning=gdb -v -resource-dir /opt/dtk-21.04/llvm/lib/clang/12.0.0 -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/cuda_wrappers -internal-isystem /opt/dtk-21.04/include -include __clang_hip_runtime_wrapper.h -isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/.. -isystem /opt/dtk-21.04/hsa/include -isystem /opt/dtk-21.04/hip/include -D __HIP_ROCclr__ -D __HIP_ROCclr__ -c-isystem /opt/dtk-21.04/include -c-isystem /opt/dtk-21.04 -c-isystem /opencl/include -c-isystem /opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux -c-isystem /opt/rh/devtoolset-7/root/usr/include/c++/7 -c-isystem . -cxx-isystem /opt/dtk-21.04/hiprand/include/ -cxx-isystem /opt/dtk-21.04/rocrand/include -cxx-isystem /opt/dtk-21.04/include -cxx-isystem /opt/dtk-21.04 -cxx-isystem /opencl/include -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7 -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/x86_64-redhat-linux -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7 -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/x86_64-redhat-linux -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward -internal-isystem /usr/local/include -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -internal-isystem /usr/local/include -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O3 -std=c++11 -fdeprecated-macro -fdebug-compilation-dir /home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp -ferror-limit 19 -fhip-new-launch-api -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -vectorize-loops -vectorize-slp -mllvm -amdgpu-early-inline-all=true -mllvm -amdgpu-function-calls=false -fcuda-include-gpubinary /tmp/CMakeCXXCompilerABI-7f7b2a.hipfb -fcuda-allow-variadic-functions -faddrsig -o CMakeFiles/cmTC_c8be4.dir/CMakeCXXCompilerABI.cpp.o -x hip /usr/share/cmake3/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [clang -cc1 version 12.0.0 based upon LLVM 12.0.0dtk_rel_21.04 default target x86_64-unknown-linux-gnu] + ignore line: [ignoring nonexistent directory "/opencl/include"] + ignore line: [ignoring nonexistent directory "/opencl/include"] + ignore line: [ignoring nonexistent directory "/include"] + ignore line: [ignoring nonexistent directory "/include"] + ignore line: [ignoring duplicate directory "/opt/dtk-21.04/include"] + ignore line: [ignoring duplicate directory "/opt/rh/devtoolset-7/root/usr/include/c++/7"] + ignore line: [ignoring duplicate directory "/opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux"] + ignore line: [ignoring duplicate directory "/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward"] + ignore line: [ignoring duplicate directory "/usr/local/include"] + ignore line: [ignoring duplicate directory "/opt/dtk-21.04/llvm/lib/clang/12.0.0/include"] + ignore line: [ignoring duplicate directory "/usr/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/..] + ignore line: [ /opt/dtk-21.04/hsa/include] + ignore line: [ /opt/dtk-21.04/hip/include] + ignore line: [ /opt/dtk-21.04/hiprand/include] + ignore line: [ /opt/dtk-21.04/rocrand/include] + ignore line: [ /opt/dtk-21.04/include] + ignore line: [ /opt/dtk-21.04] + ignore line: [ /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/cuda_wrappers] + ignore line: [ /opt/rh/devtoolset-7/root/usr/include/c++/7] + ignore line: [ /opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux] + ignore line: [ /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward] + ignore line: [ /usr/local/include] + ignore line: [ /opt/dtk-21.04/llvm/lib/clang/12.0.0/include] + ignore line: [ /usr/include] + ignore line: [End of search list.] + ignore line: [Linking CXX executable cmTC_c8be4] + ignore line: [/usr/bin/cmake3 -E cmake_link_script CMakeFiles/cmTC_c8be4.dir/link.txt --verbose=1] + ignore line: [/opt/dtk-21.04/bin/hipcc -Wl -rpath=/opt/rh/devtoolset-7/root/usr/lib64 -Wl -rpath=/opt/rh/devtoolset-7/root/usr/lib -v CMakeFiles/cmTC_c8be4.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_c8be4 ] + ignore line: [clang version 12.0.0 (http://10.0.100.3/dcutoolkit/driverruntime/llvm-project.git f816f1d344d7e4e0e21fc9d134c1b82e12e972f5)] + ignore line: [Target: x86_64-unknown-linux-gnu] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /opt/dtk-21.04/llvm/bin] + ignore line: [Found candidate GCC installation: /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7] + ignore line: [Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/4.8.2] + ignore line: [Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/4.8.5] + ignore line: [Selected GCC installation: /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7] + ignore line: [Candidate multilib: .] + ignore line: [@m64] + ignore line: [Candidate multilib: 32] + ignore line: [@m32] + ignore line: [Selected multilib: .] + ignore line: [@m64] + ignore line: [Found HIP installation: /opt/dtk-21.04 version 4.0.21112-7433ef47] + link line: [ "/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../bin/ld" --hash-style=gnu --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o cmTC_c8be4 /lib/../lib64/crt1.o /lib/../lib64/crti.o /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/crtbegin.o -L/opt/dtk-21.04/hip/lib -L/opt/dtk-21.04/llvm/bin/../lib/clang/12.0.0/lib/linux -L/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7 -L/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../.. -L/opt/dtk-21.04/llvm/bin/../lib -L/lib -L/usr/lib -lgcc_s -lgcc -lpthread -lm -rpath=/opt/rh/devtoolset-7/root/usr/lib64 -rpath=/opt/rh/devtoolset-7/root/usr/lib CMakeFiles/cmTC_c8be4.dir/CMakeCXXCompilerABI.cpp.o --enable-new-dtags --rpath=/opt/dtk-21.04/hip/lib:/opt/dtk-21.04/lib -lamdhip64 -lclang_rt.builtins-x86_64 -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/crtend.o /lib/../lib64/crtn.o] + arg [/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../bin/ld] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [elf_x86_64] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib64/ld-linux-x86-64.so.2] ==> ignore + arg [-o] ==> ignore + arg [cmTC_c8be4] ==> ignore + arg [/lib/../lib64/crt1.o] ==> ignore + arg [/lib/../lib64/crti.o] ==> ignore + arg [/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/crtbegin.o] ==> ignore + arg [-L/opt/dtk-21.04/hip/lib] ==> dir [/opt/dtk-21.04/hip/lib] + arg [-L/opt/dtk-21.04/llvm/bin/../lib/clang/12.0.0/lib/linux] ==> dir [/opt/dtk-21.04/llvm/bin/../lib/clang/12.0.0/lib/linux] + arg [-L/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7] ==> dir [/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7] + arg [-L/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../lib64] ==> dir [/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../lib64] + arg [-L/lib/../lib64] ==> dir [/lib/../lib64] + arg [-L/usr/lib/../lib64] ==> dir [/usr/lib/../lib64] + arg [-L/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../..] ==> dir [/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../..] + arg [-L/opt/dtk-21.04/llvm/bin/../lib] ==> dir [/opt/dtk-21.04/llvm/bin/../lib] + arg [-L/lib] ==> dir [/lib] + arg [-L/usr/lib] ==> dir [/usr/lib] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [-lpthread] ==> lib [pthread] + arg [-lm] ==> lib [m] + arg [-rpath=/opt/rh/devtoolset-7/root/usr/lib64] ==> ignore + arg [-rpath=/opt/rh/devtoolset-7/root/usr/lib] ==> ignore + arg [CMakeFiles/cmTC_c8be4.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [--enable-new-dtags] ==> ignore + arg [--rpath=/opt/dtk-21.04/hip/lib:/opt/dtk-21.04/lib] ==> ignore + arg [-lamdhip64] ==> lib [amdhip64] + arg [-lclang_rt.builtins-x86_64] ==> lib [clang_rt.builtins-x86_64] + arg [-lstdc++] ==> lib [stdc++] + arg [-lm] ==> lib [m] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [-lc] ==> lib [c] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/crtend.o] ==> ignore + arg [/lib/../lib64/crtn.o] ==> ignore + collapse library dir [/opt/dtk-21.04/hip/lib] ==> [/opt/dtk-21.04/hip/lib] + collapse library dir [/opt/dtk-21.04/llvm/bin/../lib/clang/12.0.0/lib/linux] ==> [/opt/dtk-21.04/llvm/lib/clang/12.0.0/lib/linux] + collapse library dir [/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7] ==> [/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7] + collapse library dir [/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../lib64] ==> [/opt/rh/devtoolset-7/root/usr/lib64] + collapse library dir [/lib/../lib64] ==> [/lib64] + collapse library dir [/usr/lib/../lib64] ==> [/usr/lib64] + collapse library dir [/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../..] ==> [/opt/rh/devtoolset-7/root/usr/lib] + collapse library dir [/opt/dtk-21.04/llvm/bin/../lib] ==> [/opt/dtk-21.04/llvm/lib] + collapse library dir [/lib] ==> [/lib] + collapse library dir [/usr/lib] ==> [/usr/lib] + implicit libs: [gcc_s;gcc;pthread;m;amdhip64;clang_rt.builtins-x86_64;stdc++;m;gcc_s;gcc;c;gcc_s;gcc] + implicit dirs: [/opt/dtk-21.04/hip/lib;/opt/dtk-21.04/llvm/lib/clang/12.0.0/lib/linux;/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7;/opt/rh/devtoolset-7/root/usr/lib64;/lib64;/usr/lib64;/opt/rh/devtoolset-7/root/usr/lib;/opt/dtk-21.04/llvm/lib;/lib;/usr/lib] + implicit fwks: [] + + +Performing C++ SOURCE FILE Test HIP_CLANG_SUPPORTS_PARALLEL_JOBS succeeded with the following output: +Change Dir: /home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/opt/rh/devtoolset-7/root/usr/bin/gmake cmTC_72fb7/fast && /opt/rh/devtoolset-7/root/usr/bin/gmake -f CMakeFiles/cmTC_72fb7.dir/build.make CMakeFiles/cmTC_72fb7.dir/build +gmake[1]: Entering directory '/home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp' +Building CXX object CMakeFiles/cmTC_72fb7.dir/src.cxx.o +/opt/dtk-21.04/bin/hipcc -DHIP_CLANG_SUPPORTS_PARALLEL_JOBS -parallel-jobs=1 -std=gnu++11 -o CMakeFiles/cmTC_72fb7.dir/src.cxx.o -c /home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp/src.cxx +Linking CXX executable cmTC_72fb7 +/usr/bin/cmake3 -E cmake_link_script CMakeFiles/cmTC_72fb7.dir/link.txt --verbose=1 +/opt/dtk-21.04/bin/hipcc -DHIP_CLANG_SUPPORTS_PARALLEL_JOBS -Wl,-rpath=/opt/rh/devtoolset-7/root/usr/lib64 -Wl,-rpath=/opt/rh/devtoolset-7/root/usr/lib CMakeFiles/cmTC_72fb7.dir/src.cxx.o -o cmTC_72fb7 +gmake[1]: Leaving directory '/home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp' + + +Source file was: +int main() { return 0; } +Detecting CXX OpenMP compiler ABI info compiled with the following output: +Change Dir: /home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/opt/rh/devtoolset-7/root/usr/bin/gmake cmTC_47e39/fast && /opt/rh/devtoolset-7/root/usr/bin/gmake -f CMakeFiles/cmTC_47e39.dir/build.make CMakeFiles/cmTC_47e39.dir/build +gmake[1]: Entering directory '/home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp' +Building CXX object CMakeFiles/cmTC_47e39.dir/OpenMPTryFlag.cpp.o +/opt/dtk-21.04/bin/hipcc -fopenmp=libomp -v -std=gnu++11 -o CMakeFiles/cmTC_47e39.dir/OpenMPTryFlag.cpp.o -c /home/huchen/FAISS/faiss/build/CMakeFiles/FindOpenMP/OpenMPTryFlag.cpp +clang version 12.0.0 (http://10.0.100.3/dcutoolkit/driverruntime/llvm-project.git f816f1d344d7e4e0e21fc9d134c1b82e12e972f5) +Target: x86_64-unknown-linux-gnu +Thread model: posix +InstalledDir: /opt/dtk-21.04/llvm/bin +Found candidate GCC installation: /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7 +Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/4.8.2 +Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/4.8.5 +Selected GCC installation: /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7 +Candidate multilib: .;@m64 +Candidate multilib: 32;@m32 +Selected multilib: .;@m64 +Found HIP installation: /opt/dtk-21.04, version 4.0.21112-7433ef47 + "/opt/dtk-21.04/llvm/bin/clang-12" -cc1 -triple amdgcn-amd-amdhsa -aux-triple x86_64-unknown-linux-gnu -emit-obj --mrelax-relocations -disable-free -main-file-name OpenMPTryFlag.cpp -mrelocation-model pic -pic-level 1 -mframe-pointer=none -fno-rounding-math -mconstructor-aliases -aux-target-cpu x86-64 -fcuda-is-device -mllvm -amdgpu-internalize-symbols -fcuda-allow-variadic-functions -fvisibility hidden -fapply-global-visibility-to-externs -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/hip.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/ocml.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/ockl.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_daz_opt_off.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_unsafe_math_off.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_finite_only_off.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_correctly_rounded_sqrt_on.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_wavefrontsize64_on.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_isa_version_900.bc -target-cpu gfx900 -fno-split-dwarf-inlining -debugger-tuning=gdb -v -resource-dir /opt/dtk-21.04/llvm/lib/clang/12.0.0 -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/cuda_wrappers -internal-isystem /opt/dtk-21.04/include -include __clang_hip_runtime_wrapper.h -isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/.. -isystem /opt/dtk-21.04/hsa/include -isystem /opt/dtk-21.04/hip/include -D __HIP_ROCclr__ -D __HIP_ROCclr__ -c-isystem /opt/dtk-21.04/include -c-isystem /opt/dtk-21.04 -c-isystem /opencl/include -c-isystem /opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux -c-isystem /opt/rh/devtoolset-7/root/usr/include/c++/7 -c-isystem . -cxx-isystem /opt/dtk-21.04/hiprand/include/ -cxx-isystem /opt/dtk-21.04/rocrand/include -cxx-isystem /opt/dtk-21.04/include -cxx-isystem /opt/dtk-21.04 -cxx-isystem /opencl/include -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7 -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/x86_64-redhat-linux -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7 -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/x86_64-redhat-linux -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward -internal-isystem /usr/local/include -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -internal-isystem /usr/local/include -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O3 -std=gnu++11 -fdeprecated-macro -fno-autolink -fdebug-compilation-dir /home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp -ferror-limit 19 -fhip-new-launch-api -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -vectorize-loops -vectorize-slp -mllvm -amdgpu-early-inline-all=true -mllvm -amdgpu-function-calls=false -fcuda-allow-variadic-functions -faddrsig -o /tmp/OpenMPTryFlag-gfx900-b8373b.o -x hip /home/huchen/FAISS/faiss/build/CMakeFiles/FindOpenMP/OpenMPTryFlag.cpp +clang -cc1 version 12.0.0 based upon LLVM 12.0.0dtk_rel_21.04 default target x86_64-unknown-linux-gnu +ignoring nonexistent directory "/opencl/include" +ignoring nonexistent directory "/opencl/include" +ignoring nonexistent directory "/include" +ignoring nonexistent directory "/include" +ignoring duplicate directory "/opt/dtk-21.04/include" +ignoring duplicate directory "/opt/rh/devtoolset-7/root/usr/include/c++/7" +ignoring duplicate directory "/opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux" +ignoring duplicate directory "/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward" +ignoring duplicate directory "/usr/local/include" +ignoring duplicate directory "/opt/dtk-21.04/llvm/lib/clang/12.0.0/include" +ignoring duplicate directory "/usr/include" +ignoring duplicate directory "/usr/local/include" +ignoring duplicate directory "/opt/dtk-21.04/llvm/lib/clang/12.0.0/include" +ignoring duplicate directory "/usr/include" +#include "..." search starts here: +#include <...> search starts here: + /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/.. + /opt/dtk-21.04/hsa/include + /opt/dtk-21.04/hip/include + /opt/dtk-21.04/hiprand/include + /opt/dtk-21.04/rocrand/include + /opt/dtk-21.04/include + /opt/dtk-21.04 + /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/cuda_wrappers + /opt/rh/devtoolset-7/root/usr/include/c++/7 + /opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux + /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward + /usr/local/include + /opt/dtk-21.04/llvm/lib/clang/12.0.0/include + /usr/include +End of search list. + "/opt/dtk-21.04/llvm/bin/lld" -flavor gnu --no-undefined -shared -plugin-opt=-amdgpu-internalize-symbols -plugin-opt=mcpu=gfx900 -plugin-opt=O3 -plugin-opt=-amdgpu-early-inline-all=true -plugin-opt=-amdgpu-function-calls=false -o /tmp/OpenMPTryFlag-gfx900-bc7454.out /tmp/OpenMPTryFlag-gfx900-b8373b.o + "/opt/dtk-21.04/llvm/bin/clang-12" -cc1 -triple amdgcn-amd-amdhsa -aux-triple x86_64-unknown-linux-gnu -emit-obj --mrelax-relocations -disable-free -main-file-name OpenMPTryFlag.cpp -mrelocation-model pic -pic-level 1 -mframe-pointer=none -fno-rounding-math -mconstructor-aliases -aux-target-cpu x86-64 -fcuda-is-device -mllvm -amdgpu-internalize-symbols -fcuda-allow-variadic-functions -fvisibility hidden -fapply-global-visibility-to-externs -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/hip.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/ocml.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/ockl.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_daz_opt_off.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_unsafe_math_off.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_finite_only_off.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_correctly_rounded_sqrt_on.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_wavefrontsize64_on.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_isa_version_906.bc -target-cpu gfx906 -fno-split-dwarf-inlining -debugger-tuning=gdb -v -resource-dir /opt/dtk-21.04/llvm/lib/clang/12.0.0 -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/cuda_wrappers -internal-isystem /opt/dtk-21.04/include -include __clang_hip_runtime_wrapper.h -isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/.. -isystem /opt/dtk-21.04/hsa/include -isystem /opt/dtk-21.04/hip/include -D __HIP_ROCclr__ -D __HIP_ROCclr__ -c-isystem /opt/dtk-21.04/include -c-isystem /opt/dtk-21.04 -c-isystem /opencl/include -c-isystem /opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux -c-isystem /opt/rh/devtoolset-7/root/usr/include/c++/7 -c-isystem . -cxx-isystem /opt/dtk-21.04/hiprand/include/ -cxx-isystem /opt/dtk-21.04/rocrand/include -cxx-isystem /opt/dtk-21.04/include -cxx-isystem /opt/dtk-21.04 -cxx-isystem /opencl/include -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7 -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/x86_64-redhat-linux -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7 -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/x86_64-redhat-linux -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward -internal-isystem /usr/local/include -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -internal-isystem /usr/local/include -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O3 -std=gnu++11 -fdeprecated-macro -fno-autolink -fdebug-compilation-dir /home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp -ferror-limit 19 -fhip-new-launch-api -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -vectorize-loops -vectorize-slp -mllvm -amdgpu-early-inline-all=true -mllvm -amdgpu-function-calls=false -fcuda-allow-variadic-functions -faddrsig -o /tmp/OpenMPTryFlag-gfx906-eb0f90.o -x hip /home/huchen/FAISS/faiss/build/CMakeFiles/FindOpenMP/OpenMPTryFlag.cpp +clang -cc1 version 12.0.0 based upon LLVM 12.0.0dtk_rel_21.04 default target x86_64-unknown-linux-gnu +ignoring nonexistent directory "/opencl/include" +ignoring nonexistent directory "/opencl/include" +ignoring nonexistent directory "/include" +ignoring nonexistent directory "/include" +ignoring duplicate directory "/opt/dtk-21.04/include" +ignoring duplicate directory "/opt/rh/devtoolset-7/root/usr/include/c++/7" +ignoring duplicate directory "/opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux" +ignoring duplicate directory "/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward" +ignoring duplicate directory "/usr/local/include" +ignoring duplicate directory "/opt/dtk-21.04/llvm/lib/clang/12.0.0/include" +ignoring duplicate directory "/usr/include" +ignoring duplicate directory "/usr/local/include" +ignoring duplicate directory "/opt/dtk-21.04/llvm/lib/clang/12.0.0/include" +ignoring duplicate directory "/usr/include" +#include "..." search starts here: +#include <...> search starts here: + /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/.. + /opt/dtk-21.04/hsa/include + /opt/dtk-21.04/hip/include + /opt/dtk-21.04/hiprand/include + /opt/dtk-21.04/rocrand/include + /opt/dtk-21.04/include + /opt/dtk-21.04 + /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/cuda_wrappers + /opt/rh/devtoolset-7/root/usr/include/c++/7 + /opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux + /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward + /usr/local/include + /opt/dtk-21.04/llvm/lib/clang/12.0.0/include + /usr/include +End of search list. + "/opt/dtk-21.04/llvm/bin/lld" -flavor gnu --no-undefined -shared -plugin-opt=-amdgpu-internalize-symbols -plugin-opt=mcpu=gfx906 -plugin-opt=O3 -plugin-opt=-amdgpu-early-inline-all=true -plugin-opt=-amdgpu-function-calls=false -o /tmp/OpenMPTryFlag-gfx906-3e44d1.out /tmp/OpenMPTryFlag-gfx906-eb0f90.o + "/opt/dtk-21.04/llvm/bin/clang-offload-bundler" -type=o -targets=host-x86_64-unknown-linux,hip-amdgcn-amd-amdhsa-gfx900,hip-amdgcn-amd-amdhsa-gfx906 -inputs=/dev/null,/tmp/OpenMPTryFlag-gfx900-bc7454.out,/tmp/OpenMPTryFlag-gfx906-3e44d1.out -outputs=/tmp/OpenMPTryFlag-547cd1.hipfb + "/opt/dtk-21.04/llvm/bin/clang-12" -cc1 -triple x86_64-unknown-linux-gnu -aux-triple amdgcn-amd-amdhsa -emit-obj --mrelax-relocations -disable-free -main-file-name OpenMPTryFlag.cpp -mrelocation-model static -mframe-pointer=none -fmath-errno -fno-rounding-math -mconstructor-aliases -munwind-tables -target-cpu x86-64 -fno-split-dwarf-inlining -debugger-tuning=gdb -v -resource-dir /opt/dtk-21.04/llvm/lib/clang/12.0.0 -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/cuda_wrappers -internal-isystem /opt/dtk-21.04/include -include __clang_hip_runtime_wrapper.h -isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/.. -isystem /opt/dtk-21.04/hsa/include -isystem /opt/dtk-21.04/hip/include -D __HIP_ROCclr__ -D __HIP_ROCclr__ -c-isystem /opt/dtk-21.04/include -c-isystem /opt/dtk-21.04 -c-isystem /opencl/include -c-isystem /opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux -c-isystem /opt/rh/devtoolset-7/root/usr/include/c++/7 -c-isystem . -cxx-isystem /opt/dtk-21.04/hiprand/include/ -cxx-isystem /opt/dtk-21.04/rocrand/include -cxx-isystem /opt/dtk-21.04/include -cxx-isystem /opt/dtk-21.04 -cxx-isystem /opencl/include -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7 -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/x86_64-redhat-linux -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7 -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/x86_64-redhat-linux -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward -internal-isystem /usr/local/include -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -internal-isystem /usr/local/include -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O3 -std=gnu++11 -fdeprecated-macro -fdebug-compilation-dir /home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp -ferror-limit 19 -fopenmp -fopenmp-cuda-parallel-target-regions -fhip-new-launch-api -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -vectorize-loops -vectorize-slp -mllvm -amdgpu-early-inline-all=true -mllvm -amdgpu-function-calls=false -fcuda-include-gpubinary /tmp/OpenMPTryFlag-547cd1.hipfb -fcuda-allow-variadic-functions -faddrsig -o CMakeFiles/cmTC_47e39.dir/OpenMPTryFlag.cpp.o -x hip /home/huchen/FAISS/faiss/build/CMakeFiles/FindOpenMP/OpenMPTryFlag.cpp +clang -cc1 version 12.0.0 based upon LLVM 12.0.0dtk_rel_21.04 default target x86_64-unknown-linux-gnu +ignoring nonexistent directory "/opencl/include" +ignoring nonexistent directory "/opencl/include" +ignoring nonexistent directory "/include" +ignoring nonexistent directory "/include" +ignoring duplicate directory "/opt/dtk-21.04/include" +ignoring duplicate directory "/opt/rh/devtoolset-7/root/usr/include/c++/7" +ignoring duplicate directory "/opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux" +ignoring duplicate directory "/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward" +ignoring duplicate directory "/usr/local/include" +ignoring duplicate directory "/opt/dtk-21.04/llvm/lib/clang/12.0.0/include" +ignoring duplicate directory "/usr/include" +#include "..." search starts here: +#include <...> search starts here: + /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/.. + /opt/dtk-21.04/hsa/include + /opt/dtk-21.04/hip/include + /opt/dtk-21.04/hiprand/include + /opt/dtk-21.04/rocrand/include + /opt/dtk-21.04/include + /opt/dtk-21.04 + /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/cuda_wrappers + /opt/rh/devtoolset-7/root/usr/include/c++/7 + /opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux + /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward + /usr/local/include + /opt/dtk-21.04/llvm/lib/clang/12.0.0/include + /usr/include +End of search list. +Linking CXX executable cmTC_47e39 +/usr/bin/cmake3 -E cmake_link_script CMakeFiles/cmTC_47e39.dir/link.txt --verbose=1 +/opt/dtk-21.04/bin/hipcc -fopenmp=libomp -v -Wl,-rpath=/opt/rh/devtoolset-7/root/usr/lib64 -Wl,-rpath=/opt/rh/devtoolset-7/root/usr/lib CMakeFiles/cmTC_47e39.dir/OpenMPTryFlag.cpp.o -o cmTC_47e39 -v +clang version 12.0.0 (http://10.0.100.3/dcutoolkit/driverruntime/llvm-project.git f816f1d344d7e4e0e21fc9d134c1b82e12e972f5) +Target: x86_64-unknown-linux-gnu +Thread model: posix +InstalledDir: /opt/dtk-21.04/llvm/bin +Found candidate GCC installation: /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7 +Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/4.8.2 +Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/4.8.5 +Selected GCC installation: /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7 +Candidate multilib: .;@m64 +Candidate multilib: 32;@m32 +Selected multilib: .;@m64 +Found HIP installation: /opt/dtk-21.04, version 4.0.21112-7433ef47 + "/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../bin/ld" --hash-style=gnu --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o cmTC_47e39 /lib/../lib64/crt1.o /lib/../lib64/crti.o /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/crtbegin.o -L/opt/dtk-21.04/hip/lib -L/opt/dtk-21.04/llvm/bin/../lib/clang/12.0.0/lib/linux -L/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7 -L/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../.. -L/opt/dtk-21.04/llvm/bin/../lib -L/lib -L/usr/lib -lgcc_s -lgcc -lpthread -lm -rpath=/opt/rh/devtoolset-7/root/usr/lib64 -rpath=/opt/rh/devtoolset-7/root/usr/lib CMakeFiles/cmTC_47e39.dir/OpenMPTryFlag.cpp.o --enable-new-dtags --rpath=/opt/dtk-21.04/hip/lib:/opt/dtk-21.04/lib -lamdhip64 -lclang_rt.builtins-x86_64 -lstdc++ -lm -lomp -rpath /opt/dtk-21.04/llvm/bin/../lib -lgcc_s -lgcc -lpthread -lc -lgcc_s -lgcc /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/crtend.o /lib/../lib64/crtn.o +gmake[1]: Leaving directory '/home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp' + + + +Parsed CXX OpenMP implicit link information from above output: + link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: /home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):/opt/rh/devtoolset-7/root/usr/bin/gmake cmTC_47e39/fast && /opt/rh/devtoolset-7/root/usr/bin/gmake -f CMakeFiles/cmTC_47e39.dir/build.make CMakeFiles/cmTC_47e39.dir/build] + ignore line: [gmake[1]: Entering directory '/home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp'] + ignore line: [Building CXX object CMakeFiles/cmTC_47e39.dir/OpenMPTryFlag.cpp.o] + ignore line: [/opt/dtk-21.04/bin/hipcc -fopenmp=libomp -v -std=gnu++11 -o CMakeFiles/cmTC_47e39.dir/OpenMPTryFlag.cpp.o -c /home/huchen/FAISS/faiss/build/CMakeFiles/FindOpenMP/OpenMPTryFlag.cpp] + ignore line: [clang version 12.0.0 (http://10.0.100.3/dcutoolkit/driverruntime/llvm-project.git f816f1d344d7e4e0e21fc9d134c1b82e12e972f5)] + ignore line: [Target: x86_64-unknown-linux-gnu] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /opt/dtk-21.04/llvm/bin] + ignore line: [Found candidate GCC installation: /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7] + ignore line: [Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/4.8.2] + ignore line: [Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/4.8.5] + ignore line: [Selected GCC installation: /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7] + ignore line: [Candidate multilib: .] + ignore line: [@m64] + ignore line: [Candidate multilib: 32] + ignore line: [@m32] + ignore line: [Selected multilib: .] + ignore line: [@m64] + ignore line: [Found HIP installation: /opt/dtk-21.04 version 4.0.21112-7433ef47] + ignore line: [ "/opt/dtk-21.04/llvm/bin/clang-12" -cc1 -triple amdgcn-amd-amdhsa -aux-triple x86_64-unknown-linux-gnu -emit-obj --mrelax-relocations -disable-free -main-file-name OpenMPTryFlag.cpp -mrelocation-model pic -pic-level 1 -mframe-pointer=none -fno-rounding-math -mconstructor-aliases -aux-target-cpu x86-64 -fcuda-is-device -mllvm -amdgpu-internalize-symbols -fcuda-allow-variadic-functions -fvisibility hidden -fapply-global-visibility-to-externs -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/hip.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/ocml.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/ockl.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_daz_opt_off.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_unsafe_math_off.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_finite_only_off.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_correctly_rounded_sqrt_on.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_wavefrontsize64_on.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_isa_version_900.bc -target-cpu gfx900 -fno-split-dwarf-inlining -debugger-tuning=gdb -v -resource-dir /opt/dtk-21.04/llvm/lib/clang/12.0.0 -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/cuda_wrappers -internal-isystem /opt/dtk-21.04/include -include __clang_hip_runtime_wrapper.h -isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/.. -isystem /opt/dtk-21.04/hsa/include -isystem /opt/dtk-21.04/hip/include -D __HIP_ROCclr__ -D __HIP_ROCclr__ -c-isystem /opt/dtk-21.04/include -c-isystem /opt/dtk-21.04 -c-isystem /opencl/include -c-isystem /opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux -c-isystem /opt/rh/devtoolset-7/root/usr/include/c++/7 -c-isystem . -cxx-isystem /opt/dtk-21.04/hiprand/include/ -cxx-isystem /opt/dtk-21.04/rocrand/include -cxx-isystem /opt/dtk-21.04/include -cxx-isystem /opt/dtk-21.04 -cxx-isystem /opencl/include -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7 -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/x86_64-redhat-linux -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7 -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/x86_64-redhat-linux -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward -internal-isystem /usr/local/include -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -internal-isystem /usr/local/include -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O3 -std=gnu++11 -fdeprecated-macro -fno-autolink -fdebug-compilation-dir /home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp -ferror-limit 19 -fhip-new-launch-api -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -vectorize-loops -vectorize-slp -mllvm -amdgpu-early-inline-all=true -mllvm -amdgpu-function-calls=false -fcuda-allow-variadic-functions -faddrsig -o /tmp/OpenMPTryFlag-gfx900-b8373b.o -x hip /home/huchen/FAISS/faiss/build/CMakeFiles/FindOpenMP/OpenMPTryFlag.cpp] + ignore line: [clang -cc1 version 12.0.0 based upon LLVM 12.0.0dtk_rel_21.04 default target x86_64-unknown-linux-gnu] + ignore line: [ignoring nonexistent directory "/opencl/include"] + ignore line: [ignoring nonexistent directory "/opencl/include"] + ignore line: [ignoring nonexistent directory "/include"] + ignore line: [ignoring nonexistent directory "/include"] + ignore line: [ignoring duplicate directory "/opt/dtk-21.04/include"] + ignore line: [ignoring duplicate directory "/opt/rh/devtoolset-7/root/usr/include/c++/7"] + ignore line: [ignoring duplicate directory "/opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux"] + ignore line: [ignoring duplicate directory "/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward"] + ignore line: [ignoring duplicate directory "/usr/local/include"] + ignore line: [ignoring duplicate directory "/opt/dtk-21.04/llvm/lib/clang/12.0.0/include"] + ignore line: [ignoring duplicate directory "/usr/include"] + ignore line: [ignoring duplicate directory "/usr/local/include"] + ignore line: [ignoring duplicate directory "/opt/dtk-21.04/llvm/lib/clang/12.0.0/include"] + ignore line: [ignoring duplicate directory "/usr/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/..] + ignore line: [ /opt/dtk-21.04/hsa/include] + ignore line: [ /opt/dtk-21.04/hip/include] + ignore line: [ /opt/dtk-21.04/hiprand/include] + ignore line: [ /opt/dtk-21.04/rocrand/include] + ignore line: [ /opt/dtk-21.04/include] + ignore line: [ /opt/dtk-21.04] + ignore line: [ /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/cuda_wrappers] + ignore line: [ /opt/rh/devtoolset-7/root/usr/include/c++/7] + ignore line: [ /opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux] + ignore line: [ /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward] + ignore line: [ /usr/local/include] + ignore line: [ /opt/dtk-21.04/llvm/lib/clang/12.0.0/include] + ignore line: [ /usr/include] + ignore line: [End of search list.] + ignore line: [ "/opt/dtk-21.04/llvm/bin/lld" -flavor gnu --no-undefined -shared -plugin-opt=-amdgpu-internalize-symbols -plugin-opt=mcpu=gfx900 -plugin-opt=O3 -plugin-opt=-amdgpu-early-inline-all=true -plugin-opt=-amdgpu-function-calls=false -o /tmp/OpenMPTryFlag-gfx900-bc7454.out /tmp/OpenMPTryFlag-gfx900-b8373b.o] + ignore line: [ "/opt/dtk-21.04/llvm/bin/clang-12" -cc1 -triple amdgcn-amd-amdhsa -aux-triple x86_64-unknown-linux-gnu -emit-obj --mrelax-relocations -disable-free -main-file-name OpenMPTryFlag.cpp -mrelocation-model pic -pic-level 1 -mframe-pointer=none -fno-rounding-math -mconstructor-aliases -aux-target-cpu x86-64 -fcuda-is-device -mllvm -amdgpu-internalize-symbols -fcuda-allow-variadic-functions -fvisibility hidden -fapply-global-visibility-to-externs -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/hip.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/ocml.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/ockl.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_daz_opt_off.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_unsafe_math_off.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_finite_only_off.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_correctly_rounded_sqrt_on.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_wavefrontsize64_on.bc -mlink-builtin-bitcode /opt/dtk-21.04/amdgcn/bitcode/oclc_isa_version_906.bc -target-cpu gfx906 -fno-split-dwarf-inlining -debugger-tuning=gdb -v -resource-dir /opt/dtk-21.04/llvm/lib/clang/12.0.0 -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/cuda_wrappers -internal-isystem /opt/dtk-21.04/include -include __clang_hip_runtime_wrapper.h -isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/.. -isystem /opt/dtk-21.04/hsa/include -isystem /opt/dtk-21.04/hip/include -D __HIP_ROCclr__ -D __HIP_ROCclr__ -c-isystem /opt/dtk-21.04/include -c-isystem /opt/dtk-21.04 -c-isystem /opencl/include -c-isystem /opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux -c-isystem /opt/rh/devtoolset-7/root/usr/include/c++/7 -c-isystem . -cxx-isystem /opt/dtk-21.04/hiprand/include/ -cxx-isystem /opt/dtk-21.04/rocrand/include -cxx-isystem /opt/dtk-21.04/include -cxx-isystem /opt/dtk-21.04 -cxx-isystem /opencl/include -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7 -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/x86_64-redhat-linux -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7 -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/x86_64-redhat-linux -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward -internal-isystem /usr/local/include -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -internal-isystem /usr/local/include -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O3 -std=gnu++11 -fdeprecated-macro -fno-autolink -fdebug-compilation-dir /home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp -ferror-limit 19 -fhip-new-launch-api -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -vectorize-loops -vectorize-slp -mllvm -amdgpu-early-inline-all=true -mllvm -amdgpu-function-calls=false -fcuda-allow-variadic-functions -faddrsig -o /tmp/OpenMPTryFlag-gfx906-eb0f90.o -x hip /home/huchen/FAISS/faiss/build/CMakeFiles/FindOpenMP/OpenMPTryFlag.cpp] + ignore line: [clang -cc1 version 12.0.0 based upon LLVM 12.0.0dtk_rel_21.04 default target x86_64-unknown-linux-gnu] + ignore line: [ignoring nonexistent directory "/opencl/include"] + ignore line: [ignoring nonexistent directory "/opencl/include"] + ignore line: [ignoring nonexistent directory "/include"] + ignore line: [ignoring nonexistent directory "/include"] + ignore line: [ignoring duplicate directory "/opt/dtk-21.04/include"] + ignore line: [ignoring duplicate directory "/opt/rh/devtoolset-7/root/usr/include/c++/7"] + ignore line: [ignoring duplicate directory "/opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux"] + ignore line: [ignoring duplicate directory "/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward"] + ignore line: [ignoring duplicate directory "/usr/local/include"] + ignore line: [ignoring duplicate directory "/opt/dtk-21.04/llvm/lib/clang/12.0.0/include"] + ignore line: [ignoring duplicate directory "/usr/include"] + ignore line: [ignoring duplicate directory "/usr/local/include"] + ignore line: [ignoring duplicate directory "/opt/dtk-21.04/llvm/lib/clang/12.0.0/include"] + ignore line: [ignoring duplicate directory "/usr/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/..] + ignore line: [ /opt/dtk-21.04/hsa/include] + ignore line: [ /opt/dtk-21.04/hip/include] + ignore line: [ /opt/dtk-21.04/hiprand/include] + ignore line: [ /opt/dtk-21.04/rocrand/include] + ignore line: [ /opt/dtk-21.04/include] + ignore line: [ /opt/dtk-21.04] + ignore line: [ /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/cuda_wrappers] + ignore line: [ /opt/rh/devtoolset-7/root/usr/include/c++/7] + ignore line: [ /opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux] + ignore line: [ /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward] + ignore line: [ /usr/local/include] + ignore line: [ /opt/dtk-21.04/llvm/lib/clang/12.0.0/include] + ignore line: [ /usr/include] + ignore line: [End of search list.] + ignore line: [ "/opt/dtk-21.04/llvm/bin/lld" -flavor gnu --no-undefined -shared -plugin-opt=-amdgpu-internalize-symbols -plugin-opt=mcpu=gfx906 -plugin-opt=O3 -plugin-opt=-amdgpu-early-inline-all=true -plugin-opt=-amdgpu-function-calls=false -o /tmp/OpenMPTryFlag-gfx906-3e44d1.out /tmp/OpenMPTryFlag-gfx906-eb0f90.o] + ignore line: [ "/opt/dtk-21.04/llvm/bin/clang-offload-bundler" -type=o -targets=host-x86_64-unknown-linux hip-amdgcn-amd-amdhsa-gfx900 hip-amdgcn-amd-amdhsa-gfx906 -inputs=/dev/null /tmp/OpenMPTryFlag-gfx900-bc7454.out /tmp/OpenMPTryFlag-gfx906-3e44d1.out -outputs=/tmp/OpenMPTryFlag-547cd1.hipfb] + ignore line: [ "/opt/dtk-21.04/llvm/bin/clang-12" -cc1 -triple x86_64-unknown-linux-gnu -aux-triple amdgcn-amd-amdhsa -emit-obj --mrelax-relocations -disable-free -main-file-name OpenMPTryFlag.cpp -mrelocation-model static -mframe-pointer=none -fmath-errno -fno-rounding-math -mconstructor-aliases -munwind-tables -target-cpu x86-64 -fno-split-dwarf-inlining -debugger-tuning=gdb -v -resource-dir /opt/dtk-21.04/llvm/lib/clang/12.0.0 -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/cuda_wrappers -internal-isystem /opt/dtk-21.04/include -include __clang_hip_runtime_wrapper.h -isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/.. -isystem /opt/dtk-21.04/hsa/include -isystem /opt/dtk-21.04/hip/include -D __HIP_ROCclr__ -D __HIP_ROCclr__ -c-isystem /opt/dtk-21.04/include -c-isystem /opt/dtk-21.04 -c-isystem /opencl/include -c-isystem /opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux -c-isystem /opt/rh/devtoolset-7/root/usr/include/c++/7 -c-isystem . -cxx-isystem /opt/dtk-21.04/hiprand/include/ -cxx-isystem /opt/dtk-21.04/rocrand/include -cxx-isystem /opt/dtk-21.04/include -cxx-isystem /opt/dtk-21.04 -cxx-isystem /opencl/include -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7 -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/x86_64-redhat-linux -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7 -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/x86_64-redhat-linux -internal-isystem /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward -internal-isystem /usr/local/include -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -internal-isystem /usr/local/include -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O3 -std=gnu++11 -fdeprecated-macro -fdebug-compilation-dir /home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp -ferror-limit 19 -fopenmp -fopenmp-cuda-parallel-target-regions -fhip-new-launch-api -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -vectorize-loops -vectorize-slp -mllvm -amdgpu-early-inline-all=true -mllvm -amdgpu-function-calls=false -fcuda-include-gpubinary /tmp/OpenMPTryFlag-547cd1.hipfb -fcuda-allow-variadic-functions -faddrsig -o CMakeFiles/cmTC_47e39.dir/OpenMPTryFlag.cpp.o -x hip /home/huchen/FAISS/faiss/build/CMakeFiles/FindOpenMP/OpenMPTryFlag.cpp] + ignore line: [clang -cc1 version 12.0.0 based upon LLVM 12.0.0dtk_rel_21.04 default target x86_64-unknown-linux-gnu] + ignore line: [ignoring nonexistent directory "/opencl/include"] + ignore line: [ignoring nonexistent directory "/opencl/include"] + ignore line: [ignoring nonexistent directory "/include"] + ignore line: [ignoring nonexistent directory "/include"] + ignore line: [ignoring duplicate directory "/opt/dtk-21.04/include"] + ignore line: [ignoring duplicate directory "/opt/rh/devtoolset-7/root/usr/include/c++/7"] + ignore line: [ignoring duplicate directory "/opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux"] + ignore line: [ignoring duplicate directory "/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward"] + ignore line: [ignoring duplicate directory "/usr/local/include"] + ignore line: [ignoring duplicate directory "/opt/dtk-21.04/llvm/lib/clang/12.0.0/include"] + ignore line: [ignoring duplicate directory "/usr/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/..] + ignore line: [ /opt/dtk-21.04/hsa/include] + ignore line: [ /opt/dtk-21.04/hip/include] + ignore line: [ /opt/dtk-21.04/hiprand/include] + ignore line: [ /opt/dtk-21.04/rocrand/include] + ignore line: [ /opt/dtk-21.04/include] + ignore line: [ /opt/dtk-21.04] + ignore line: [ /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/cuda_wrappers] + ignore line: [ /opt/rh/devtoolset-7/root/usr/include/c++/7] + ignore line: [ /opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux] + ignore line: [ /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../include/c++/7/backward] + ignore line: [ /usr/local/include] + ignore line: [ /opt/dtk-21.04/llvm/lib/clang/12.0.0/include] + ignore line: [ /usr/include] + ignore line: [End of search list.] + ignore line: [Linking CXX executable cmTC_47e39] + ignore line: [/usr/bin/cmake3 -E cmake_link_script CMakeFiles/cmTC_47e39.dir/link.txt --verbose=1] + ignore line: [/opt/dtk-21.04/bin/hipcc -fopenmp=libomp -v -Wl -rpath=/opt/rh/devtoolset-7/root/usr/lib64 -Wl -rpath=/opt/rh/devtoolset-7/root/usr/lib CMakeFiles/cmTC_47e39.dir/OpenMPTryFlag.cpp.o -o cmTC_47e39 -v ] + ignore line: [clang version 12.0.0 (http://10.0.100.3/dcutoolkit/driverruntime/llvm-project.git f816f1d344d7e4e0e21fc9d134c1b82e12e972f5)] + ignore line: [Target: x86_64-unknown-linux-gnu] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /opt/dtk-21.04/llvm/bin] + ignore line: [Found candidate GCC installation: /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7] + ignore line: [Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/4.8.2] + ignore line: [Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/4.8.5] + ignore line: [Selected GCC installation: /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7] + ignore line: [Candidate multilib: .] + ignore line: [@m64] + ignore line: [Candidate multilib: 32] + ignore line: [@m32] + ignore line: [Selected multilib: .] + ignore line: [@m64] + ignore line: [Found HIP installation: /opt/dtk-21.04 version 4.0.21112-7433ef47] + link line: [ "/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../bin/ld" --hash-style=gnu --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o cmTC_47e39 /lib/../lib64/crt1.o /lib/../lib64/crti.o /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/crtbegin.o -L/opt/dtk-21.04/hip/lib -L/opt/dtk-21.04/llvm/bin/../lib/clang/12.0.0/lib/linux -L/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7 -L/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../.. -L/opt/dtk-21.04/llvm/bin/../lib -L/lib -L/usr/lib -lgcc_s -lgcc -lpthread -lm -rpath=/opt/rh/devtoolset-7/root/usr/lib64 -rpath=/opt/rh/devtoolset-7/root/usr/lib CMakeFiles/cmTC_47e39.dir/OpenMPTryFlag.cpp.o --enable-new-dtags --rpath=/opt/dtk-21.04/hip/lib:/opt/dtk-21.04/lib -lamdhip64 -lclang_rt.builtins-x86_64 -lstdc++ -lm -lomp -rpath /opt/dtk-21.04/llvm/bin/../lib -lgcc_s -lgcc -lpthread -lc -lgcc_s -lgcc /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/crtend.o /lib/../lib64/crtn.o] + arg [/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../bin/ld] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [elf_x86_64] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib64/ld-linux-x86-64.so.2] ==> ignore + arg [-o] ==> ignore + arg [cmTC_47e39] ==> ignore + arg [/lib/../lib64/crt1.o] ==> ignore + arg [/lib/../lib64/crti.o] ==> ignore + arg [/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/crtbegin.o] ==> ignore + arg [-L/opt/dtk-21.04/hip/lib] ==> dir [/opt/dtk-21.04/hip/lib] + arg [-L/opt/dtk-21.04/llvm/bin/../lib/clang/12.0.0/lib/linux] ==> dir [/opt/dtk-21.04/llvm/bin/../lib/clang/12.0.0/lib/linux] + arg [-L/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7] ==> dir [/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7] + arg [-L/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../lib64] ==> dir [/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../lib64] + arg [-L/lib/../lib64] ==> dir [/lib/../lib64] + arg [-L/usr/lib/../lib64] ==> dir [/usr/lib/../lib64] + arg [-L/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../..] ==> dir [/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../..] + arg [-L/opt/dtk-21.04/llvm/bin/../lib] ==> dir [/opt/dtk-21.04/llvm/bin/../lib] + arg [-L/lib] ==> dir [/lib] + arg [-L/usr/lib] ==> dir [/usr/lib] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [-lpthread] ==> lib [pthread] + arg [-lm] ==> lib [m] + arg [-rpath=/opt/rh/devtoolset-7/root/usr/lib64] ==> ignore + arg [-rpath=/opt/rh/devtoolset-7/root/usr/lib] ==> ignore + arg [CMakeFiles/cmTC_47e39.dir/OpenMPTryFlag.cpp.o] ==> ignore + arg [--enable-new-dtags] ==> ignore + arg [--rpath=/opt/dtk-21.04/hip/lib:/opt/dtk-21.04/lib] ==> ignore + arg [-lamdhip64] ==> lib [amdhip64] + arg [-lclang_rt.builtins-x86_64] ==> lib [clang_rt.builtins-x86_64] + arg [-lstdc++] ==> lib [stdc++] + arg [-lm] ==> lib [m] + arg [-lomp] ==> lib [omp] + arg [-rpath] ==> ignore + arg [/opt/dtk-21.04/llvm/bin/../lib] ==> ignore + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [-lpthread] ==> lib [pthread] + arg [-lc] ==> lib [c] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/crtend.o] ==> ignore + arg [/lib/../lib64/crtn.o] ==> ignore + collapse library dir [/opt/dtk-21.04/hip/lib] ==> [/opt/dtk-21.04/hip/lib] + collapse library dir [/opt/dtk-21.04/llvm/bin/../lib/clang/12.0.0/lib/linux] ==> [/opt/dtk-21.04/llvm/lib/clang/12.0.0/lib/linux] + collapse library dir [/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7] ==> [/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7] + collapse library dir [/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../lib64] ==> [/opt/rh/devtoolset-7/root/usr/lib64] + collapse library dir [/lib/../lib64] ==> [/lib64] + collapse library dir [/usr/lib/../lib64] ==> [/usr/lib64] + collapse library dir [/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../..] ==> [/opt/rh/devtoolset-7/root/usr/lib] + collapse library dir [/opt/dtk-21.04/llvm/bin/../lib] ==> [/opt/dtk-21.04/llvm/lib] + collapse library dir [/lib] ==> [/lib] + collapse library dir [/usr/lib] ==> [/usr/lib] + implicit libs: [gcc_s;gcc;pthread;m;amdhip64;clang_rt.builtins-x86_64;stdc++;m;omp;gcc_s;gcc;pthread;c;gcc_s;gcc] + implicit dirs: [/opt/dtk-21.04/hip/lib;/opt/dtk-21.04/llvm/lib/clang/12.0.0/lib/linux;/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7;/opt/rh/devtoolset-7/root/usr/lib64;/lib64;/usr/lib64;/opt/rh/devtoolset-7/root/usr/lib;/opt/dtk-21.04/llvm/lib;/lib;/usr/lib] + implicit fwks: [] + + +Determining if the include file pthread.h exists passed with the following output: +Change Dir: /home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/opt/rh/devtoolset-7/root/usr/bin/gmake cmTC_24d5a/fast && /opt/rh/devtoolset-7/root/usr/bin/gmake -f CMakeFiles/cmTC_24d5a.dir/build.make CMakeFiles/cmTC_24d5a.dir/build +gmake[1]: Entering directory '/home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp' +Building CXX object CMakeFiles/cmTC_24d5a.dir/CheckIncludeFile.cxx.o +/opt/dtk-21.04/bin/hipcc -std=gnu++11 -o CMakeFiles/cmTC_24d5a.dir/CheckIncludeFile.cxx.o -c /home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp/CheckIncludeFile.cxx +Linking CXX executable cmTC_24d5a +/usr/bin/cmake3 -E cmake_link_script CMakeFiles/cmTC_24d5a.dir/link.txt --verbose=1 +/opt/dtk-21.04/bin/hipcc -Wl,-rpath=/opt/rh/devtoolset-7/root/usr/lib64 -Wl,-rpath=/opt/rh/devtoolset-7/root/usr/lib CMakeFiles/cmTC_24d5a.dir/CheckIncludeFile.cxx.o -o cmTC_24d5a +gmake[1]: Leaving directory '/home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp' + + + +Determining if the function sgemm_ exists passed with the following output: +Change Dir: /home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/opt/rh/devtoolset-7/root/usr/bin/gmake cmTC_01f66/fast && /opt/rh/devtoolset-7/root/usr/bin/gmake -f CMakeFiles/cmTC_01f66.dir/build.make CMakeFiles/cmTC_01f66.dir/build +gmake[1]: Entering directory '/home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp' +Building CXX object CMakeFiles/cmTC_01f66.dir/CheckFunctionExists.cxx.o +/opt/dtk-21.04/bin/hipcc -DCHECK_FUNCTION_EXISTS=sgemm_ -std=gnu++11 -o CMakeFiles/cmTC_01f66.dir/CheckFunctionExists.cxx.o -c /home/huchen/FAISS/faiss/build/CMakeFiles/CheckFunctionExists/CheckFunctionExists.cxx +Linking CXX executable cmTC_01f66 +/usr/bin/cmake3 -E cmake_link_script CMakeFiles/cmTC_01f66.dir/link.txt --verbose=1 +/opt/dtk-21.04/bin/hipcc -DCHECK_FUNCTION_EXISTS=sgemm_ -Wl,-rpath=/opt/rh/devtoolset-7/root/usr/lib64 -Wl,-rpath=/opt/rh/devtoolset-7/root/usr/lib CMakeFiles/cmTC_01f66.dir/CheckFunctionExists.cxx.o -o cmTC_01f66 -L/home/huchen/intel-compiler-2017.5.239/mkl/lib/intel64_lin -Wl,-rpath,/home/huchen/intel-compiler-2017.5.239/mkl/lib/intel64_lin -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core /opt/dtk-21.04/llvm/lib/libiomp5.so -pthread -lm -ldl +gmake[1]: Leaving directory '/home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp' + + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. +Compiler: /opt/dtk-21.04/bin/hipcc +Build flags: +Id flags: + +The output was: +0 + + +Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "a.out" + +The C compiler identification is Clang, found in "/home/huchen/FAISS/faiss/build/CMakeFiles/3.17.5/CompilerIdC/a.out" + +Determining if the C compiler works passed with the following output: +Change Dir: /home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/opt/rh/devtoolset-7/root/usr/bin/gmake cmTC_86033/fast && /opt/rh/devtoolset-7/root/usr/bin/gmake -f CMakeFiles/cmTC_86033.dir/build.make CMakeFiles/cmTC_86033.dir/build +gmake[1]: Entering directory '/home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp' +Building C object CMakeFiles/cmTC_86033.dir/testCCompiler.c.o +/opt/dtk-21.04/bin/hipcc -o CMakeFiles/cmTC_86033.dir/testCCompiler.c.o -c /home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp/testCCompiler.c +Linking C executable cmTC_86033 +/usr/bin/cmake3 -E cmake_link_script CMakeFiles/cmTC_86033.dir/link.txt --verbose=1 +/opt/dtk-21.04/bin/hipcc -Wl,-rpath=/opt/rh/devtoolset-7/root/usr/lib64 -Wl,-rpath=/opt/rh/devtoolset-7/root/usr/lib -rdynamic CMakeFiles/cmTC_86033.dir/testCCompiler.c.o -o cmTC_86033 +gmake[1]: Leaving directory '/home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp' + + + +Detecting C compiler ABI info compiled with the following output: +Change Dir: /home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/opt/rh/devtoolset-7/root/usr/bin/gmake cmTC_af96e/fast && /opt/rh/devtoolset-7/root/usr/bin/gmake -f CMakeFiles/cmTC_af96e.dir/build.make CMakeFiles/cmTC_af96e.dir/build +gmake[1]: Entering directory '/home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp' +Building C object CMakeFiles/cmTC_af96e.dir/CMakeCCompilerABI.c.o +/opt/dtk-21.04/bin/hipcc -v -o CMakeFiles/cmTC_af96e.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake3/Modules/CMakeCCompilerABI.c +clang version 12.0.0 (http://10.0.100.3/dcutoolkit/driverruntime/llvm-project.git f816f1d344d7e4e0e21fc9d134c1b82e12e972f5) +Target: x86_64-unknown-linux-gnu +Thread model: posix +InstalledDir: /opt/dtk-21.04/llvm/bin +Found candidate GCC installation: /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7 +Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/4.8.2 +Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/4.8.5 +Selected GCC installation: /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7 +Candidate multilib: .;@m64 +Candidate multilib: 32;@m32 +Selected multilib: .;@m64 +Found HIP installation: /opt/dtk-21.04, version 4.0.21112-7433ef47 + (in-process) + "/opt/dtk-21.04/llvm/bin/clang-12" -cc1 -triple x86_64-unknown-linux-gnu -emit-obj --mrelax-relocations -disable-free -main-file-name CMakeCCompilerABI.c -mrelocation-model static -mframe-pointer=none -fmath-errno -fno-rounding-math -mconstructor-aliases -munwind-tables -target-cpu x86-64 -fno-split-dwarf-inlining -debugger-tuning=gdb -v -resource-dir /opt/dtk-21.04/llvm/lib/clang/12.0.0 -isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/.. -isystem /opt/dtk-21.04/hsa/include -isystem /opt/dtk-21.04/hip/include -D __HIP_ROCclr__ -D __HIP_ROCclr__ -c-isystem /opt/dtk-21.04/include -c-isystem /opt/dtk-21.04 -c-isystem /opencl/include -c-isystem /opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux -c-isystem /opt/rh/devtoolset-7/root/usr/include/c++/7 -c-isystem . -cxx-isystem /opt/dtk-21.04/hiprand/include/ -cxx-isystem /opt/dtk-21.04/rocrand/include -cxx-isystem /opt/dtk-21.04/include -cxx-isystem /opt/dtk-21.04 -cxx-isystem /opencl/include -internal-isystem /usr/local/include -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O3 -fdebug-compilation-dir /home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp -ferror-limit 19 -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -faddrsig -o CMakeFiles/cmTC_af96e.dir/CMakeCCompilerABI.c.o -x c /usr/share/cmake3/Modules/CMakeCCompilerABI.c +clang -cc1 version 12.0.0 based upon LLVM 12.0.0dtk_rel_21.04 default target x86_64-unknown-linux-gnu +ignoring nonexistent directory "/opencl/include" +ignoring nonexistent directory "/opencl/include" +ignoring nonexistent directory "/include" +#include "..." search starts here: +#include <...> search starts here: + /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/.. + /opt/dtk-21.04/hsa/include + /opt/dtk-21.04/hip/include + /opt/dtk-21.04/include + /opt/dtk-21.04 + /opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux + /opt/rh/devtoolset-7/root/usr/include/c++/7 + . + /usr/local/include + /opt/dtk-21.04/llvm/lib/clang/12.0.0/include + /usr/include +End of search list. +Linking C executable cmTC_af96e +/usr/bin/cmake3 -E cmake_link_script CMakeFiles/cmTC_af96e.dir/link.txt --verbose=1 +/opt/dtk-21.04/bin/hipcc -Wl,-rpath=/opt/rh/devtoolset-7/root/usr/lib64 -Wl,-rpath=/opt/rh/devtoolset-7/root/usr/lib -v -rdynamic CMakeFiles/cmTC_af96e.dir/CMakeCCompilerABI.c.o -o cmTC_af96e +clang version 12.0.0 (http://10.0.100.3/dcutoolkit/driverruntime/llvm-project.git f816f1d344d7e4e0e21fc9d134c1b82e12e972f5) +Target: x86_64-unknown-linux-gnu +Thread model: posix +InstalledDir: /opt/dtk-21.04/llvm/bin +Found candidate GCC installation: /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7 +Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/4.8.2 +Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/4.8.5 +Selected GCC installation: /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7 +Candidate multilib: .;@m64 +Candidate multilib: 32;@m32 +Selected multilib: .;@m64 +Found HIP installation: /opt/dtk-21.04, version 4.0.21112-7433ef47 + "/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../bin/ld" -export-dynamic --hash-style=gnu --eh-frame-hdr -m elf_x86_64 -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o cmTC_af96e /lib/../lib64/crt1.o /lib/../lib64/crti.o /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/crtbegin.o -L/opt/dtk-21.04/hip/lib -L/opt/dtk-21.04/llvm/bin/../lib/clang/12.0.0/lib/linux -L/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7 -L/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../.. -L/opt/dtk-21.04/llvm/bin/../lib -L/lib -L/usr/lib -lgcc_s -lgcc -lpthread -lm -rpath=/opt/rh/devtoolset-7/root/usr/lib64 -rpath=/opt/rh/devtoolset-7/root/usr/lib CMakeFiles/cmTC_af96e.dir/CMakeCCompilerABI.c.o --enable-new-dtags --rpath=/opt/dtk-21.04/hip/lib:/opt/dtk-21.04/lib -lamdhip64 -lclang_rt.builtins-x86_64 -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/crtend.o /lib/../lib64/crtn.o +gmake[1]: Leaving directory '/home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp' + + + +Parsed C implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [/opt/dtk-21.04/llvm/lib/clang/12.0.0/include/..] + add: [/opt/dtk-21.04/hsa/include] + add: [/opt/dtk-21.04/hip/include] + add: [/opt/dtk-21.04/include] + add: [/opt/dtk-21.04] + add: [/opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux] + add: [/opt/rh/devtoolset-7/root/usr/include/c++/7] + add: [.] + add: [/usr/local/include] + add: [/opt/dtk-21.04/llvm/lib/clang/12.0.0/include] + add: [/usr/include] + end of search list found + collapse include dir [/opt/dtk-21.04/llvm/lib/clang/12.0.0/include/..] ==> [/opt/dtk-21.04/llvm/lib/clang/12.0.0] + collapse include dir [/opt/dtk-21.04/hsa/include] ==> [/opt/dtk-21.04/hsa/include] + collapse include dir [/opt/dtk-21.04/hip/include] ==> [/opt/dtk-21.04/hip/include] + collapse include dir [/opt/dtk-21.04/include] ==> [/opt/dtk-21.04/include] + collapse include dir [/opt/dtk-21.04] ==> [/opt/dtk-21.04] + collapse include dir [/opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux] ==> [/opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux] + collapse include dir [/opt/rh/devtoolset-7/root/usr/include/c++/7] ==> [/opt/rh/devtoolset-7/root/usr/include/c++/7] + skipping relative include dir [.] + collapse include dir [/usr/local/include] ==> [/usr/local/include] + collapse include dir [/opt/dtk-21.04/llvm/lib/clang/12.0.0/include] ==> [/opt/dtk-21.04/llvm/lib/clang/12.0.0/include] + collapse include dir [/usr/include] ==> [/usr/include] + implicit include dirs: [/opt/dtk-21.04/llvm/lib/clang/12.0.0;/opt/dtk-21.04/hsa/include;/opt/dtk-21.04/hip/include;/opt/dtk-21.04/include;/opt/dtk-21.04;/opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux;/opt/rh/devtoolset-7/root/usr/include/c++/7;/usr/local/include;/opt/dtk-21.04/llvm/lib/clang/12.0.0/include;/usr/include] + + +Parsed C implicit link information from above output: + link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: /home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):/opt/rh/devtoolset-7/root/usr/bin/gmake cmTC_af96e/fast && /opt/rh/devtoolset-7/root/usr/bin/gmake -f CMakeFiles/cmTC_af96e.dir/build.make CMakeFiles/cmTC_af96e.dir/build] + ignore line: [gmake[1]: Entering directory '/home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp'] + ignore line: [Building C object CMakeFiles/cmTC_af96e.dir/CMakeCCompilerABI.c.o] + ignore line: [/opt/dtk-21.04/bin/hipcc -v -o CMakeFiles/cmTC_af96e.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake3/Modules/CMakeCCompilerABI.c] + ignore line: [clang version 12.0.0 (http://10.0.100.3/dcutoolkit/driverruntime/llvm-project.git f816f1d344d7e4e0e21fc9d134c1b82e12e972f5)] + ignore line: [Target: x86_64-unknown-linux-gnu] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /opt/dtk-21.04/llvm/bin] + ignore line: [Found candidate GCC installation: /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7] + ignore line: [Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/4.8.2] + ignore line: [Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/4.8.5] + ignore line: [Selected GCC installation: /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7] + ignore line: [Candidate multilib: .] + ignore line: [@m64] + ignore line: [Candidate multilib: 32] + ignore line: [@m32] + ignore line: [Selected multilib: .] + ignore line: [@m64] + ignore line: [Found HIP installation: /opt/dtk-21.04 version 4.0.21112-7433ef47] + ignore line: [ (in-process)] + ignore line: [ "/opt/dtk-21.04/llvm/bin/clang-12" -cc1 -triple x86_64-unknown-linux-gnu -emit-obj --mrelax-relocations -disable-free -main-file-name CMakeCCompilerABI.c -mrelocation-model static -mframe-pointer=none -fmath-errno -fno-rounding-math -mconstructor-aliases -munwind-tables -target-cpu x86-64 -fno-split-dwarf-inlining -debugger-tuning=gdb -v -resource-dir /opt/dtk-21.04/llvm/lib/clang/12.0.0 -isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/.. -isystem /opt/dtk-21.04/hsa/include -isystem /opt/dtk-21.04/hip/include -D __HIP_ROCclr__ -D __HIP_ROCclr__ -c-isystem /opt/dtk-21.04/include -c-isystem /opt/dtk-21.04 -c-isystem /opencl/include -c-isystem /opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux -c-isystem /opt/rh/devtoolset-7/root/usr/include/c++/7 -c-isystem . -cxx-isystem /opt/dtk-21.04/hiprand/include/ -cxx-isystem /opt/dtk-21.04/rocrand/include -cxx-isystem /opt/dtk-21.04/include -cxx-isystem /opt/dtk-21.04 -cxx-isystem /opencl/include -internal-isystem /usr/local/include -internal-isystem /opt/dtk-21.04/llvm/lib/clang/12.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O3 -fdebug-compilation-dir /home/huchen/FAISS/faiss/build/CMakeFiles/CMakeTmp -ferror-limit 19 -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -faddrsig -o CMakeFiles/cmTC_af96e.dir/CMakeCCompilerABI.c.o -x c /usr/share/cmake3/Modules/CMakeCCompilerABI.c] + ignore line: [clang -cc1 version 12.0.0 based upon LLVM 12.0.0dtk_rel_21.04 default target x86_64-unknown-linux-gnu] + ignore line: [ignoring nonexistent directory "/opencl/include"] + ignore line: [ignoring nonexistent directory "/opencl/include"] + ignore line: [ignoring nonexistent directory "/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /opt/dtk-21.04/llvm/lib/clang/12.0.0/include/..] + ignore line: [ /opt/dtk-21.04/hsa/include] + ignore line: [ /opt/dtk-21.04/hip/include] + ignore line: [ /opt/dtk-21.04/include] + ignore line: [ /opt/dtk-21.04] + ignore line: [ /opt/rh/devtoolset-7/root/usr/include/c++/7/x86_64-redhat-linux] + ignore line: [ /opt/rh/devtoolset-7/root/usr/include/c++/7] + ignore line: [ .] + ignore line: [ /usr/local/include] + ignore line: [ /opt/dtk-21.04/llvm/lib/clang/12.0.0/include] + ignore line: [ /usr/include] + ignore line: [End of search list.] + ignore line: [Linking C executable cmTC_af96e] + ignore line: [/usr/bin/cmake3 -E cmake_link_script CMakeFiles/cmTC_af96e.dir/link.txt --verbose=1] + ignore line: [/opt/dtk-21.04/bin/hipcc -Wl -rpath=/opt/rh/devtoolset-7/root/usr/lib64 -Wl -rpath=/opt/rh/devtoolset-7/root/usr/lib -v -rdynamic CMakeFiles/cmTC_af96e.dir/CMakeCCompilerABI.c.o -o cmTC_af96e ] + ignore line: [clang version 12.0.0 (http://10.0.100.3/dcutoolkit/driverruntime/llvm-project.git f816f1d344d7e4e0e21fc9d134c1b82e12e972f5)] + ignore line: [Target: x86_64-unknown-linux-gnu] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /opt/dtk-21.04/llvm/bin] + ignore line: [Found candidate GCC installation: /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7] + ignore line: [Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/4.8.2] + ignore line: [Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/4.8.5] + ignore line: [Selected GCC installation: /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7] + ignore line: [Candidate multilib: .] + ignore line: [@m64] + ignore line: [Candidate multilib: 32] + ignore line: [@m32] + ignore line: [Selected multilib: .] + ignore line: [@m64] + ignore line: [Found HIP installation: /opt/dtk-21.04 version 4.0.21112-7433ef47] + link line: [ "/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../bin/ld" -export-dynamic --hash-style=gnu --eh-frame-hdr -m elf_x86_64 -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o cmTC_af96e /lib/../lib64/crt1.o /lib/../lib64/crti.o /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/crtbegin.o -L/opt/dtk-21.04/hip/lib -L/opt/dtk-21.04/llvm/bin/../lib/clang/12.0.0/lib/linux -L/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7 -L/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../.. -L/opt/dtk-21.04/llvm/bin/../lib -L/lib -L/usr/lib -lgcc_s -lgcc -lpthread -lm -rpath=/opt/rh/devtoolset-7/root/usr/lib64 -rpath=/opt/rh/devtoolset-7/root/usr/lib CMakeFiles/cmTC_af96e.dir/CMakeCCompilerABI.c.o --enable-new-dtags --rpath=/opt/dtk-21.04/hip/lib:/opt/dtk-21.04/lib -lamdhip64 -lclang_rt.builtins-x86_64 -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/crtend.o /lib/../lib64/crtn.o] + arg [/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../bin/ld] ==> ignore + arg [-export-dynamic] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [elf_x86_64] ==> ignore + arg [-export-dynamic] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib64/ld-linux-x86-64.so.2] ==> ignore + arg [-o] ==> ignore + arg [cmTC_af96e] ==> ignore + arg [/lib/../lib64/crt1.o] ==> ignore + arg [/lib/../lib64/crti.o] ==> ignore + arg [/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/crtbegin.o] ==> ignore + arg [-L/opt/dtk-21.04/hip/lib] ==> dir [/opt/dtk-21.04/hip/lib] + arg [-L/opt/dtk-21.04/llvm/bin/../lib/clang/12.0.0/lib/linux] ==> dir [/opt/dtk-21.04/llvm/bin/../lib/clang/12.0.0/lib/linux] + arg [-L/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7] ==> dir [/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7] + arg [-L/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../lib64] ==> dir [/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../lib64] + arg [-L/lib/../lib64] ==> dir [/lib/../lib64] + arg [-L/usr/lib/../lib64] ==> dir [/usr/lib/../lib64] + arg [-L/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../..] ==> dir [/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../..] + arg [-L/opt/dtk-21.04/llvm/bin/../lib] ==> dir [/opt/dtk-21.04/llvm/bin/../lib] + arg [-L/lib] ==> dir [/lib] + arg [-L/usr/lib] ==> dir [/usr/lib] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [-lpthread] ==> lib [pthread] + arg [-lm] ==> lib [m] + arg [-rpath=/opt/rh/devtoolset-7/root/usr/lib64] ==> ignore + arg [-rpath=/opt/rh/devtoolset-7/root/usr/lib] ==> ignore + arg [CMakeFiles/cmTC_af96e.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [--enable-new-dtags] ==> ignore + arg [--rpath=/opt/dtk-21.04/hip/lib:/opt/dtk-21.04/lib] ==> ignore + arg [-lamdhip64] ==> lib [amdhip64] + arg [-lclang_rt.builtins-x86_64] ==> lib [clang_rt.builtins-x86_64] + arg [-lstdc++] ==> lib [stdc++] + arg [-lm] ==> lib [m] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [-lc] ==> lib [c] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/crtend.o] ==> ignore + arg [/lib/../lib64/crtn.o] ==> ignore + collapse library dir [/opt/dtk-21.04/hip/lib] ==> [/opt/dtk-21.04/hip/lib] + collapse library dir [/opt/dtk-21.04/llvm/bin/../lib/clang/12.0.0/lib/linux] ==> [/opt/dtk-21.04/llvm/lib/clang/12.0.0/lib/linux] + collapse library dir [/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7] ==> [/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7] + collapse library dir [/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../../../lib64] ==> [/opt/rh/devtoolset-7/root/usr/lib64] + collapse library dir [/lib/../lib64] ==> [/lib64] + collapse library dir [/usr/lib/../lib64] ==> [/usr/lib64] + collapse library dir [/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/../../..] ==> [/opt/rh/devtoolset-7/root/usr/lib] + collapse library dir [/opt/dtk-21.04/llvm/bin/../lib] ==> [/opt/dtk-21.04/llvm/lib] + collapse library dir [/lib] ==> [/lib] + collapse library dir [/usr/lib] ==> [/usr/lib] + implicit libs: [gcc_s;gcc;pthread;m;amdhip64;clang_rt.builtins-x86_64;stdc++;m;gcc_s;gcc;c;gcc_s;gcc] + implicit dirs: [/opt/dtk-21.04/hip/lib;/opt/dtk-21.04/llvm/lib/clang/12.0.0/lib/linux;/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7;/opt/rh/devtoolset-7/root/usr/lib64;/lib64;/usr/lib64;/opt/rh/devtoolset-7/root/usr/lib;/opt/dtk-21.04/llvm/lib;/lib;/usr/lib] + implicit fwks: [] + + diff --git a/build/CMakeFiles/CMakeRuleHashes.txt b/build/CMakeFiles/CMakeRuleHashes.txt new file mode 100644 index 0000000000000000000000000000000000000000..c3452efc5d0f7ee7c3355c094ec4254ac1a7b6dd --- /dev/null +++ b/build/CMakeFiles/CMakeRuleHashes.txt @@ -0,0 +1,33 @@ +# Hashes of file build rules. +adb08a884047036f475e4d7432634d57 CMakeFiles/Continuous +f65a6657ac1d8b41bc583822dc5ae961 CMakeFiles/ContinuousBuild +9433e70b753610b8c64524bb5e761a9e CMakeFiles/ContinuousConfigure +0582ce6041288c02e2274f0b0a05a0b5 CMakeFiles/ContinuousCoverage +cd6375ddf6b03d926be8e518b8a3e050 CMakeFiles/ContinuousMemCheck +b3f96e516dc8ad2bbacea6a9d606014b CMakeFiles/ContinuousStart +b51f3e10b18a00830f5f7fe739aa1b54 CMakeFiles/ContinuousSubmit +874c9e61bbba27af1095bd2dfe21510b CMakeFiles/ContinuousTest +d45fbc14c739318234e157941ea96104 CMakeFiles/ContinuousUpdate +04682e1cb6debe73fbe6b934eba1155f CMakeFiles/Experimental +d8417dde1f03d090486216b9269426f3 CMakeFiles/ExperimentalBuild +c7a5fef9063484150014f44fc7060087 CMakeFiles/ExperimentalConfigure +2f908a55904cfcb084f2811f25430645 CMakeFiles/ExperimentalCoverage +98d3e56a5d4cb0e0ebc1dab434d7c3e2 CMakeFiles/ExperimentalMemCheck +c8a31f065b11d457d437c133aed5b6cb CMakeFiles/ExperimentalStart +e8455fc0ff76259b6051e3df5db0c857 CMakeFiles/ExperimentalSubmit +49aa1e2dcc805b5b7623eafaa17b436b CMakeFiles/ExperimentalTest +f900eff91913b53faf8588b637b0069e CMakeFiles/ExperimentalUpdate +1820bc9d6b837eb9352bc4df7203c81c CMakeFiles/Nightly +99010ddce33b6bca7c56dc35417289cb CMakeFiles/NightlyBuild +8f1b5d837585ae0488cdd6f294310a83 CMakeFiles/NightlyConfigure +b37bc13bd9255bf444021884cfe938d0 CMakeFiles/NightlyCoverage +6e0ded63177a80b2a36c8707978e6ddc CMakeFiles/NightlyMemCheck +3d310f3cfe7a8f24f18c7afec2fb495c CMakeFiles/NightlyMemoryCheck +5ac3be757a46098d791b3494250f8587 CMakeFiles/NightlyStart +d490dfb3c8d28577fdf0e5d59b493218 CMakeFiles/NightlySubmit +29ed7ed0f8541fe85ea89bf74898254b CMakeFiles/NightlyTest +ffc35c25863d4e64920e74fcdbfbe978 CMakeFiles/NightlyUpdate +7ae9910afb89b6bad0d14a09b93d20a2 faiss/python/CMakeFiles/swigfaiss.dir/swigfaissPYTHON.stamp +1cf44a2d12db53738e7141688ea70f95 faiss/python/CMakeFiles/swigfaiss_avx2.dir/swigfaiss_avx2PYTHON.stamp +3b5b86da4622a9b21a1323e238a50a28 faiss/python/CMakeFiles/swigfaiss_avx2_swig_compilation +3b5b86da4622a9b21a1323e238a50a28 faiss/python/CMakeFiles/swigfaiss_swig_compilation diff --git a/build/CMakeFiles/CheckFunctionExists/CheckFunctionExists.cxx b/build/CMakeFiles/CheckFunctionExists/CheckFunctionExists.cxx new file mode 100644 index 0000000000000000000000000000000000000000..13435e07e59ed2d136d1f5e2ca4800fd34d34a05 --- /dev/null +++ b/build/CMakeFiles/CheckFunctionExists/CheckFunctionExists.cxx @@ -0,0 +1,28 @@ +#ifdef CHECK_FUNCTION_EXISTS + +# ifdef __cplusplus +extern "C" +# endif + char + CHECK_FUNCTION_EXISTS(void); +# ifdef __CLASSIC_C__ +int main() +{ + int ac; + char* av[]; +# else +int main(int ac, char* av[]) +{ +# endif + CHECK_FUNCTION_EXISTS(); + if (ac > 1000) { + return *av[0]; + } + return 0; +} + +#else /* CHECK_FUNCTION_EXISTS */ + +# error "CHECK_FUNCTION_EXISTS has to specify the function" + +#endif /* CHECK_FUNCTION_EXISTS */ diff --git a/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx b/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx new file mode 100644 index 0000000000000000000000000000000000000000..13435e07e59ed2d136d1f5e2ca4800fd34d34a05 --- /dev/null +++ b/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx @@ -0,0 +1,28 @@ +#ifdef CHECK_FUNCTION_EXISTS + +# ifdef __cplusplus +extern "C" +# endif + char + CHECK_FUNCTION_EXISTS(void); +# ifdef __CLASSIC_C__ +int main() +{ + int ac; + char* av[]; +# else +int main(int ac, char* av[]) +{ +# endif + CHECK_FUNCTION_EXISTS(); + if (ac > 1000) { + return *av[0]; + } + return 0; +} + +#else /* CHECK_FUNCTION_EXISTS */ + +# error "CHECK_FUNCTION_EXISTS has to specify the function" + +#endif /* CHECK_FUNCTION_EXISTS */ diff --git a/build/CMakeFiles/Continuous.dir/DependInfo.cmake b/build/CMakeFiles/Continuous.dir/DependInfo.cmake new file mode 100644 index 0000000000000000000000000000000000000000..19fab2149bf120962a1699d74b7373348dc4c117 --- /dev/null +++ b/build/CMakeFiles/Continuous.dir/DependInfo.cmake @@ -0,0 +1,11 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) +# The set of files for implicit dependencies of each language: + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/CMakeFiles/Continuous.dir/build.make b/build/CMakeFiles/Continuous.dir/build.make new file mode 100644 index 0000000000000000000000000000000000000000..6020c1f6ba2f26a4a86d2d66e7b8b57a898385f3 --- /dev/null +++ b/build/CMakeFiles/Continuous.dir/build.make @@ -0,0 +1,96 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake3 + +# The command to remove a file. +RM = /usr/bin/cmake3 -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/huchen/FAISS/faiss + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/huchen/FAISS/faiss/build + +# Utility rule file for Continuous. + +# Include the progress variables for this target. +include CMakeFiles/Continuous.dir/progress.make + +CMakeFiles/Continuous: + /usr/bin/ctest3 -D Continuous + +Continuous: CMakeFiles/Continuous +Continuous: CMakeFiles/Continuous.dir/build.make + +.PHONY : Continuous + +# Rule to build all files generated by this target. +CMakeFiles/Continuous.dir/build: Continuous + +.PHONY : CMakeFiles/Continuous.dir/build + +CMakeFiles/Continuous.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/Continuous.dir/cmake_clean.cmake +.PHONY : CMakeFiles/Continuous.dir/clean + +CMakeFiles/Continuous.dir/depend: + cd /home/huchen/FAISS/faiss/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build/CMakeFiles/Continuous.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/Continuous.dir/depend + diff --git a/build/CMakeFiles/Continuous.dir/cmake_clean.cmake b/build/CMakeFiles/Continuous.dir/cmake_clean.cmake new file mode 100644 index 0000000000000000000000000000000000000000..7e1791cf8177d6f06e873e59e56292f12816be7f --- /dev/null +++ b/build/CMakeFiles/Continuous.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/Continuous" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/Continuous.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/CMakeFiles/Continuous.dir/progress.make b/build/CMakeFiles/Continuous.dir/progress.make new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/build/CMakeFiles/Continuous.dir/progress.make @@ -0,0 +1 @@ + diff --git a/build/CMakeFiles/ContinuousBuild.dir/DependInfo.cmake b/build/CMakeFiles/ContinuousBuild.dir/DependInfo.cmake new file mode 100644 index 0000000000000000000000000000000000000000..19fab2149bf120962a1699d74b7373348dc4c117 --- /dev/null +++ b/build/CMakeFiles/ContinuousBuild.dir/DependInfo.cmake @@ -0,0 +1,11 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) +# The set of files for implicit dependencies of each language: + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/CMakeFiles/ContinuousBuild.dir/build.make b/build/CMakeFiles/ContinuousBuild.dir/build.make new file mode 100644 index 0000000000000000000000000000000000000000..ea67bc98d93149ae9219954743f7dddc8af4aa0b --- /dev/null +++ b/build/CMakeFiles/ContinuousBuild.dir/build.make @@ -0,0 +1,96 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake3 + +# The command to remove a file. +RM = /usr/bin/cmake3 -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/huchen/FAISS/faiss + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/huchen/FAISS/faiss/build + +# Utility rule file for ContinuousBuild. + +# Include the progress variables for this target. +include CMakeFiles/ContinuousBuild.dir/progress.make + +CMakeFiles/ContinuousBuild: + /usr/bin/ctest3 -D ContinuousBuild + +ContinuousBuild: CMakeFiles/ContinuousBuild +ContinuousBuild: CMakeFiles/ContinuousBuild.dir/build.make + +.PHONY : ContinuousBuild + +# Rule to build all files generated by this target. +CMakeFiles/ContinuousBuild.dir/build: ContinuousBuild + +.PHONY : CMakeFiles/ContinuousBuild.dir/build + +CMakeFiles/ContinuousBuild.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/ContinuousBuild.dir/cmake_clean.cmake +.PHONY : CMakeFiles/ContinuousBuild.dir/clean + +CMakeFiles/ContinuousBuild.dir/depend: + cd /home/huchen/FAISS/faiss/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build/CMakeFiles/ContinuousBuild.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/ContinuousBuild.dir/depend + diff --git a/build/CMakeFiles/ContinuousBuild.dir/cmake_clean.cmake b/build/CMakeFiles/ContinuousBuild.dir/cmake_clean.cmake new file mode 100644 index 0000000000000000000000000000000000000000..afccd13683f11eeb51e1a07941748ada51842402 --- /dev/null +++ b/build/CMakeFiles/ContinuousBuild.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/ContinuousBuild" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/ContinuousBuild.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/CMakeFiles/ContinuousBuild.dir/progress.make b/build/CMakeFiles/ContinuousBuild.dir/progress.make new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/build/CMakeFiles/ContinuousBuild.dir/progress.make @@ -0,0 +1 @@ + diff --git a/build/CMakeFiles/ContinuousConfigure.dir/DependInfo.cmake b/build/CMakeFiles/ContinuousConfigure.dir/DependInfo.cmake new file mode 100644 index 0000000000000000000000000000000000000000..19fab2149bf120962a1699d74b7373348dc4c117 --- /dev/null +++ b/build/CMakeFiles/ContinuousConfigure.dir/DependInfo.cmake @@ -0,0 +1,11 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) +# The set of files for implicit dependencies of each language: + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/CMakeFiles/ContinuousConfigure.dir/build.make b/build/CMakeFiles/ContinuousConfigure.dir/build.make new file mode 100644 index 0000000000000000000000000000000000000000..98db6dd0ef6dc7f6f50602d704e1713234132447 --- /dev/null +++ b/build/CMakeFiles/ContinuousConfigure.dir/build.make @@ -0,0 +1,96 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake3 + +# The command to remove a file. +RM = /usr/bin/cmake3 -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/huchen/FAISS/faiss + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/huchen/FAISS/faiss/build + +# Utility rule file for ContinuousConfigure. + +# Include the progress variables for this target. +include CMakeFiles/ContinuousConfigure.dir/progress.make + +CMakeFiles/ContinuousConfigure: + /usr/bin/ctest3 -D ContinuousConfigure + +ContinuousConfigure: CMakeFiles/ContinuousConfigure +ContinuousConfigure: CMakeFiles/ContinuousConfigure.dir/build.make + +.PHONY : ContinuousConfigure + +# Rule to build all files generated by this target. +CMakeFiles/ContinuousConfigure.dir/build: ContinuousConfigure + +.PHONY : CMakeFiles/ContinuousConfigure.dir/build + +CMakeFiles/ContinuousConfigure.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/ContinuousConfigure.dir/cmake_clean.cmake +.PHONY : CMakeFiles/ContinuousConfigure.dir/clean + +CMakeFiles/ContinuousConfigure.dir/depend: + cd /home/huchen/FAISS/faiss/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build/CMakeFiles/ContinuousConfigure.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/ContinuousConfigure.dir/depend + diff --git a/build/CMakeFiles/ContinuousConfigure.dir/cmake_clean.cmake b/build/CMakeFiles/ContinuousConfigure.dir/cmake_clean.cmake new file mode 100644 index 0000000000000000000000000000000000000000..eb51e20488797514d126ef55573faa6ea6f8c69b --- /dev/null +++ b/build/CMakeFiles/ContinuousConfigure.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/ContinuousConfigure" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/ContinuousConfigure.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/CMakeFiles/ContinuousConfigure.dir/progress.make b/build/CMakeFiles/ContinuousConfigure.dir/progress.make new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/build/CMakeFiles/ContinuousConfigure.dir/progress.make @@ -0,0 +1 @@ + diff --git a/build/CMakeFiles/ContinuousCoverage.dir/DependInfo.cmake b/build/CMakeFiles/ContinuousCoverage.dir/DependInfo.cmake new file mode 100644 index 0000000000000000000000000000000000000000..19fab2149bf120962a1699d74b7373348dc4c117 --- /dev/null +++ b/build/CMakeFiles/ContinuousCoverage.dir/DependInfo.cmake @@ -0,0 +1,11 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) +# The set of files for implicit dependencies of each language: + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/CMakeFiles/ContinuousCoverage.dir/build.make b/build/CMakeFiles/ContinuousCoverage.dir/build.make new file mode 100644 index 0000000000000000000000000000000000000000..747ebd88186b4faa5e699061657d17cbbee4dd10 --- /dev/null +++ b/build/CMakeFiles/ContinuousCoverage.dir/build.make @@ -0,0 +1,96 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake3 + +# The command to remove a file. +RM = /usr/bin/cmake3 -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/huchen/FAISS/faiss + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/huchen/FAISS/faiss/build + +# Utility rule file for ContinuousCoverage. + +# Include the progress variables for this target. +include CMakeFiles/ContinuousCoverage.dir/progress.make + +CMakeFiles/ContinuousCoverage: + /usr/bin/ctest3 -D ContinuousCoverage + +ContinuousCoverage: CMakeFiles/ContinuousCoverage +ContinuousCoverage: CMakeFiles/ContinuousCoverage.dir/build.make + +.PHONY : ContinuousCoverage + +# Rule to build all files generated by this target. +CMakeFiles/ContinuousCoverage.dir/build: ContinuousCoverage + +.PHONY : CMakeFiles/ContinuousCoverage.dir/build + +CMakeFiles/ContinuousCoverage.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/ContinuousCoverage.dir/cmake_clean.cmake +.PHONY : CMakeFiles/ContinuousCoverage.dir/clean + +CMakeFiles/ContinuousCoverage.dir/depend: + cd /home/huchen/FAISS/faiss/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build/CMakeFiles/ContinuousCoverage.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/ContinuousCoverage.dir/depend + diff --git a/build/CMakeFiles/ContinuousCoverage.dir/cmake_clean.cmake b/build/CMakeFiles/ContinuousCoverage.dir/cmake_clean.cmake new file mode 100644 index 0000000000000000000000000000000000000000..6115f89bdf791f3b3260f7b39ad9f8fefcfc0d1f --- /dev/null +++ b/build/CMakeFiles/ContinuousCoverage.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/ContinuousCoverage" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/ContinuousCoverage.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/CMakeFiles/ContinuousCoverage.dir/progress.make b/build/CMakeFiles/ContinuousCoverage.dir/progress.make new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/build/CMakeFiles/ContinuousCoverage.dir/progress.make @@ -0,0 +1 @@ + diff --git a/build/CMakeFiles/ContinuousMemCheck.dir/DependInfo.cmake b/build/CMakeFiles/ContinuousMemCheck.dir/DependInfo.cmake new file mode 100644 index 0000000000000000000000000000000000000000..19fab2149bf120962a1699d74b7373348dc4c117 --- /dev/null +++ b/build/CMakeFiles/ContinuousMemCheck.dir/DependInfo.cmake @@ -0,0 +1,11 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) +# The set of files for implicit dependencies of each language: + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/CMakeFiles/ContinuousMemCheck.dir/build.make b/build/CMakeFiles/ContinuousMemCheck.dir/build.make new file mode 100644 index 0000000000000000000000000000000000000000..00ec99190a2e7650fdc05d5f38688cfc3d64715d --- /dev/null +++ b/build/CMakeFiles/ContinuousMemCheck.dir/build.make @@ -0,0 +1,96 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake3 + +# The command to remove a file. +RM = /usr/bin/cmake3 -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/huchen/FAISS/faiss + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/huchen/FAISS/faiss/build + +# Utility rule file for ContinuousMemCheck. + +# Include the progress variables for this target. +include CMakeFiles/ContinuousMemCheck.dir/progress.make + +CMakeFiles/ContinuousMemCheck: + /usr/bin/ctest3 -D ContinuousMemCheck + +ContinuousMemCheck: CMakeFiles/ContinuousMemCheck +ContinuousMemCheck: CMakeFiles/ContinuousMemCheck.dir/build.make + +.PHONY : ContinuousMemCheck + +# Rule to build all files generated by this target. +CMakeFiles/ContinuousMemCheck.dir/build: ContinuousMemCheck + +.PHONY : CMakeFiles/ContinuousMemCheck.dir/build + +CMakeFiles/ContinuousMemCheck.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/ContinuousMemCheck.dir/cmake_clean.cmake +.PHONY : CMakeFiles/ContinuousMemCheck.dir/clean + +CMakeFiles/ContinuousMemCheck.dir/depend: + cd /home/huchen/FAISS/faiss/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build/CMakeFiles/ContinuousMemCheck.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/ContinuousMemCheck.dir/depend + diff --git a/build/CMakeFiles/ContinuousMemCheck.dir/cmake_clean.cmake b/build/CMakeFiles/ContinuousMemCheck.dir/cmake_clean.cmake new file mode 100644 index 0000000000000000000000000000000000000000..ad69e7ff4553b55cfc354485edd47d4ad01ea363 --- /dev/null +++ b/build/CMakeFiles/ContinuousMemCheck.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/ContinuousMemCheck" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/ContinuousMemCheck.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/CMakeFiles/ContinuousMemCheck.dir/progress.make b/build/CMakeFiles/ContinuousMemCheck.dir/progress.make new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/build/CMakeFiles/ContinuousMemCheck.dir/progress.make @@ -0,0 +1 @@ + diff --git a/build/CMakeFiles/ContinuousStart.dir/DependInfo.cmake b/build/CMakeFiles/ContinuousStart.dir/DependInfo.cmake new file mode 100644 index 0000000000000000000000000000000000000000..19fab2149bf120962a1699d74b7373348dc4c117 --- /dev/null +++ b/build/CMakeFiles/ContinuousStart.dir/DependInfo.cmake @@ -0,0 +1,11 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) +# The set of files for implicit dependencies of each language: + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/CMakeFiles/ContinuousStart.dir/build.make b/build/CMakeFiles/ContinuousStart.dir/build.make new file mode 100644 index 0000000000000000000000000000000000000000..7fbc6cabe3cb4efcee252f0a0e3671ba653d04e5 --- /dev/null +++ b/build/CMakeFiles/ContinuousStart.dir/build.make @@ -0,0 +1,96 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake3 + +# The command to remove a file. +RM = /usr/bin/cmake3 -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/huchen/FAISS/faiss + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/huchen/FAISS/faiss/build + +# Utility rule file for ContinuousStart. + +# Include the progress variables for this target. +include CMakeFiles/ContinuousStart.dir/progress.make + +CMakeFiles/ContinuousStart: + /usr/bin/ctest3 -D ContinuousStart + +ContinuousStart: CMakeFiles/ContinuousStart +ContinuousStart: CMakeFiles/ContinuousStart.dir/build.make + +.PHONY : ContinuousStart + +# Rule to build all files generated by this target. +CMakeFiles/ContinuousStart.dir/build: ContinuousStart + +.PHONY : CMakeFiles/ContinuousStart.dir/build + +CMakeFiles/ContinuousStart.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/ContinuousStart.dir/cmake_clean.cmake +.PHONY : CMakeFiles/ContinuousStart.dir/clean + +CMakeFiles/ContinuousStart.dir/depend: + cd /home/huchen/FAISS/faiss/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build/CMakeFiles/ContinuousStart.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/ContinuousStart.dir/depend + diff --git a/build/CMakeFiles/ContinuousStart.dir/cmake_clean.cmake b/build/CMakeFiles/ContinuousStart.dir/cmake_clean.cmake new file mode 100644 index 0000000000000000000000000000000000000000..13d5b2bcc3bcf36afa7a3e45cb8da752b90d76a5 --- /dev/null +++ b/build/CMakeFiles/ContinuousStart.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/ContinuousStart" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/ContinuousStart.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/CMakeFiles/ContinuousStart.dir/progress.make b/build/CMakeFiles/ContinuousStart.dir/progress.make new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/build/CMakeFiles/ContinuousStart.dir/progress.make @@ -0,0 +1 @@ + diff --git a/build/CMakeFiles/ContinuousSubmit.dir/DependInfo.cmake b/build/CMakeFiles/ContinuousSubmit.dir/DependInfo.cmake new file mode 100644 index 0000000000000000000000000000000000000000..19fab2149bf120962a1699d74b7373348dc4c117 --- /dev/null +++ b/build/CMakeFiles/ContinuousSubmit.dir/DependInfo.cmake @@ -0,0 +1,11 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) +# The set of files for implicit dependencies of each language: + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/CMakeFiles/ContinuousSubmit.dir/build.make b/build/CMakeFiles/ContinuousSubmit.dir/build.make new file mode 100644 index 0000000000000000000000000000000000000000..779f4fe070644866644f78d1534ffc493e93546b --- /dev/null +++ b/build/CMakeFiles/ContinuousSubmit.dir/build.make @@ -0,0 +1,96 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake3 + +# The command to remove a file. +RM = /usr/bin/cmake3 -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/huchen/FAISS/faiss + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/huchen/FAISS/faiss/build + +# Utility rule file for ContinuousSubmit. + +# Include the progress variables for this target. +include CMakeFiles/ContinuousSubmit.dir/progress.make + +CMakeFiles/ContinuousSubmit: + /usr/bin/ctest3 -D ContinuousSubmit + +ContinuousSubmit: CMakeFiles/ContinuousSubmit +ContinuousSubmit: CMakeFiles/ContinuousSubmit.dir/build.make + +.PHONY : ContinuousSubmit + +# Rule to build all files generated by this target. +CMakeFiles/ContinuousSubmit.dir/build: ContinuousSubmit + +.PHONY : CMakeFiles/ContinuousSubmit.dir/build + +CMakeFiles/ContinuousSubmit.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/ContinuousSubmit.dir/cmake_clean.cmake +.PHONY : CMakeFiles/ContinuousSubmit.dir/clean + +CMakeFiles/ContinuousSubmit.dir/depend: + cd /home/huchen/FAISS/faiss/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build/CMakeFiles/ContinuousSubmit.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/ContinuousSubmit.dir/depend + diff --git a/build/CMakeFiles/ContinuousSubmit.dir/cmake_clean.cmake b/build/CMakeFiles/ContinuousSubmit.dir/cmake_clean.cmake new file mode 100644 index 0000000000000000000000000000000000000000..cc66ba37777ccbac292828077290fbd248bb8aac --- /dev/null +++ b/build/CMakeFiles/ContinuousSubmit.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/ContinuousSubmit" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/ContinuousSubmit.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/CMakeFiles/ContinuousSubmit.dir/progress.make b/build/CMakeFiles/ContinuousSubmit.dir/progress.make new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/build/CMakeFiles/ContinuousSubmit.dir/progress.make @@ -0,0 +1 @@ + diff --git a/build/CMakeFiles/ContinuousTest.dir/DependInfo.cmake b/build/CMakeFiles/ContinuousTest.dir/DependInfo.cmake new file mode 100644 index 0000000000000000000000000000000000000000..19fab2149bf120962a1699d74b7373348dc4c117 --- /dev/null +++ b/build/CMakeFiles/ContinuousTest.dir/DependInfo.cmake @@ -0,0 +1,11 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) +# The set of files for implicit dependencies of each language: + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/CMakeFiles/ContinuousTest.dir/build.make b/build/CMakeFiles/ContinuousTest.dir/build.make new file mode 100644 index 0000000000000000000000000000000000000000..c2c9f0309c9c7aab2be08c4896a03329d56f9446 --- /dev/null +++ b/build/CMakeFiles/ContinuousTest.dir/build.make @@ -0,0 +1,96 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake3 + +# The command to remove a file. +RM = /usr/bin/cmake3 -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/huchen/FAISS/faiss + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/huchen/FAISS/faiss/build + +# Utility rule file for ContinuousTest. + +# Include the progress variables for this target. +include CMakeFiles/ContinuousTest.dir/progress.make + +CMakeFiles/ContinuousTest: + /usr/bin/ctest3 -D ContinuousTest + +ContinuousTest: CMakeFiles/ContinuousTest +ContinuousTest: CMakeFiles/ContinuousTest.dir/build.make + +.PHONY : ContinuousTest + +# Rule to build all files generated by this target. +CMakeFiles/ContinuousTest.dir/build: ContinuousTest + +.PHONY : CMakeFiles/ContinuousTest.dir/build + +CMakeFiles/ContinuousTest.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/ContinuousTest.dir/cmake_clean.cmake +.PHONY : CMakeFiles/ContinuousTest.dir/clean + +CMakeFiles/ContinuousTest.dir/depend: + cd /home/huchen/FAISS/faiss/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build/CMakeFiles/ContinuousTest.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/ContinuousTest.dir/depend + diff --git a/build/CMakeFiles/ContinuousTest.dir/cmake_clean.cmake b/build/CMakeFiles/ContinuousTest.dir/cmake_clean.cmake new file mode 100644 index 0000000000000000000000000000000000000000..ff11d485d8ab87784c4450edc72bc5d423d2f884 --- /dev/null +++ b/build/CMakeFiles/ContinuousTest.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/ContinuousTest" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/ContinuousTest.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/CMakeFiles/ContinuousTest.dir/progress.make b/build/CMakeFiles/ContinuousTest.dir/progress.make new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/build/CMakeFiles/ContinuousTest.dir/progress.make @@ -0,0 +1 @@ + diff --git a/build/CMakeFiles/ContinuousUpdate.dir/DependInfo.cmake b/build/CMakeFiles/ContinuousUpdate.dir/DependInfo.cmake new file mode 100644 index 0000000000000000000000000000000000000000..19fab2149bf120962a1699d74b7373348dc4c117 --- /dev/null +++ b/build/CMakeFiles/ContinuousUpdate.dir/DependInfo.cmake @@ -0,0 +1,11 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) +# The set of files for implicit dependencies of each language: + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/CMakeFiles/ContinuousUpdate.dir/build.make b/build/CMakeFiles/ContinuousUpdate.dir/build.make new file mode 100644 index 0000000000000000000000000000000000000000..78e52c937e2cf68034e87b6c0e72ecc2469a3e1f --- /dev/null +++ b/build/CMakeFiles/ContinuousUpdate.dir/build.make @@ -0,0 +1,96 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake3 + +# The command to remove a file. +RM = /usr/bin/cmake3 -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/huchen/FAISS/faiss + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/huchen/FAISS/faiss/build + +# Utility rule file for ContinuousUpdate. + +# Include the progress variables for this target. +include CMakeFiles/ContinuousUpdate.dir/progress.make + +CMakeFiles/ContinuousUpdate: + /usr/bin/ctest3 -D ContinuousUpdate + +ContinuousUpdate: CMakeFiles/ContinuousUpdate +ContinuousUpdate: CMakeFiles/ContinuousUpdate.dir/build.make + +.PHONY : ContinuousUpdate + +# Rule to build all files generated by this target. +CMakeFiles/ContinuousUpdate.dir/build: ContinuousUpdate + +.PHONY : CMakeFiles/ContinuousUpdate.dir/build + +CMakeFiles/ContinuousUpdate.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/ContinuousUpdate.dir/cmake_clean.cmake +.PHONY : CMakeFiles/ContinuousUpdate.dir/clean + +CMakeFiles/ContinuousUpdate.dir/depend: + cd /home/huchen/FAISS/faiss/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build/CMakeFiles/ContinuousUpdate.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/ContinuousUpdate.dir/depend + diff --git a/build/CMakeFiles/ContinuousUpdate.dir/cmake_clean.cmake b/build/CMakeFiles/ContinuousUpdate.dir/cmake_clean.cmake new file mode 100644 index 0000000000000000000000000000000000000000..7a77a24c329433762bf3f6526ec1749016e5420d --- /dev/null +++ b/build/CMakeFiles/ContinuousUpdate.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/ContinuousUpdate" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/ContinuousUpdate.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/CMakeFiles/ContinuousUpdate.dir/progress.make b/build/CMakeFiles/ContinuousUpdate.dir/progress.make new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/build/CMakeFiles/ContinuousUpdate.dir/progress.make @@ -0,0 +1 @@ + diff --git a/build/CMakeFiles/Experimental.dir/DependInfo.cmake b/build/CMakeFiles/Experimental.dir/DependInfo.cmake new file mode 100644 index 0000000000000000000000000000000000000000..19fab2149bf120962a1699d74b7373348dc4c117 --- /dev/null +++ b/build/CMakeFiles/Experimental.dir/DependInfo.cmake @@ -0,0 +1,11 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) +# The set of files for implicit dependencies of each language: + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/CMakeFiles/Experimental.dir/build.make b/build/CMakeFiles/Experimental.dir/build.make new file mode 100644 index 0000000000000000000000000000000000000000..15d316c5a9d31009027148d22932cf454a97370e --- /dev/null +++ b/build/CMakeFiles/Experimental.dir/build.make @@ -0,0 +1,96 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake3 + +# The command to remove a file. +RM = /usr/bin/cmake3 -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/huchen/FAISS/faiss + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/huchen/FAISS/faiss/build + +# Utility rule file for Experimental. + +# Include the progress variables for this target. +include CMakeFiles/Experimental.dir/progress.make + +CMakeFiles/Experimental: + /usr/bin/ctest3 -D Experimental + +Experimental: CMakeFiles/Experimental +Experimental: CMakeFiles/Experimental.dir/build.make + +.PHONY : Experimental + +# Rule to build all files generated by this target. +CMakeFiles/Experimental.dir/build: Experimental + +.PHONY : CMakeFiles/Experimental.dir/build + +CMakeFiles/Experimental.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/Experimental.dir/cmake_clean.cmake +.PHONY : CMakeFiles/Experimental.dir/clean + +CMakeFiles/Experimental.dir/depend: + cd /home/huchen/FAISS/faiss/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build/CMakeFiles/Experimental.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/Experimental.dir/depend + diff --git a/build/CMakeFiles/Experimental.dir/cmake_clean.cmake b/build/CMakeFiles/Experimental.dir/cmake_clean.cmake new file mode 100644 index 0000000000000000000000000000000000000000..799e7082f2b793f2322e0d90b70651a0d51fdc41 --- /dev/null +++ b/build/CMakeFiles/Experimental.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/Experimental" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/Experimental.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/CMakeFiles/Experimental.dir/progress.make b/build/CMakeFiles/Experimental.dir/progress.make new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/build/CMakeFiles/Experimental.dir/progress.make @@ -0,0 +1 @@ + diff --git a/build/CMakeFiles/ExperimentalBuild.dir/DependInfo.cmake b/build/CMakeFiles/ExperimentalBuild.dir/DependInfo.cmake new file mode 100644 index 0000000000000000000000000000000000000000..19fab2149bf120962a1699d74b7373348dc4c117 --- /dev/null +++ b/build/CMakeFiles/ExperimentalBuild.dir/DependInfo.cmake @@ -0,0 +1,11 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) +# The set of files for implicit dependencies of each language: + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/CMakeFiles/ExperimentalBuild.dir/build.make b/build/CMakeFiles/ExperimentalBuild.dir/build.make new file mode 100644 index 0000000000000000000000000000000000000000..3f10b3018ff10826e63c0dbac6e6a2f308d7a37b --- /dev/null +++ b/build/CMakeFiles/ExperimentalBuild.dir/build.make @@ -0,0 +1,96 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake3 + +# The command to remove a file. +RM = /usr/bin/cmake3 -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/huchen/FAISS/faiss + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/huchen/FAISS/faiss/build + +# Utility rule file for ExperimentalBuild. + +# Include the progress variables for this target. +include CMakeFiles/ExperimentalBuild.dir/progress.make + +CMakeFiles/ExperimentalBuild: + /usr/bin/ctest3 -D ExperimentalBuild + +ExperimentalBuild: CMakeFiles/ExperimentalBuild +ExperimentalBuild: CMakeFiles/ExperimentalBuild.dir/build.make + +.PHONY : ExperimentalBuild + +# Rule to build all files generated by this target. +CMakeFiles/ExperimentalBuild.dir/build: ExperimentalBuild + +.PHONY : CMakeFiles/ExperimentalBuild.dir/build + +CMakeFiles/ExperimentalBuild.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/ExperimentalBuild.dir/cmake_clean.cmake +.PHONY : CMakeFiles/ExperimentalBuild.dir/clean + +CMakeFiles/ExperimentalBuild.dir/depend: + cd /home/huchen/FAISS/faiss/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build/CMakeFiles/ExperimentalBuild.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/ExperimentalBuild.dir/depend + diff --git a/build/CMakeFiles/ExperimentalBuild.dir/cmake_clean.cmake b/build/CMakeFiles/ExperimentalBuild.dir/cmake_clean.cmake new file mode 100644 index 0000000000000000000000000000000000000000..3354e3f1c027423f504d335ab0922234b465279c --- /dev/null +++ b/build/CMakeFiles/ExperimentalBuild.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/ExperimentalBuild" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/ExperimentalBuild.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/CMakeFiles/ExperimentalBuild.dir/progress.make b/build/CMakeFiles/ExperimentalBuild.dir/progress.make new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/build/CMakeFiles/ExperimentalBuild.dir/progress.make @@ -0,0 +1 @@ + diff --git a/build/CMakeFiles/ExperimentalConfigure.dir/DependInfo.cmake b/build/CMakeFiles/ExperimentalConfigure.dir/DependInfo.cmake new file mode 100644 index 0000000000000000000000000000000000000000..19fab2149bf120962a1699d74b7373348dc4c117 --- /dev/null +++ b/build/CMakeFiles/ExperimentalConfigure.dir/DependInfo.cmake @@ -0,0 +1,11 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) +# The set of files for implicit dependencies of each language: + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/CMakeFiles/ExperimentalConfigure.dir/build.make b/build/CMakeFiles/ExperimentalConfigure.dir/build.make new file mode 100644 index 0000000000000000000000000000000000000000..b0085cffca1c984f2a62895d67bb926bb996b625 --- /dev/null +++ b/build/CMakeFiles/ExperimentalConfigure.dir/build.make @@ -0,0 +1,96 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake3 + +# The command to remove a file. +RM = /usr/bin/cmake3 -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/huchen/FAISS/faiss + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/huchen/FAISS/faiss/build + +# Utility rule file for ExperimentalConfigure. + +# Include the progress variables for this target. +include CMakeFiles/ExperimentalConfigure.dir/progress.make + +CMakeFiles/ExperimentalConfigure: + /usr/bin/ctest3 -D ExperimentalConfigure + +ExperimentalConfigure: CMakeFiles/ExperimentalConfigure +ExperimentalConfigure: CMakeFiles/ExperimentalConfigure.dir/build.make + +.PHONY : ExperimentalConfigure + +# Rule to build all files generated by this target. +CMakeFiles/ExperimentalConfigure.dir/build: ExperimentalConfigure + +.PHONY : CMakeFiles/ExperimentalConfigure.dir/build + +CMakeFiles/ExperimentalConfigure.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/ExperimentalConfigure.dir/cmake_clean.cmake +.PHONY : CMakeFiles/ExperimentalConfigure.dir/clean + +CMakeFiles/ExperimentalConfigure.dir/depend: + cd /home/huchen/FAISS/faiss/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build/CMakeFiles/ExperimentalConfigure.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/ExperimentalConfigure.dir/depend + diff --git a/build/CMakeFiles/ExperimentalConfigure.dir/cmake_clean.cmake b/build/CMakeFiles/ExperimentalConfigure.dir/cmake_clean.cmake new file mode 100644 index 0000000000000000000000000000000000000000..69e4a71991fdd9cb942e4401fd019d2c5f7fedc3 --- /dev/null +++ b/build/CMakeFiles/ExperimentalConfigure.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/ExperimentalConfigure" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/ExperimentalConfigure.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/CMakeFiles/ExperimentalConfigure.dir/progress.make b/build/CMakeFiles/ExperimentalConfigure.dir/progress.make new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/build/CMakeFiles/ExperimentalConfigure.dir/progress.make @@ -0,0 +1 @@ + diff --git a/build/CMakeFiles/ExperimentalCoverage.dir/DependInfo.cmake b/build/CMakeFiles/ExperimentalCoverage.dir/DependInfo.cmake new file mode 100644 index 0000000000000000000000000000000000000000..19fab2149bf120962a1699d74b7373348dc4c117 --- /dev/null +++ b/build/CMakeFiles/ExperimentalCoverage.dir/DependInfo.cmake @@ -0,0 +1,11 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) +# The set of files for implicit dependencies of each language: + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/CMakeFiles/ExperimentalCoverage.dir/build.make b/build/CMakeFiles/ExperimentalCoverage.dir/build.make new file mode 100644 index 0000000000000000000000000000000000000000..170f30ea85646160b3dde75a4a705d43ecf5e2bf --- /dev/null +++ b/build/CMakeFiles/ExperimentalCoverage.dir/build.make @@ -0,0 +1,96 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake3 + +# The command to remove a file. +RM = /usr/bin/cmake3 -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/huchen/FAISS/faiss + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/huchen/FAISS/faiss/build + +# Utility rule file for ExperimentalCoverage. + +# Include the progress variables for this target. +include CMakeFiles/ExperimentalCoverage.dir/progress.make + +CMakeFiles/ExperimentalCoverage: + /usr/bin/ctest3 -D ExperimentalCoverage + +ExperimentalCoverage: CMakeFiles/ExperimentalCoverage +ExperimentalCoverage: CMakeFiles/ExperimentalCoverage.dir/build.make + +.PHONY : ExperimentalCoverage + +# Rule to build all files generated by this target. +CMakeFiles/ExperimentalCoverage.dir/build: ExperimentalCoverage + +.PHONY : CMakeFiles/ExperimentalCoverage.dir/build + +CMakeFiles/ExperimentalCoverage.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/ExperimentalCoverage.dir/cmake_clean.cmake +.PHONY : CMakeFiles/ExperimentalCoverage.dir/clean + +CMakeFiles/ExperimentalCoverage.dir/depend: + cd /home/huchen/FAISS/faiss/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build/CMakeFiles/ExperimentalCoverage.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/ExperimentalCoverage.dir/depend + diff --git a/build/CMakeFiles/ExperimentalCoverage.dir/cmake_clean.cmake b/build/CMakeFiles/ExperimentalCoverage.dir/cmake_clean.cmake new file mode 100644 index 0000000000000000000000000000000000000000..b8d6597a57093393ae4dd09108c0efa7b196ded2 --- /dev/null +++ b/build/CMakeFiles/ExperimentalCoverage.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/ExperimentalCoverage" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/ExperimentalCoverage.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/CMakeFiles/ExperimentalCoverage.dir/progress.make b/build/CMakeFiles/ExperimentalCoverage.dir/progress.make new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/build/CMakeFiles/ExperimentalCoverage.dir/progress.make @@ -0,0 +1 @@ + diff --git a/build/CMakeFiles/ExperimentalMemCheck.dir/DependInfo.cmake b/build/CMakeFiles/ExperimentalMemCheck.dir/DependInfo.cmake new file mode 100644 index 0000000000000000000000000000000000000000..19fab2149bf120962a1699d74b7373348dc4c117 --- /dev/null +++ b/build/CMakeFiles/ExperimentalMemCheck.dir/DependInfo.cmake @@ -0,0 +1,11 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) +# The set of files for implicit dependencies of each language: + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/CMakeFiles/ExperimentalMemCheck.dir/build.make b/build/CMakeFiles/ExperimentalMemCheck.dir/build.make new file mode 100644 index 0000000000000000000000000000000000000000..982c4f0a5372b0ce1d53dba61690f06341a713d2 --- /dev/null +++ b/build/CMakeFiles/ExperimentalMemCheck.dir/build.make @@ -0,0 +1,96 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake3 + +# The command to remove a file. +RM = /usr/bin/cmake3 -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/huchen/FAISS/faiss + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/huchen/FAISS/faiss/build + +# Utility rule file for ExperimentalMemCheck. + +# Include the progress variables for this target. +include CMakeFiles/ExperimentalMemCheck.dir/progress.make + +CMakeFiles/ExperimentalMemCheck: + /usr/bin/ctest3 -D ExperimentalMemCheck + +ExperimentalMemCheck: CMakeFiles/ExperimentalMemCheck +ExperimentalMemCheck: CMakeFiles/ExperimentalMemCheck.dir/build.make + +.PHONY : ExperimentalMemCheck + +# Rule to build all files generated by this target. +CMakeFiles/ExperimentalMemCheck.dir/build: ExperimentalMemCheck + +.PHONY : CMakeFiles/ExperimentalMemCheck.dir/build + +CMakeFiles/ExperimentalMemCheck.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/ExperimentalMemCheck.dir/cmake_clean.cmake +.PHONY : CMakeFiles/ExperimentalMemCheck.dir/clean + +CMakeFiles/ExperimentalMemCheck.dir/depend: + cd /home/huchen/FAISS/faiss/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build/CMakeFiles/ExperimentalMemCheck.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/ExperimentalMemCheck.dir/depend + diff --git a/build/CMakeFiles/ExperimentalMemCheck.dir/cmake_clean.cmake b/build/CMakeFiles/ExperimentalMemCheck.dir/cmake_clean.cmake new file mode 100644 index 0000000000000000000000000000000000000000..ed3f7bc0d2aa68a4a79efc34462b4627ed820838 --- /dev/null +++ b/build/CMakeFiles/ExperimentalMemCheck.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/ExperimentalMemCheck" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/ExperimentalMemCheck.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/CMakeFiles/ExperimentalMemCheck.dir/progress.make b/build/CMakeFiles/ExperimentalMemCheck.dir/progress.make new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/build/CMakeFiles/ExperimentalMemCheck.dir/progress.make @@ -0,0 +1 @@ + diff --git a/build/CMakeFiles/ExperimentalStart.dir/DependInfo.cmake b/build/CMakeFiles/ExperimentalStart.dir/DependInfo.cmake new file mode 100644 index 0000000000000000000000000000000000000000..19fab2149bf120962a1699d74b7373348dc4c117 --- /dev/null +++ b/build/CMakeFiles/ExperimentalStart.dir/DependInfo.cmake @@ -0,0 +1,11 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) +# The set of files for implicit dependencies of each language: + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/CMakeFiles/ExperimentalStart.dir/build.make b/build/CMakeFiles/ExperimentalStart.dir/build.make new file mode 100644 index 0000000000000000000000000000000000000000..eb3e361dad075baea03fc3d4dea5e2220540dbdc --- /dev/null +++ b/build/CMakeFiles/ExperimentalStart.dir/build.make @@ -0,0 +1,96 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake3 + +# The command to remove a file. +RM = /usr/bin/cmake3 -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/huchen/FAISS/faiss + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/huchen/FAISS/faiss/build + +# Utility rule file for ExperimentalStart. + +# Include the progress variables for this target. +include CMakeFiles/ExperimentalStart.dir/progress.make + +CMakeFiles/ExperimentalStart: + /usr/bin/ctest3 -D ExperimentalStart + +ExperimentalStart: CMakeFiles/ExperimentalStart +ExperimentalStart: CMakeFiles/ExperimentalStart.dir/build.make + +.PHONY : ExperimentalStart + +# Rule to build all files generated by this target. +CMakeFiles/ExperimentalStart.dir/build: ExperimentalStart + +.PHONY : CMakeFiles/ExperimentalStart.dir/build + +CMakeFiles/ExperimentalStart.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/ExperimentalStart.dir/cmake_clean.cmake +.PHONY : CMakeFiles/ExperimentalStart.dir/clean + +CMakeFiles/ExperimentalStart.dir/depend: + cd /home/huchen/FAISS/faiss/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build/CMakeFiles/ExperimentalStart.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/ExperimentalStart.dir/depend + diff --git a/build/CMakeFiles/ExperimentalStart.dir/cmake_clean.cmake b/build/CMakeFiles/ExperimentalStart.dir/cmake_clean.cmake new file mode 100644 index 0000000000000000000000000000000000000000..4e2736b1b868f5fd19b5bae524ae0a78f5331665 --- /dev/null +++ b/build/CMakeFiles/ExperimentalStart.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/ExperimentalStart" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/ExperimentalStart.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/CMakeFiles/ExperimentalStart.dir/progress.make b/build/CMakeFiles/ExperimentalStart.dir/progress.make new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/build/CMakeFiles/ExperimentalStart.dir/progress.make @@ -0,0 +1 @@ + diff --git a/build/CMakeFiles/ExperimentalSubmit.dir/DependInfo.cmake b/build/CMakeFiles/ExperimentalSubmit.dir/DependInfo.cmake new file mode 100644 index 0000000000000000000000000000000000000000..19fab2149bf120962a1699d74b7373348dc4c117 --- /dev/null +++ b/build/CMakeFiles/ExperimentalSubmit.dir/DependInfo.cmake @@ -0,0 +1,11 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) +# The set of files for implicit dependencies of each language: + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/CMakeFiles/ExperimentalSubmit.dir/build.make b/build/CMakeFiles/ExperimentalSubmit.dir/build.make new file mode 100644 index 0000000000000000000000000000000000000000..216434a4418743c8771525e959a3ada4db34e769 --- /dev/null +++ b/build/CMakeFiles/ExperimentalSubmit.dir/build.make @@ -0,0 +1,96 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake3 + +# The command to remove a file. +RM = /usr/bin/cmake3 -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/huchen/FAISS/faiss + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/huchen/FAISS/faiss/build + +# Utility rule file for ExperimentalSubmit. + +# Include the progress variables for this target. +include CMakeFiles/ExperimentalSubmit.dir/progress.make + +CMakeFiles/ExperimentalSubmit: + /usr/bin/ctest3 -D ExperimentalSubmit + +ExperimentalSubmit: CMakeFiles/ExperimentalSubmit +ExperimentalSubmit: CMakeFiles/ExperimentalSubmit.dir/build.make + +.PHONY : ExperimentalSubmit + +# Rule to build all files generated by this target. +CMakeFiles/ExperimentalSubmit.dir/build: ExperimentalSubmit + +.PHONY : CMakeFiles/ExperimentalSubmit.dir/build + +CMakeFiles/ExperimentalSubmit.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/ExperimentalSubmit.dir/cmake_clean.cmake +.PHONY : CMakeFiles/ExperimentalSubmit.dir/clean + +CMakeFiles/ExperimentalSubmit.dir/depend: + cd /home/huchen/FAISS/faiss/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build/CMakeFiles/ExperimentalSubmit.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/ExperimentalSubmit.dir/depend + diff --git a/build/CMakeFiles/ExperimentalSubmit.dir/cmake_clean.cmake b/build/CMakeFiles/ExperimentalSubmit.dir/cmake_clean.cmake new file mode 100644 index 0000000000000000000000000000000000000000..d130e45a3ca86f262efb965f2d63e1da56772ed7 --- /dev/null +++ b/build/CMakeFiles/ExperimentalSubmit.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/ExperimentalSubmit" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/ExperimentalSubmit.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/CMakeFiles/ExperimentalSubmit.dir/progress.make b/build/CMakeFiles/ExperimentalSubmit.dir/progress.make new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/build/CMakeFiles/ExperimentalSubmit.dir/progress.make @@ -0,0 +1 @@ + diff --git a/build/CMakeFiles/ExperimentalTest.dir/DependInfo.cmake b/build/CMakeFiles/ExperimentalTest.dir/DependInfo.cmake new file mode 100644 index 0000000000000000000000000000000000000000..19fab2149bf120962a1699d74b7373348dc4c117 --- /dev/null +++ b/build/CMakeFiles/ExperimentalTest.dir/DependInfo.cmake @@ -0,0 +1,11 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) +# The set of files for implicit dependencies of each language: + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/CMakeFiles/ExperimentalTest.dir/build.make b/build/CMakeFiles/ExperimentalTest.dir/build.make new file mode 100644 index 0000000000000000000000000000000000000000..48759e6d1c7ef05b8eef6c245646057ab232441c --- /dev/null +++ b/build/CMakeFiles/ExperimentalTest.dir/build.make @@ -0,0 +1,96 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake3 + +# The command to remove a file. +RM = /usr/bin/cmake3 -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/huchen/FAISS/faiss + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/huchen/FAISS/faiss/build + +# Utility rule file for ExperimentalTest. + +# Include the progress variables for this target. +include CMakeFiles/ExperimentalTest.dir/progress.make + +CMakeFiles/ExperimentalTest: + /usr/bin/ctest3 -D ExperimentalTest + +ExperimentalTest: CMakeFiles/ExperimentalTest +ExperimentalTest: CMakeFiles/ExperimentalTest.dir/build.make + +.PHONY : ExperimentalTest + +# Rule to build all files generated by this target. +CMakeFiles/ExperimentalTest.dir/build: ExperimentalTest + +.PHONY : CMakeFiles/ExperimentalTest.dir/build + +CMakeFiles/ExperimentalTest.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/ExperimentalTest.dir/cmake_clean.cmake +.PHONY : CMakeFiles/ExperimentalTest.dir/clean + +CMakeFiles/ExperimentalTest.dir/depend: + cd /home/huchen/FAISS/faiss/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build/CMakeFiles/ExperimentalTest.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/ExperimentalTest.dir/depend + diff --git a/build/CMakeFiles/ExperimentalTest.dir/cmake_clean.cmake b/build/CMakeFiles/ExperimentalTest.dir/cmake_clean.cmake new file mode 100644 index 0000000000000000000000000000000000000000..4348aa36d03d852cad3229df1db21029afb3c573 --- /dev/null +++ b/build/CMakeFiles/ExperimentalTest.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/ExperimentalTest" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/ExperimentalTest.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/CMakeFiles/ExperimentalTest.dir/progress.make b/build/CMakeFiles/ExperimentalTest.dir/progress.make new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/build/CMakeFiles/ExperimentalTest.dir/progress.make @@ -0,0 +1 @@ + diff --git a/build/CMakeFiles/ExperimentalUpdate.dir/DependInfo.cmake b/build/CMakeFiles/ExperimentalUpdate.dir/DependInfo.cmake new file mode 100644 index 0000000000000000000000000000000000000000..19fab2149bf120962a1699d74b7373348dc4c117 --- /dev/null +++ b/build/CMakeFiles/ExperimentalUpdate.dir/DependInfo.cmake @@ -0,0 +1,11 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) +# The set of files for implicit dependencies of each language: + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/CMakeFiles/ExperimentalUpdate.dir/build.make b/build/CMakeFiles/ExperimentalUpdate.dir/build.make new file mode 100644 index 0000000000000000000000000000000000000000..7ff9b35d149720b588e8ddfcfd11fded71422b5d --- /dev/null +++ b/build/CMakeFiles/ExperimentalUpdate.dir/build.make @@ -0,0 +1,96 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake3 + +# The command to remove a file. +RM = /usr/bin/cmake3 -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/huchen/FAISS/faiss + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/huchen/FAISS/faiss/build + +# Utility rule file for ExperimentalUpdate. + +# Include the progress variables for this target. +include CMakeFiles/ExperimentalUpdate.dir/progress.make + +CMakeFiles/ExperimentalUpdate: + /usr/bin/ctest3 -D ExperimentalUpdate + +ExperimentalUpdate: CMakeFiles/ExperimentalUpdate +ExperimentalUpdate: CMakeFiles/ExperimentalUpdate.dir/build.make + +.PHONY : ExperimentalUpdate + +# Rule to build all files generated by this target. +CMakeFiles/ExperimentalUpdate.dir/build: ExperimentalUpdate + +.PHONY : CMakeFiles/ExperimentalUpdate.dir/build + +CMakeFiles/ExperimentalUpdate.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/ExperimentalUpdate.dir/cmake_clean.cmake +.PHONY : CMakeFiles/ExperimentalUpdate.dir/clean + +CMakeFiles/ExperimentalUpdate.dir/depend: + cd /home/huchen/FAISS/faiss/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build/CMakeFiles/ExperimentalUpdate.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/ExperimentalUpdate.dir/depend + diff --git a/build/CMakeFiles/ExperimentalUpdate.dir/cmake_clean.cmake b/build/CMakeFiles/ExperimentalUpdate.dir/cmake_clean.cmake new file mode 100644 index 0000000000000000000000000000000000000000..23190494323c3f610ef3f4706149811c4fb9c9cd --- /dev/null +++ b/build/CMakeFiles/ExperimentalUpdate.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/ExperimentalUpdate" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/ExperimentalUpdate.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/CMakeFiles/ExperimentalUpdate.dir/progress.make b/build/CMakeFiles/ExperimentalUpdate.dir/progress.make new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/build/CMakeFiles/ExperimentalUpdate.dir/progress.make @@ -0,0 +1 @@ + diff --git a/build/CMakeFiles/FindOpenMP/OpenMPCheckVersion.cpp b/build/CMakeFiles/FindOpenMP/OpenMPCheckVersion.cpp new file mode 100644 index 0000000000000000000000000000000000000000..3321e6b19b3c52f8f3d0f5618c5b3602205d7c8f --- /dev/null +++ b/build/CMakeFiles/FindOpenMP/OpenMPCheckVersion.cpp @@ -0,0 +1,17 @@ + +#include +#include +const char ompver_str[] = { 'I', 'N', 'F', 'O', ':', 'O', 'p', 'e', 'n', 'M', + 'P', '-', 'd', 'a', 't', 'e', '[', + ('0' + ((_OPENMP/100000)%10)), + ('0' + ((_OPENMP/10000)%10)), + ('0' + ((_OPENMP/1000)%10)), + ('0' + ((_OPENMP/100)%10)), + ('0' + ((_OPENMP/10)%10)), + ('0' + ((_OPENMP/1)%10)), + ']', '\0' }; +int main(void) +{ + puts(ompver_str); + return 0; +} diff --git a/build/CMakeFiles/FindOpenMP/OpenMPTryFlag.cpp b/build/CMakeFiles/FindOpenMP/OpenMPTryFlag.cpp new file mode 100644 index 0000000000000000000000000000000000000000..4aea0b0914cbbad2c0156aa2215491e70bc84b13 --- /dev/null +++ b/build/CMakeFiles/FindOpenMP/OpenMPTryFlag.cpp @@ -0,0 +1,12 @@ + +#include +int main(void) { +#ifdef _OPENMP + omp_get_max_threads(); + return 0; +#elif defined(__HIP_DEVICE_COMPILE__) + return 0; +#else + breaks_on_purpose +#endif +} diff --git a/build/CMakeFiles/FindThreads/CheckForPthreads.cxx b/build/CMakeFiles/FindThreads/CheckForPthreads.cxx new file mode 100644 index 0000000000000000000000000000000000000000..e70ceb1da25371b61b10235c5e5d015031794f59 --- /dev/null +++ b/build/CMakeFiles/FindThreads/CheckForPthreads.cxx @@ -0,0 +1,15 @@ +#include + +void* start_routine(void* args) +{ + return args; +} + +int main(void) +{ + /* This is a compile and link test, no code to actually run things. */ + pthread_t thread; + pthread_create(&thread, 0, start_routine, 0); + pthread_join(thread, 0); + return 0; +} diff --git a/build/CMakeFiles/Makefile.cmake b/build/CMakeFiles/Makefile.cmake new file mode 100644 index 0000000000000000000000000000000000000000..68e913b1db59f68bb6d7075a53e51f3c9a6c17e7 --- /dev/null +++ b/build/CMakeFiles/Makefile.cmake @@ -0,0 +1,244 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# The generator used is: +set(CMAKE_DEPENDS_GENERATOR "Unix Makefiles") + +# The top level Makefile was generated from the following files: +set(CMAKE_MAKEFILE_DEPENDS + "CMakeCache.txt" + "../CMakeLists.txt" + "CMakeFiles/3.17.5/CMakeCCompiler.cmake" + "CMakeFiles/3.17.5/CMakeCXXCompiler.cmake" + "CMakeFiles/3.17.5/CMakeSystem.cmake" + "CMakeFiles/CheckFunctionExists/CheckFunctionExists.cxx" + "CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx" + "CMakeFiles/FindOpenMP/OpenMPCheckVersion.cpp" + "CMakeFiles/FindOpenMP/OpenMPTryFlag.cpp" + "CMakeFiles/FindThreads/CheckForPthreads.cxx" + "_deps/googletest-src/CMakeLists.txt" + "_deps/googletest-src/googletest/CMakeLists.txt" + "_deps/googletest-src/googletest/cmake/internal_utils.cmake" + "../cmake/FindMKL.cmake" + "../cmake/faiss-config.cmake.in" + "../demos/CMakeLists.txt" + "../faiss/CMakeLists.txt" + "../faiss/gpu/CMakeLists.txt" + "../faiss/gpu/test/CMakeLists.txt" + "../faiss/python/CMakeLists.txt" + "../faiss/python/__init__.py" + "../faiss/python/loader.py" + "../faiss/python/setup.py" + "../faiss/python/swigfaiss.swig" + "../tests/CMakeLists.txt" + "../tutorial/cpp/CMakeLists.txt" + "/opt/dtk-21.04/hip/cmake/FindHIP.cmake" + "/usr/share/cmake3/Modules/BasicConfigVersion-AnyNewerVersion.cmake.in" + "/usr/share/cmake3/Modules/CMakeCCompiler.cmake.in" + "/usr/share/cmake3/Modules/CMakeCCompilerABI.c" + "/usr/share/cmake3/Modules/CMakeCInformation.cmake" + "/usr/share/cmake3/Modules/CMakeCXXCompiler.cmake.in" + "/usr/share/cmake3/Modules/CMakeCXXCompilerABI.cpp" + "/usr/share/cmake3/Modules/CMakeCXXInformation.cmake" + "/usr/share/cmake3/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake" + "/usr/share/cmake3/Modules/CMakeCommonLanguageInclude.cmake" + "/usr/share/cmake3/Modules/CMakeCompilerIdDetection.cmake" + "/usr/share/cmake3/Modules/CMakeDependentOption.cmake" + "/usr/share/cmake3/Modules/CMakeDetermineCCompiler.cmake" + "/usr/share/cmake3/Modules/CMakeDetermineCXXCompiler.cmake" + "/usr/share/cmake3/Modules/CMakeDetermineCompileFeatures.cmake" + "/usr/share/cmake3/Modules/CMakeDetermineCompiler.cmake" + "/usr/share/cmake3/Modules/CMakeDetermineCompilerABI.cmake" + "/usr/share/cmake3/Modules/CMakeDetermineCompilerId.cmake" + "/usr/share/cmake3/Modules/CMakeDetermineSystem.cmake" + "/usr/share/cmake3/Modules/CMakeFindBinUtils.cmake" + "/usr/share/cmake3/Modules/CMakeGenericSystem.cmake" + "/usr/share/cmake3/Modules/CMakeInitializeConfigs.cmake" + "/usr/share/cmake3/Modules/CMakeLanguageInformation.cmake" + "/usr/share/cmake3/Modules/CMakePackageConfigHelpers.cmake" + "/usr/share/cmake3/Modules/CMakeParseImplicitIncludeInfo.cmake" + "/usr/share/cmake3/Modules/CMakeParseImplicitLinkInfo.cmake" + "/usr/share/cmake3/Modules/CMakePushCheckState.cmake" + "/usr/share/cmake3/Modules/CMakeSystem.cmake.in" + "/usr/share/cmake3/Modules/CMakeSystemSpecificInformation.cmake" + "/usr/share/cmake3/Modules/CMakeSystemSpecificInitialize.cmake" + "/usr/share/cmake3/Modules/CMakeTestCCompiler.cmake" + "/usr/share/cmake3/Modules/CMakeTestCXXCompiler.cmake" + "/usr/share/cmake3/Modules/CMakeTestCompilerCommon.cmake" + "/usr/share/cmake3/Modules/CMakeUnixFindMake.cmake" + "/usr/share/cmake3/Modules/CTest.cmake" + "/usr/share/cmake3/Modules/CTestTargets.cmake" + "/usr/share/cmake3/Modules/CTestUseLaunchers.cmake" + "/usr/share/cmake3/Modules/CheckCSourceCompiles.cmake" + "/usr/share/cmake3/Modules/CheckCXXCompilerFlag.cmake" + "/usr/share/cmake3/Modules/CheckCXXSourceCompiles.cmake" + "/usr/share/cmake3/Modules/CheckForPthreads.c" + "/usr/share/cmake3/Modules/CheckFunctionExists.c" + "/usr/share/cmake3/Modules/CheckFunctionExists.cmake" + "/usr/share/cmake3/Modules/CheckIncludeFile.cmake" + "/usr/share/cmake3/Modules/CheckIncludeFile.cxx.in" + "/usr/share/cmake3/Modules/CheckIncludeFileCXX.cmake" + "/usr/share/cmake3/Modules/CheckLibraryExists.cmake" + "/usr/share/cmake3/Modules/Compiler/ADSP-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/ARMCC-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/ARMClang-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/AppleClang-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/Borland-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/Bruce-C-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + "/usr/share/cmake3/Modules/Compiler/Clang-C.cmake" + "/usr/share/cmake3/Modules/Compiler/Clang-CXX.cmake" + "/usr/share/cmake3/Modules/Compiler/Clang-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + "/usr/share/cmake3/Modules/Compiler/Clang-FindBinUtils.cmake" + "/usr/share/cmake3/Modules/Compiler/Clang.cmake" + "/usr/share/cmake3/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/Compaq-C-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/Cray-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/Embarcadero-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/Fujitsu-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/GHS-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/GNU-C-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/GNU.cmake" + "/usr/share/cmake3/Modules/Compiler/HP-C-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/HP-CXX-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/IAR-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + "/usr/share/cmake3/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" + "/usr/share/cmake3/Modules/Compiler/Intel-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/MSVC-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/NVIDIA-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/PGI-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/PathScale-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/SCO-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/SDCC-C-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/SunPro-C-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/TI-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/Watcom-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/XL-C-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/XL-CXX-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/XLClang-C-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/zOS-C-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake" + "/usr/share/cmake3/Modules/DartConfiguration.tcl.in" + "/usr/share/cmake3/Modules/FetchContent.cmake" + "/usr/share/cmake3/Modules/FetchContent/CMakeLists.cmake.in" + "/usr/share/cmake3/Modules/FindOpenMP.cmake" + "/usr/share/cmake3/Modules/FindPackageHandleStandardArgs.cmake" + "/usr/share/cmake3/Modules/FindPackageMessage.cmake" + "/usr/share/cmake3/Modules/FindPython.cmake" + "/usr/share/cmake3/Modules/FindPython/Support.cmake" + "/usr/share/cmake3/Modules/FindPythonInterp.cmake" + "/usr/share/cmake3/Modules/FindSWIG.cmake" + "/usr/share/cmake3/Modules/FindThreads.cmake" + "/usr/share/cmake3/Modules/GNUInstallDirs.cmake" + "/usr/share/cmake3/Modules/GoogleTest.cmake" + "/usr/share/cmake3/Modules/Internal/CMakeCheckCompilerFlag.cmake" + "/usr/share/cmake3/Modules/Internal/FeatureTesting.cmake" + "/usr/share/cmake3/Modules/Platform/Linux-Clang-C.cmake" + "/usr/share/cmake3/Modules/Platform/Linux-Clang-CXX.cmake" + "/usr/share/cmake3/Modules/Platform/Linux-Determine-CXX.cmake" + "/usr/share/cmake3/Modules/Platform/Linux-GNU-C.cmake" + "/usr/share/cmake3/Modules/Platform/Linux-GNU-CXX.cmake" + "/usr/share/cmake3/Modules/Platform/Linux-GNU.cmake" + "/usr/share/cmake3/Modules/Platform/Linux.cmake" + "/usr/share/cmake3/Modules/Platform/UnixPaths.cmake" + "/usr/share/cmake3/Modules/UseSWIG.cmake" + "/usr/share/cmake3/Modules/WriteBasicConfigVersionFile.cmake" + ) + +# The corresponding makefile is: +set(CMAKE_MAKEFILE_OUTPUTS + "Makefile" + "CMakeFiles/cmake.check_cache" + ) + +# Byproducts of CMake generate step: +set(CMAKE_MAKEFILE_PRODUCTS + "CMakeFiles/3.17.5/CMakeSystem.cmake" + "CMakeFiles/3.17.5/CMakeCXXCompiler.cmake" + "CMakeFiles/3.17.5/CMakeCXXCompiler.cmake" + "DartConfiguration.tcl" + "CMakeFiles/CMakeDirectoryInformation.cmake" + "faiss/CMakeFiles/CMakeDirectoryInformation.cmake" + "faiss/gpu/CMakeFiles/CMakeDirectoryInformation.cmake" + "faiss/python/CMakeFiles/CMakeDirectoryInformation.cmake" + "demos/CMakeFiles/CMakeDirectoryInformation.cmake" + "tutorial/cpp/CMakeFiles/CMakeDirectoryInformation.cmake" + "tests/CMakeFiles/CMakeDirectoryInformation.cmake" + "_deps/googletest-build/CMakeFiles/CMakeDirectoryInformation.cmake" + "_deps/googletest-build/googletest/CMakeFiles/CMakeDirectoryInformation.cmake" + "faiss/gpu/test/CMakeFiles/CMakeDirectoryInformation.cmake" + ) + +# Dependency information for all targets: +set(CMAKE_DEPEND_INFO_FILES + "CMakeFiles/ContinuousSubmit.dir/DependInfo.cmake" + "CMakeFiles/ContinuousCoverage.dir/DependInfo.cmake" + "CMakeFiles/ContinuousTest.dir/DependInfo.cmake" + "CMakeFiles/ContinuousBuild.dir/DependInfo.cmake" + "CMakeFiles/ContinuousMemCheck.dir/DependInfo.cmake" + "CMakeFiles/Nightly.dir/DependInfo.cmake" + "CMakeFiles/NightlyTest.dir/DependInfo.cmake" + "CMakeFiles/NightlyUpdate.dir/DependInfo.cmake" + "CMakeFiles/NightlyBuild.dir/DependInfo.cmake" + "CMakeFiles/Continuous.dir/DependInfo.cmake" + "CMakeFiles/NightlyStart.dir/DependInfo.cmake" + "CMakeFiles/NightlyMemoryCheck.dir/DependInfo.cmake" + "CMakeFiles/NightlyMemCheck.dir/DependInfo.cmake" + "CMakeFiles/ExperimentalStart.dir/DependInfo.cmake" + "CMakeFiles/ContinuousConfigure.dir/DependInfo.cmake" + "CMakeFiles/NightlyCoverage.dir/DependInfo.cmake" + "CMakeFiles/ExperimentalUpdate.dir/DependInfo.cmake" + "CMakeFiles/ExperimentalConfigure.dir/DependInfo.cmake" + "CMakeFiles/ExperimentalCoverage.dir/DependInfo.cmake" + "CMakeFiles/ExperimentalBuild.dir/DependInfo.cmake" + "CMakeFiles/NightlyConfigure.dir/DependInfo.cmake" + "CMakeFiles/ExperimentalTest.dir/DependInfo.cmake" + "CMakeFiles/ExperimentalMemCheck.dir/DependInfo.cmake" + "CMakeFiles/Experimental.dir/DependInfo.cmake" + "CMakeFiles/NightlySubmit.dir/DependInfo.cmake" + "CMakeFiles/ExperimentalSubmit.dir/DependInfo.cmake" + "CMakeFiles/ContinuousStart.dir/DependInfo.cmake" + "CMakeFiles/ContinuousUpdate.dir/DependInfo.cmake" + "faiss/CMakeFiles/faiss_avx2.dir/DependInfo.cmake" + "faiss/CMakeFiles/faiss.dir/DependInfo.cmake" + "faiss/python/CMakeFiles/swigfaiss.dir/DependInfo.cmake" + "faiss/python/CMakeFiles/swigfaiss_avx2_swig_compilation.dir/DependInfo.cmake" + "faiss/python/CMakeFiles/swigfaiss_swig_compilation.dir/DependInfo.cmake" + "faiss/python/CMakeFiles/swigfaiss_avx2.dir/DependInfo.cmake" + "faiss/python/CMakeFiles/faiss_python_callbacks.dir/DependInfo.cmake" + "demos/CMakeFiles/demo_imi_flat.dir/DependInfo.cmake" + "demos/CMakeFiles/demo_imi_pq.dir/DependInfo.cmake" + "demos/CMakeFiles/demo_ivfpq_indexing.dir/DependInfo.cmake" + "demos/CMakeFiles/demo_nndescent.dir/DependInfo.cmake" + "demos/CMakeFiles/demo_weighted_kmeans.dir/DependInfo.cmake" + "demos/CMakeFiles/demo_sift1M.dir/DependInfo.cmake" + "tutorial/cpp/CMakeFiles/1-Flat.dir/DependInfo.cmake" + "tutorial/cpp/CMakeFiles/5-Multiple-GPUs.dir/DependInfo.cmake" + "tutorial/cpp/CMakeFiles/2-IVFFlat.dir/DependInfo.cmake" + "tutorial/cpp/CMakeFiles/3-IVFPQ.dir/DependInfo.cmake" + "tutorial/cpp/CMakeFiles/4-GPU.dir/DependInfo.cmake" + "tests/CMakeFiles/faiss_test.dir/DependInfo.cmake" + "_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/DependInfo.cmake" + "_deps/googletest-build/googletest/CMakeFiles/gtest.dir/DependInfo.cmake" + "faiss/gpu/test/CMakeFiles/demo_ivfpq_indexing_gpu.dir/DependInfo.cmake" + "faiss/gpu/test/CMakeFiles/TestCodePacking.dir/DependInfo.cmake" + "faiss/gpu/test/CMakeFiles/TestGpuMemoryException.dir/DependInfo.cmake" + "faiss/gpu/test/CMakeFiles/TestGpuIndexFlat.dir/DependInfo.cmake" + "faiss/gpu/test/CMakeFiles/faiss_gpu_test_helper.dir/DependInfo.cmake" + "faiss/gpu/test/CMakeFiles/TestGpuIndexIVFFlat.dir/DependInfo.cmake" + "faiss/gpu/test/CMakeFiles/TestGpuDistance.dir/DependInfo.cmake" + "faiss/gpu/test/CMakeFiles/TestGpuIndexBinaryFlat.dir/DependInfo.cmake" + "faiss/gpu/test/CMakeFiles/TestGpuIndexIVFPQ.dir/DependInfo.cmake" + "faiss/gpu/test/CMakeFiles/TestGpuIndexIVFScalarQuantizer.dir/DependInfo.cmake" + "faiss/gpu/test/CMakeFiles/TestGpuSelect.dir/DependInfo.cmake" + ) diff --git a/build/CMakeFiles/Makefile2 b/build/CMakeFiles/Makefile2 new file mode 100644 index 0000000000000000000000000000000000000000..bfdc6933ad4289479fede8de6fdaac5f69f98c1a --- /dev/null +++ b/build/CMakeFiles/Makefile2 @@ -0,0 +1,1991 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Default target executed when no arguments are given to make. +default_target: all + +.PHONY : default_target + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake3 + +# The command to remove a file. +RM = /usr/bin/cmake3 -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/huchen/FAISS/faiss + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/huchen/FAISS/faiss/build + +#============================================================================= +# Directory level rules for the build root directory + +# The main recursive "all" target. +all: faiss/all +all: faiss/gpu/all +all: faiss/python/all +all: demos/all +all: tutorial/cpp/all +all: tests/all +all: faiss/gpu/test/all + +.PHONY : all + +# The main recursive "preinstall" target. +preinstall: faiss/preinstall +preinstall: faiss/gpu/preinstall +preinstall: faiss/python/preinstall +preinstall: demos/preinstall +preinstall: tutorial/cpp/preinstall +preinstall: tests/preinstall +preinstall: faiss/gpu/test/preinstall + +.PHONY : preinstall + +# The main recursive "clean" target. +clean: CMakeFiles/ContinuousSubmit.dir/clean +clean: CMakeFiles/ContinuousCoverage.dir/clean +clean: CMakeFiles/ContinuousTest.dir/clean +clean: CMakeFiles/ContinuousBuild.dir/clean +clean: CMakeFiles/ContinuousMemCheck.dir/clean +clean: CMakeFiles/Nightly.dir/clean +clean: CMakeFiles/NightlyTest.dir/clean +clean: CMakeFiles/NightlyUpdate.dir/clean +clean: CMakeFiles/NightlyBuild.dir/clean +clean: CMakeFiles/Continuous.dir/clean +clean: CMakeFiles/NightlyStart.dir/clean +clean: CMakeFiles/NightlyMemoryCheck.dir/clean +clean: CMakeFiles/NightlyMemCheck.dir/clean +clean: CMakeFiles/ExperimentalStart.dir/clean +clean: CMakeFiles/ContinuousConfigure.dir/clean +clean: CMakeFiles/NightlyCoverage.dir/clean +clean: CMakeFiles/ExperimentalUpdate.dir/clean +clean: CMakeFiles/ExperimentalConfigure.dir/clean +clean: CMakeFiles/ExperimentalCoverage.dir/clean +clean: CMakeFiles/ExperimentalBuild.dir/clean +clean: CMakeFiles/NightlyConfigure.dir/clean +clean: CMakeFiles/ExperimentalTest.dir/clean +clean: CMakeFiles/ExperimentalMemCheck.dir/clean +clean: CMakeFiles/Experimental.dir/clean +clean: CMakeFiles/NightlySubmit.dir/clean +clean: CMakeFiles/ExperimentalSubmit.dir/clean +clean: CMakeFiles/ContinuousStart.dir/clean +clean: CMakeFiles/ContinuousUpdate.dir/clean +clean: faiss/clean +clean: faiss/gpu/clean +clean: faiss/python/clean +clean: demos/clean +clean: tutorial/cpp/clean +clean: tests/clean +clean: faiss/gpu/test/clean + +.PHONY : clean + +#============================================================================= +# Directory level rules for directory _deps/googletest-build + +# Recursive "all" directory target. +_deps/googletest-build/all: _deps/googletest-build/googletest/all + +.PHONY : _deps/googletest-build/all + +# Recursive "preinstall" directory target. +_deps/googletest-build/preinstall: _deps/googletest-build/googletest/preinstall + +.PHONY : _deps/googletest-build/preinstall + +# Recursive "clean" directory target. +_deps/googletest-build/clean: _deps/googletest-build/googletest/clean + +.PHONY : _deps/googletest-build/clean + +#============================================================================= +# Directory level rules for directory _deps/googletest-build/googletest + +# Recursive "all" directory target. +_deps/googletest-build/googletest/all: _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/all +_deps/googletest-build/googletest/all: _deps/googletest-build/googletest/CMakeFiles/gtest.dir/all + +.PHONY : _deps/googletest-build/googletest/all + +# Recursive "preinstall" directory target. +_deps/googletest-build/googletest/preinstall: + +.PHONY : _deps/googletest-build/googletest/preinstall + +# Recursive "clean" directory target. +_deps/googletest-build/googletest/clean: _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/clean +_deps/googletest-build/googletest/clean: _deps/googletest-build/googletest/CMakeFiles/gtest.dir/clean + +.PHONY : _deps/googletest-build/googletest/clean + +#============================================================================= +# Directory level rules for directory demos + +# Recursive "all" directory target. +demos/all: + +.PHONY : demos/all + +# Recursive "preinstall" directory target. +demos/preinstall: + +.PHONY : demos/preinstall + +# Recursive "clean" directory target. +demos/clean: demos/CMakeFiles/demo_imi_flat.dir/clean +demos/clean: demos/CMakeFiles/demo_imi_pq.dir/clean +demos/clean: demos/CMakeFiles/demo_ivfpq_indexing.dir/clean +demos/clean: demos/CMakeFiles/demo_nndescent.dir/clean +demos/clean: demos/CMakeFiles/demo_weighted_kmeans.dir/clean +demos/clean: demos/CMakeFiles/demo_sift1M.dir/clean + +.PHONY : demos/clean + +#============================================================================= +# Directory level rules for directory faiss + +# Recursive "all" directory target. +faiss/all: faiss/CMakeFiles/faiss.dir/all + +.PHONY : faiss/all + +# Recursive "preinstall" directory target. +faiss/preinstall: + +.PHONY : faiss/preinstall + +# Recursive "clean" directory target. +faiss/clean: faiss/CMakeFiles/faiss_avx2.dir/clean +faiss/clean: faiss/CMakeFiles/faiss.dir/clean + +.PHONY : faiss/clean + +#============================================================================= +# Directory level rules for directory faiss/gpu + +# Recursive "all" directory target. +faiss/gpu/all: + +.PHONY : faiss/gpu/all + +# Recursive "preinstall" directory target. +faiss/gpu/preinstall: + +.PHONY : faiss/gpu/preinstall + +# Recursive "clean" directory target. +faiss/gpu/clean: + +.PHONY : faiss/gpu/clean + +#============================================================================= +# Directory level rules for directory faiss/gpu/test + +# Recursive "all" directory target. +faiss/gpu/test/all: faiss/gpu/test/CMakeFiles/TestCodePacking.dir/all +faiss/gpu/test/all: faiss/gpu/test/CMakeFiles/TestGpuMemoryException.dir/all +faiss/gpu/test/all: faiss/gpu/test/CMakeFiles/TestGpuIndexFlat.dir/all +faiss/gpu/test/all: faiss/gpu/test/CMakeFiles/faiss_gpu_test_helper.dir/all +faiss/gpu/test/all: faiss/gpu/test/CMakeFiles/TestGpuIndexIVFFlat.dir/all +faiss/gpu/test/all: faiss/gpu/test/CMakeFiles/TestGpuDistance.dir/all +faiss/gpu/test/all: faiss/gpu/test/CMakeFiles/TestGpuIndexBinaryFlat.dir/all +faiss/gpu/test/all: faiss/gpu/test/CMakeFiles/TestGpuIndexIVFPQ.dir/all +faiss/gpu/test/all: faiss/gpu/test/CMakeFiles/TestGpuIndexIVFScalarQuantizer.dir/all +faiss/gpu/test/all: faiss/gpu/test/CMakeFiles/TestGpuSelect.dir/all + +.PHONY : faiss/gpu/test/all + +# Recursive "preinstall" directory target. +faiss/gpu/test/preinstall: + +.PHONY : faiss/gpu/test/preinstall + +# Recursive "clean" directory target. +faiss/gpu/test/clean: faiss/gpu/test/CMakeFiles/demo_ivfpq_indexing_gpu.dir/clean +faiss/gpu/test/clean: faiss/gpu/test/CMakeFiles/TestCodePacking.dir/clean +faiss/gpu/test/clean: faiss/gpu/test/CMakeFiles/TestGpuMemoryException.dir/clean +faiss/gpu/test/clean: faiss/gpu/test/CMakeFiles/TestGpuIndexFlat.dir/clean +faiss/gpu/test/clean: faiss/gpu/test/CMakeFiles/faiss_gpu_test_helper.dir/clean +faiss/gpu/test/clean: faiss/gpu/test/CMakeFiles/TestGpuIndexIVFFlat.dir/clean +faiss/gpu/test/clean: faiss/gpu/test/CMakeFiles/TestGpuDistance.dir/clean +faiss/gpu/test/clean: faiss/gpu/test/CMakeFiles/TestGpuIndexBinaryFlat.dir/clean +faiss/gpu/test/clean: faiss/gpu/test/CMakeFiles/TestGpuIndexIVFPQ.dir/clean +faiss/gpu/test/clean: faiss/gpu/test/CMakeFiles/TestGpuIndexIVFScalarQuantizer.dir/clean +faiss/gpu/test/clean: faiss/gpu/test/CMakeFiles/TestGpuSelect.dir/clean + +.PHONY : faiss/gpu/test/clean + +#============================================================================= +# Directory level rules for directory faiss/python + +# Recursive "all" directory target. +faiss/python/all: faiss/python/CMakeFiles/swigfaiss.dir/all + +.PHONY : faiss/python/all + +# Recursive "preinstall" directory target. +faiss/python/preinstall: + +.PHONY : faiss/python/preinstall + +# Recursive "clean" directory target. +faiss/python/clean: faiss/python/CMakeFiles/swigfaiss.dir/clean +faiss/python/clean: faiss/python/CMakeFiles/swigfaiss_avx2_swig_compilation.dir/clean +faiss/python/clean: faiss/python/CMakeFiles/swigfaiss_swig_compilation.dir/clean +faiss/python/clean: faiss/python/CMakeFiles/swigfaiss_avx2.dir/clean +faiss/python/clean: faiss/python/CMakeFiles/faiss_python_callbacks.dir/clean + $(CMAKE_COMMAND) -P faiss/python/CMakeFiles/cmake_directory_clean.cmake +.PHONY : faiss/python/clean + +#============================================================================= +# Directory level rules for directory tests + +# Recursive "all" directory target. +tests/all: tests/CMakeFiles/faiss_test.dir/all +tests/all: _deps/googletest-build/all + +.PHONY : tests/all + +# Recursive "preinstall" directory target. +tests/preinstall: _deps/googletest-build/preinstall + +.PHONY : tests/preinstall + +# Recursive "clean" directory target. +tests/clean: tests/CMakeFiles/faiss_test.dir/clean +tests/clean: _deps/googletest-build/clean + +.PHONY : tests/clean + +#============================================================================= +# Directory level rules for directory tutorial/cpp + +# Recursive "all" directory target. +tutorial/cpp/all: + +.PHONY : tutorial/cpp/all + +# Recursive "preinstall" directory target. +tutorial/cpp/preinstall: + +.PHONY : tutorial/cpp/preinstall + +# Recursive "clean" directory target. +tutorial/cpp/clean: tutorial/cpp/CMakeFiles/1-Flat.dir/clean +tutorial/cpp/clean: tutorial/cpp/CMakeFiles/5-Multiple-GPUs.dir/clean +tutorial/cpp/clean: tutorial/cpp/CMakeFiles/2-IVFFlat.dir/clean +tutorial/cpp/clean: tutorial/cpp/CMakeFiles/3-IVFPQ.dir/clean +tutorial/cpp/clean: tutorial/cpp/CMakeFiles/4-GPU.dir/clean + +.PHONY : tutorial/cpp/clean + +#============================================================================= +# Target rules for target CMakeFiles/ContinuousSubmit.dir + +# All Build rule for target. +CMakeFiles/ContinuousSubmit.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousSubmit.dir/build.make CMakeFiles/ContinuousSubmit.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousSubmit.dir/build.make CMakeFiles/ContinuousSubmit.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target ContinuousSubmit" +.PHONY : CMakeFiles/ContinuousSubmit.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/ContinuousSubmit.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/ContinuousSubmit.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : CMakeFiles/ContinuousSubmit.dir/rule + +# Convenience name for target. +ContinuousSubmit: CMakeFiles/ContinuousSubmit.dir/rule + +.PHONY : ContinuousSubmit + +# clean rule for target. +CMakeFiles/ContinuousSubmit.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousSubmit.dir/build.make CMakeFiles/ContinuousSubmit.dir/clean +.PHONY : CMakeFiles/ContinuousSubmit.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/ContinuousCoverage.dir + +# All Build rule for target. +CMakeFiles/ContinuousCoverage.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousCoverage.dir/build.make CMakeFiles/ContinuousCoverage.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousCoverage.dir/build.make CMakeFiles/ContinuousCoverage.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target ContinuousCoverage" +.PHONY : CMakeFiles/ContinuousCoverage.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/ContinuousCoverage.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/ContinuousCoverage.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : CMakeFiles/ContinuousCoverage.dir/rule + +# Convenience name for target. +ContinuousCoverage: CMakeFiles/ContinuousCoverage.dir/rule + +.PHONY : ContinuousCoverage + +# clean rule for target. +CMakeFiles/ContinuousCoverage.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousCoverage.dir/build.make CMakeFiles/ContinuousCoverage.dir/clean +.PHONY : CMakeFiles/ContinuousCoverage.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/ContinuousTest.dir + +# All Build rule for target. +CMakeFiles/ContinuousTest.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousTest.dir/build.make CMakeFiles/ContinuousTest.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousTest.dir/build.make CMakeFiles/ContinuousTest.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target ContinuousTest" +.PHONY : CMakeFiles/ContinuousTest.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/ContinuousTest.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/ContinuousTest.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : CMakeFiles/ContinuousTest.dir/rule + +# Convenience name for target. +ContinuousTest: CMakeFiles/ContinuousTest.dir/rule + +.PHONY : ContinuousTest + +# clean rule for target. +CMakeFiles/ContinuousTest.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousTest.dir/build.make CMakeFiles/ContinuousTest.dir/clean +.PHONY : CMakeFiles/ContinuousTest.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/ContinuousBuild.dir + +# All Build rule for target. +CMakeFiles/ContinuousBuild.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousBuild.dir/build.make CMakeFiles/ContinuousBuild.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousBuild.dir/build.make CMakeFiles/ContinuousBuild.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target ContinuousBuild" +.PHONY : CMakeFiles/ContinuousBuild.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/ContinuousBuild.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/ContinuousBuild.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : CMakeFiles/ContinuousBuild.dir/rule + +# Convenience name for target. +ContinuousBuild: CMakeFiles/ContinuousBuild.dir/rule + +.PHONY : ContinuousBuild + +# clean rule for target. +CMakeFiles/ContinuousBuild.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousBuild.dir/build.make CMakeFiles/ContinuousBuild.dir/clean +.PHONY : CMakeFiles/ContinuousBuild.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/ContinuousMemCheck.dir + +# All Build rule for target. +CMakeFiles/ContinuousMemCheck.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousMemCheck.dir/build.make CMakeFiles/ContinuousMemCheck.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousMemCheck.dir/build.make CMakeFiles/ContinuousMemCheck.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target ContinuousMemCheck" +.PHONY : CMakeFiles/ContinuousMemCheck.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/ContinuousMemCheck.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/ContinuousMemCheck.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : CMakeFiles/ContinuousMemCheck.dir/rule + +# Convenience name for target. +ContinuousMemCheck: CMakeFiles/ContinuousMemCheck.dir/rule + +.PHONY : ContinuousMemCheck + +# clean rule for target. +CMakeFiles/ContinuousMemCheck.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousMemCheck.dir/build.make CMakeFiles/ContinuousMemCheck.dir/clean +.PHONY : CMakeFiles/ContinuousMemCheck.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/Nightly.dir + +# All Build rule for target. +CMakeFiles/Nightly.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/Nightly.dir/build.make CMakeFiles/Nightly.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/Nightly.dir/build.make CMakeFiles/Nightly.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target Nightly" +.PHONY : CMakeFiles/Nightly.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/Nightly.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/Nightly.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : CMakeFiles/Nightly.dir/rule + +# Convenience name for target. +Nightly: CMakeFiles/Nightly.dir/rule + +.PHONY : Nightly + +# clean rule for target. +CMakeFiles/Nightly.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/Nightly.dir/build.make CMakeFiles/Nightly.dir/clean +.PHONY : CMakeFiles/Nightly.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/NightlyTest.dir + +# All Build rule for target. +CMakeFiles/NightlyTest.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyTest.dir/build.make CMakeFiles/NightlyTest.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyTest.dir/build.make CMakeFiles/NightlyTest.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target NightlyTest" +.PHONY : CMakeFiles/NightlyTest.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/NightlyTest.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/NightlyTest.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : CMakeFiles/NightlyTest.dir/rule + +# Convenience name for target. +NightlyTest: CMakeFiles/NightlyTest.dir/rule + +.PHONY : NightlyTest + +# clean rule for target. +CMakeFiles/NightlyTest.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyTest.dir/build.make CMakeFiles/NightlyTest.dir/clean +.PHONY : CMakeFiles/NightlyTest.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/NightlyUpdate.dir + +# All Build rule for target. +CMakeFiles/NightlyUpdate.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyUpdate.dir/build.make CMakeFiles/NightlyUpdate.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyUpdate.dir/build.make CMakeFiles/NightlyUpdate.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target NightlyUpdate" +.PHONY : CMakeFiles/NightlyUpdate.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/NightlyUpdate.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/NightlyUpdate.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : CMakeFiles/NightlyUpdate.dir/rule + +# Convenience name for target. +NightlyUpdate: CMakeFiles/NightlyUpdate.dir/rule + +.PHONY : NightlyUpdate + +# clean rule for target. +CMakeFiles/NightlyUpdate.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyUpdate.dir/build.make CMakeFiles/NightlyUpdate.dir/clean +.PHONY : CMakeFiles/NightlyUpdate.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/NightlyBuild.dir + +# All Build rule for target. +CMakeFiles/NightlyBuild.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyBuild.dir/build.make CMakeFiles/NightlyBuild.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyBuild.dir/build.make CMakeFiles/NightlyBuild.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target NightlyBuild" +.PHONY : CMakeFiles/NightlyBuild.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/NightlyBuild.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/NightlyBuild.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : CMakeFiles/NightlyBuild.dir/rule + +# Convenience name for target. +NightlyBuild: CMakeFiles/NightlyBuild.dir/rule + +.PHONY : NightlyBuild + +# clean rule for target. +CMakeFiles/NightlyBuild.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyBuild.dir/build.make CMakeFiles/NightlyBuild.dir/clean +.PHONY : CMakeFiles/NightlyBuild.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/Continuous.dir + +# All Build rule for target. +CMakeFiles/Continuous.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/Continuous.dir/build.make CMakeFiles/Continuous.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/Continuous.dir/build.make CMakeFiles/Continuous.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target Continuous" +.PHONY : CMakeFiles/Continuous.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/Continuous.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/Continuous.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : CMakeFiles/Continuous.dir/rule + +# Convenience name for target. +Continuous: CMakeFiles/Continuous.dir/rule + +.PHONY : Continuous + +# clean rule for target. +CMakeFiles/Continuous.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/Continuous.dir/build.make CMakeFiles/Continuous.dir/clean +.PHONY : CMakeFiles/Continuous.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/NightlyStart.dir + +# All Build rule for target. +CMakeFiles/NightlyStart.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyStart.dir/build.make CMakeFiles/NightlyStart.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyStart.dir/build.make CMakeFiles/NightlyStart.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target NightlyStart" +.PHONY : CMakeFiles/NightlyStart.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/NightlyStart.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/NightlyStart.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : CMakeFiles/NightlyStart.dir/rule + +# Convenience name for target. +NightlyStart: CMakeFiles/NightlyStart.dir/rule + +.PHONY : NightlyStart + +# clean rule for target. +CMakeFiles/NightlyStart.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyStart.dir/build.make CMakeFiles/NightlyStart.dir/clean +.PHONY : CMakeFiles/NightlyStart.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/NightlyMemoryCheck.dir + +# All Build rule for target. +CMakeFiles/NightlyMemoryCheck.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyMemoryCheck.dir/build.make CMakeFiles/NightlyMemoryCheck.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyMemoryCheck.dir/build.make CMakeFiles/NightlyMemoryCheck.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target NightlyMemoryCheck" +.PHONY : CMakeFiles/NightlyMemoryCheck.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/NightlyMemoryCheck.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/NightlyMemoryCheck.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : CMakeFiles/NightlyMemoryCheck.dir/rule + +# Convenience name for target. +NightlyMemoryCheck: CMakeFiles/NightlyMemoryCheck.dir/rule + +.PHONY : NightlyMemoryCheck + +# clean rule for target. +CMakeFiles/NightlyMemoryCheck.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyMemoryCheck.dir/build.make CMakeFiles/NightlyMemoryCheck.dir/clean +.PHONY : CMakeFiles/NightlyMemoryCheck.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/NightlyMemCheck.dir + +# All Build rule for target. +CMakeFiles/NightlyMemCheck.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyMemCheck.dir/build.make CMakeFiles/NightlyMemCheck.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyMemCheck.dir/build.make CMakeFiles/NightlyMemCheck.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target NightlyMemCheck" +.PHONY : CMakeFiles/NightlyMemCheck.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/NightlyMemCheck.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/NightlyMemCheck.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : CMakeFiles/NightlyMemCheck.dir/rule + +# Convenience name for target. +NightlyMemCheck: CMakeFiles/NightlyMemCheck.dir/rule + +.PHONY : NightlyMemCheck + +# clean rule for target. +CMakeFiles/NightlyMemCheck.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyMemCheck.dir/build.make CMakeFiles/NightlyMemCheck.dir/clean +.PHONY : CMakeFiles/NightlyMemCheck.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/ExperimentalStart.dir + +# All Build rule for target. +CMakeFiles/ExperimentalStart.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalStart.dir/build.make CMakeFiles/ExperimentalStart.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalStart.dir/build.make CMakeFiles/ExperimentalStart.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target ExperimentalStart" +.PHONY : CMakeFiles/ExperimentalStart.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/ExperimentalStart.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/ExperimentalStart.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : CMakeFiles/ExperimentalStart.dir/rule + +# Convenience name for target. +ExperimentalStart: CMakeFiles/ExperimentalStart.dir/rule + +.PHONY : ExperimentalStart + +# clean rule for target. +CMakeFiles/ExperimentalStart.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalStart.dir/build.make CMakeFiles/ExperimentalStart.dir/clean +.PHONY : CMakeFiles/ExperimentalStart.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/ContinuousConfigure.dir + +# All Build rule for target. +CMakeFiles/ContinuousConfigure.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousConfigure.dir/build.make CMakeFiles/ContinuousConfigure.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousConfigure.dir/build.make CMakeFiles/ContinuousConfigure.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target ContinuousConfigure" +.PHONY : CMakeFiles/ContinuousConfigure.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/ContinuousConfigure.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/ContinuousConfigure.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : CMakeFiles/ContinuousConfigure.dir/rule + +# Convenience name for target. +ContinuousConfigure: CMakeFiles/ContinuousConfigure.dir/rule + +.PHONY : ContinuousConfigure + +# clean rule for target. +CMakeFiles/ContinuousConfigure.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousConfigure.dir/build.make CMakeFiles/ContinuousConfigure.dir/clean +.PHONY : CMakeFiles/ContinuousConfigure.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/NightlyCoverage.dir + +# All Build rule for target. +CMakeFiles/NightlyCoverage.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyCoverage.dir/build.make CMakeFiles/NightlyCoverage.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyCoverage.dir/build.make CMakeFiles/NightlyCoverage.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target NightlyCoverage" +.PHONY : CMakeFiles/NightlyCoverage.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/NightlyCoverage.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/NightlyCoverage.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : CMakeFiles/NightlyCoverage.dir/rule + +# Convenience name for target. +NightlyCoverage: CMakeFiles/NightlyCoverage.dir/rule + +.PHONY : NightlyCoverage + +# clean rule for target. +CMakeFiles/NightlyCoverage.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyCoverage.dir/build.make CMakeFiles/NightlyCoverage.dir/clean +.PHONY : CMakeFiles/NightlyCoverage.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/ExperimentalUpdate.dir + +# All Build rule for target. +CMakeFiles/ExperimentalUpdate.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalUpdate.dir/build.make CMakeFiles/ExperimentalUpdate.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalUpdate.dir/build.make CMakeFiles/ExperimentalUpdate.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target ExperimentalUpdate" +.PHONY : CMakeFiles/ExperimentalUpdate.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/ExperimentalUpdate.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/ExperimentalUpdate.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : CMakeFiles/ExperimentalUpdate.dir/rule + +# Convenience name for target. +ExperimentalUpdate: CMakeFiles/ExperimentalUpdate.dir/rule + +.PHONY : ExperimentalUpdate + +# clean rule for target. +CMakeFiles/ExperimentalUpdate.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalUpdate.dir/build.make CMakeFiles/ExperimentalUpdate.dir/clean +.PHONY : CMakeFiles/ExperimentalUpdate.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/ExperimentalConfigure.dir + +# All Build rule for target. +CMakeFiles/ExperimentalConfigure.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalConfigure.dir/build.make CMakeFiles/ExperimentalConfigure.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalConfigure.dir/build.make CMakeFiles/ExperimentalConfigure.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target ExperimentalConfigure" +.PHONY : CMakeFiles/ExperimentalConfigure.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/ExperimentalConfigure.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/ExperimentalConfigure.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : CMakeFiles/ExperimentalConfigure.dir/rule + +# Convenience name for target. +ExperimentalConfigure: CMakeFiles/ExperimentalConfigure.dir/rule + +.PHONY : ExperimentalConfigure + +# clean rule for target. +CMakeFiles/ExperimentalConfigure.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalConfigure.dir/build.make CMakeFiles/ExperimentalConfigure.dir/clean +.PHONY : CMakeFiles/ExperimentalConfigure.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/ExperimentalCoverage.dir + +# All Build rule for target. +CMakeFiles/ExperimentalCoverage.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalCoverage.dir/build.make CMakeFiles/ExperimentalCoverage.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalCoverage.dir/build.make CMakeFiles/ExperimentalCoverage.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target ExperimentalCoverage" +.PHONY : CMakeFiles/ExperimentalCoverage.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/ExperimentalCoverage.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/ExperimentalCoverage.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : CMakeFiles/ExperimentalCoverage.dir/rule + +# Convenience name for target. +ExperimentalCoverage: CMakeFiles/ExperimentalCoverage.dir/rule + +.PHONY : ExperimentalCoverage + +# clean rule for target. +CMakeFiles/ExperimentalCoverage.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalCoverage.dir/build.make CMakeFiles/ExperimentalCoverage.dir/clean +.PHONY : CMakeFiles/ExperimentalCoverage.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/ExperimentalBuild.dir + +# All Build rule for target. +CMakeFiles/ExperimentalBuild.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalBuild.dir/build.make CMakeFiles/ExperimentalBuild.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalBuild.dir/build.make CMakeFiles/ExperimentalBuild.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target ExperimentalBuild" +.PHONY : CMakeFiles/ExperimentalBuild.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/ExperimentalBuild.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/ExperimentalBuild.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : CMakeFiles/ExperimentalBuild.dir/rule + +# Convenience name for target. +ExperimentalBuild: CMakeFiles/ExperimentalBuild.dir/rule + +.PHONY : ExperimentalBuild + +# clean rule for target. +CMakeFiles/ExperimentalBuild.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalBuild.dir/build.make CMakeFiles/ExperimentalBuild.dir/clean +.PHONY : CMakeFiles/ExperimentalBuild.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/NightlyConfigure.dir + +# All Build rule for target. +CMakeFiles/NightlyConfigure.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyConfigure.dir/build.make CMakeFiles/NightlyConfigure.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyConfigure.dir/build.make CMakeFiles/NightlyConfigure.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target NightlyConfigure" +.PHONY : CMakeFiles/NightlyConfigure.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/NightlyConfigure.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/NightlyConfigure.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : CMakeFiles/NightlyConfigure.dir/rule + +# Convenience name for target. +NightlyConfigure: CMakeFiles/NightlyConfigure.dir/rule + +.PHONY : NightlyConfigure + +# clean rule for target. +CMakeFiles/NightlyConfigure.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyConfigure.dir/build.make CMakeFiles/NightlyConfigure.dir/clean +.PHONY : CMakeFiles/NightlyConfigure.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/ExperimentalTest.dir + +# All Build rule for target. +CMakeFiles/ExperimentalTest.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalTest.dir/build.make CMakeFiles/ExperimentalTest.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalTest.dir/build.make CMakeFiles/ExperimentalTest.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target ExperimentalTest" +.PHONY : CMakeFiles/ExperimentalTest.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/ExperimentalTest.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/ExperimentalTest.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : CMakeFiles/ExperimentalTest.dir/rule + +# Convenience name for target. +ExperimentalTest: CMakeFiles/ExperimentalTest.dir/rule + +.PHONY : ExperimentalTest + +# clean rule for target. +CMakeFiles/ExperimentalTest.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalTest.dir/build.make CMakeFiles/ExperimentalTest.dir/clean +.PHONY : CMakeFiles/ExperimentalTest.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/ExperimentalMemCheck.dir + +# All Build rule for target. +CMakeFiles/ExperimentalMemCheck.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalMemCheck.dir/build.make CMakeFiles/ExperimentalMemCheck.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalMemCheck.dir/build.make CMakeFiles/ExperimentalMemCheck.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target ExperimentalMemCheck" +.PHONY : CMakeFiles/ExperimentalMemCheck.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/ExperimentalMemCheck.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/ExperimentalMemCheck.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : CMakeFiles/ExperimentalMemCheck.dir/rule + +# Convenience name for target. +ExperimentalMemCheck: CMakeFiles/ExperimentalMemCheck.dir/rule + +.PHONY : ExperimentalMemCheck + +# clean rule for target. +CMakeFiles/ExperimentalMemCheck.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalMemCheck.dir/build.make CMakeFiles/ExperimentalMemCheck.dir/clean +.PHONY : CMakeFiles/ExperimentalMemCheck.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/Experimental.dir + +# All Build rule for target. +CMakeFiles/Experimental.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/Experimental.dir/build.make CMakeFiles/Experimental.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/Experimental.dir/build.make CMakeFiles/Experimental.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target Experimental" +.PHONY : CMakeFiles/Experimental.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/Experimental.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/Experimental.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : CMakeFiles/Experimental.dir/rule + +# Convenience name for target. +Experimental: CMakeFiles/Experimental.dir/rule + +.PHONY : Experimental + +# clean rule for target. +CMakeFiles/Experimental.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/Experimental.dir/build.make CMakeFiles/Experimental.dir/clean +.PHONY : CMakeFiles/Experimental.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/NightlySubmit.dir + +# All Build rule for target. +CMakeFiles/NightlySubmit.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlySubmit.dir/build.make CMakeFiles/NightlySubmit.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlySubmit.dir/build.make CMakeFiles/NightlySubmit.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target NightlySubmit" +.PHONY : CMakeFiles/NightlySubmit.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/NightlySubmit.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/NightlySubmit.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : CMakeFiles/NightlySubmit.dir/rule + +# Convenience name for target. +NightlySubmit: CMakeFiles/NightlySubmit.dir/rule + +.PHONY : NightlySubmit + +# clean rule for target. +CMakeFiles/NightlySubmit.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlySubmit.dir/build.make CMakeFiles/NightlySubmit.dir/clean +.PHONY : CMakeFiles/NightlySubmit.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/ExperimentalSubmit.dir + +# All Build rule for target. +CMakeFiles/ExperimentalSubmit.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalSubmit.dir/build.make CMakeFiles/ExperimentalSubmit.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalSubmit.dir/build.make CMakeFiles/ExperimentalSubmit.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target ExperimentalSubmit" +.PHONY : CMakeFiles/ExperimentalSubmit.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/ExperimentalSubmit.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/ExperimentalSubmit.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : CMakeFiles/ExperimentalSubmit.dir/rule + +# Convenience name for target. +ExperimentalSubmit: CMakeFiles/ExperimentalSubmit.dir/rule + +.PHONY : ExperimentalSubmit + +# clean rule for target. +CMakeFiles/ExperimentalSubmit.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalSubmit.dir/build.make CMakeFiles/ExperimentalSubmit.dir/clean +.PHONY : CMakeFiles/ExperimentalSubmit.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/ContinuousStart.dir + +# All Build rule for target. +CMakeFiles/ContinuousStart.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousStart.dir/build.make CMakeFiles/ContinuousStart.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousStart.dir/build.make CMakeFiles/ContinuousStart.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target ContinuousStart" +.PHONY : CMakeFiles/ContinuousStart.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/ContinuousStart.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/ContinuousStart.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : CMakeFiles/ContinuousStart.dir/rule + +# Convenience name for target. +ContinuousStart: CMakeFiles/ContinuousStart.dir/rule + +.PHONY : ContinuousStart + +# clean rule for target. +CMakeFiles/ContinuousStart.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousStart.dir/build.make CMakeFiles/ContinuousStart.dir/clean +.PHONY : CMakeFiles/ContinuousStart.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/ContinuousUpdate.dir + +# All Build rule for target. +CMakeFiles/ContinuousUpdate.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousUpdate.dir/build.make CMakeFiles/ContinuousUpdate.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousUpdate.dir/build.make CMakeFiles/ContinuousUpdate.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target ContinuousUpdate" +.PHONY : CMakeFiles/ContinuousUpdate.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/ContinuousUpdate.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/ContinuousUpdate.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : CMakeFiles/ContinuousUpdate.dir/rule + +# Convenience name for target. +ContinuousUpdate: CMakeFiles/ContinuousUpdate.dir/rule + +.PHONY : ContinuousUpdate + +# clean rule for target. +CMakeFiles/ContinuousUpdate.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousUpdate.dir/build.make CMakeFiles/ContinuousUpdate.dir/clean +.PHONY : CMakeFiles/ContinuousUpdate.dir/clean + +#============================================================================= +# Target rules for target faiss/CMakeFiles/faiss_avx2.dir + +# All Build rule for target. +faiss/CMakeFiles/faiss_avx2.dir/all: + $(MAKE) $(MAKESILENT) -f faiss/CMakeFiles/faiss_avx2.dir/build.make faiss/CMakeFiles/faiss_avx2.dir/depend + $(MAKE) $(MAKESILENT) -f faiss/CMakeFiles/faiss_avx2.dir/build.make faiss/CMakeFiles/faiss_avx2.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num=52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91 "Built target faiss_avx2" +.PHONY : faiss/CMakeFiles/faiss_avx2.dir/all + +# Build rule for subdir invocation for target. +faiss/CMakeFiles/faiss_avx2.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 40 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 faiss/CMakeFiles/faiss_avx2.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : faiss/CMakeFiles/faiss_avx2.dir/rule + +# Convenience name for target. +faiss_avx2: faiss/CMakeFiles/faiss_avx2.dir/rule + +.PHONY : faiss_avx2 + +# clean rule for target. +faiss/CMakeFiles/faiss_avx2.dir/clean: + $(MAKE) $(MAKESILENT) -f faiss/CMakeFiles/faiss_avx2.dir/build.make faiss/CMakeFiles/faiss_avx2.dir/clean +.PHONY : faiss/CMakeFiles/faiss_avx2.dir/clean + +#============================================================================= +# Target rules for target faiss/CMakeFiles/faiss.dir + +# All Build rule for target. +faiss/CMakeFiles/faiss.dir/all: + $(MAKE) $(MAKESILENT) -f faiss/CMakeFiles/faiss.dir/build.make faiss/CMakeFiles/faiss.dir/depend + $(MAKE) $(MAKESILENT) -f faiss/CMakeFiles/faiss.dir/build.make faiss/CMakeFiles/faiss.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num=12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51 "Built target faiss" +.PHONY : faiss/CMakeFiles/faiss.dir/all + +# Build rule for subdir invocation for target. +faiss/CMakeFiles/faiss.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 40 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 faiss/CMakeFiles/faiss.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : faiss/CMakeFiles/faiss.dir/rule + +# Convenience name for target. +faiss: faiss/CMakeFiles/faiss.dir/rule + +.PHONY : faiss + +# clean rule for target. +faiss/CMakeFiles/faiss.dir/clean: + $(MAKE) $(MAKESILENT) -f faiss/CMakeFiles/faiss.dir/build.make faiss/CMakeFiles/faiss.dir/clean +.PHONY : faiss/CMakeFiles/faiss.dir/clean + +#============================================================================= +# Target rules for target faiss/python/CMakeFiles/swigfaiss.dir + +# All Build rule for target. +faiss/python/CMakeFiles/swigfaiss.dir/all: faiss/CMakeFiles/faiss.dir/all +faiss/python/CMakeFiles/swigfaiss.dir/all: faiss/python/CMakeFiles/swigfaiss_swig_compilation.dir/all +faiss/python/CMakeFiles/swigfaiss.dir/all: faiss/python/CMakeFiles/faiss_python_callbacks.dir/all + $(MAKE) $(MAKESILENT) -f faiss/python/CMakeFiles/swigfaiss.dir/build.make faiss/python/CMakeFiles/swigfaiss.dir/depend + $(MAKE) $(MAKESILENT) -f faiss/python/CMakeFiles/swigfaiss.dir/build.make faiss/python/CMakeFiles/swigfaiss.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target swigfaiss" +.PHONY : faiss/python/CMakeFiles/swigfaiss.dir/all + +# Build rule for subdir invocation for target. +faiss/python/CMakeFiles/swigfaiss.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 41 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 faiss/python/CMakeFiles/swigfaiss.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : faiss/python/CMakeFiles/swigfaiss.dir/rule + +# Convenience name for target. +swigfaiss: faiss/python/CMakeFiles/swigfaiss.dir/rule + +.PHONY : swigfaiss + +# clean rule for target. +faiss/python/CMakeFiles/swigfaiss.dir/clean: + $(MAKE) $(MAKESILENT) -f faiss/python/CMakeFiles/swigfaiss.dir/build.make faiss/python/CMakeFiles/swigfaiss.dir/clean +.PHONY : faiss/python/CMakeFiles/swigfaiss.dir/clean + +#============================================================================= +# Target rules for target faiss/python/CMakeFiles/swigfaiss_avx2_swig_compilation.dir + +# All Build rule for target. +faiss/python/CMakeFiles/swigfaiss_avx2_swig_compilation.dir/all: + $(MAKE) $(MAKESILENT) -f faiss/python/CMakeFiles/swigfaiss_avx2_swig_compilation.dir/build.make faiss/python/CMakeFiles/swigfaiss_avx2_swig_compilation.dir/depend + $(MAKE) $(MAKESILENT) -f faiss/python/CMakeFiles/swigfaiss_avx2_swig_compilation.dir/build.make faiss/python/CMakeFiles/swigfaiss_avx2_swig_compilation.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target swigfaiss_avx2_swig_compilation" +.PHONY : faiss/python/CMakeFiles/swigfaiss_avx2_swig_compilation.dir/all + +# Build rule for subdir invocation for target. +faiss/python/CMakeFiles/swigfaiss_avx2_swig_compilation.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 faiss/python/CMakeFiles/swigfaiss_avx2_swig_compilation.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : faiss/python/CMakeFiles/swigfaiss_avx2_swig_compilation.dir/rule + +# Convenience name for target. +swigfaiss_avx2_swig_compilation: faiss/python/CMakeFiles/swigfaiss_avx2_swig_compilation.dir/rule + +.PHONY : swigfaiss_avx2_swig_compilation + +# clean rule for target. +faiss/python/CMakeFiles/swigfaiss_avx2_swig_compilation.dir/clean: + $(MAKE) $(MAKESILENT) -f faiss/python/CMakeFiles/swigfaiss_avx2_swig_compilation.dir/build.make faiss/python/CMakeFiles/swigfaiss_avx2_swig_compilation.dir/clean +.PHONY : faiss/python/CMakeFiles/swigfaiss_avx2_swig_compilation.dir/clean + +#============================================================================= +# Target rules for target faiss/python/CMakeFiles/swigfaiss_swig_compilation.dir + +# All Build rule for target. +faiss/python/CMakeFiles/swigfaiss_swig_compilation.dir/all: + $(MAKE) $(MAKESILENT) -f faiss/python/CMakeFiles/swigfaiss_swig_compilation.dir/build.make faiss/python/CMakeFiles/swigfaiss_swig_compilation.dir/depend + $(MAKE) $(MAKESILENT) -f faiss/python/CMakeFiles/swigfaiss_swig_compilation.dir/build.make faiss/python/CMakeFiles/swigfaiss_swig_compilation.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num=100 "Built target swigfaiss_swig_compilation" +.PHONY : faiss/python/CMakeFiles/swigfaiss_swig_compilation.dir/all + +# Build rule for subdir invocation for target. +faiss/python/CMakeFiles/swigfaiss_swig_compilation.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 1 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 faiss/python/CMakeFiles/swigfaiss_swig_compilation.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : faiss/python/CMakeFiles/swigfaiss_swig_compilation.dir/rule + +# Convenience name for target. +swigfaiss_swig_compilation: faiss/python/CMakeFiles/swigfaiss_swig_compilation.dir/rule + +.PHONY : swigfaiss_swig_compilation + +# clean rule for target. +faiss/python/CMakeFiles/swigfaiss_swig_compilation.dir/clean: + $(MAKE) $(MAKESILENT) -f faiss/python/CMakeFiles/swigfaiss_swig_compilation.dir/build.make faiss/python/CMakeFiles/swigfaiss_swig_compilation.dir/clean +.PHONY : faiss/python/CMakeFiles/swigfaiss_swig_compilation.dir/clean + +#============================================================================= +# Target rules for target faiss/python/CMakeFiles/swigfaiss_avx2.dir + +# All Build rule for target. +faiss/python/CMakeFiles/swigfaiss_avx2.dir/all: faiss/CMakeFiles/faiss_avx2.dir/all +faiss/python/CMakeFiles/swigfaiss_avx2.dir/all: faiss/python/CMakeFiles/swigfaiss_avx2_swig_compilation.dir/all +faiss/python/CMakeFiles/swigfaiss_avx2.dir/all: faiss/python/CMakeFiles/faiss_python_callbacks.dir/all + $(MAKE) $(MAKESILENT) -f faiss/python/CMakeFiles/swigfaiss_avx2.dir/build.make faiss/python/CMakeFiles/swigfaiss_avx2.dir/depend + $(MAKE) $(MAKESILENT) -f faiss/python/CMakeFiles/swigfaiss_avx2.dir/build.make faiss/python/CMakeFiles/swigfaiss_avx2.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num=99 "Built target swigfaiss_avx2" +.PHONY : faiss/python/CMakeFiles/swigfaiss_avx2.dir/all + +# Build rule for subdir invocation for target. +faiss/python/CMakeFiles/swigfaiss_avx2.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 41 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 faiss/python/CMakeFiles/swigfaiss_avx2.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : faiss/python/CMakeFiles/swigfaiss_avx2.dir/rule + +# Convenience name for target. +swigfaiss_avx2: faiss/python/CMakeFiles/swigfaiss_avx2.dir/rule + +.PHONY : swigfaiss_avx2 + +# clean rule for target. +faiss/python/CMakeFiles/swigfaiss_avx2.dir/clean: + $(MAKE) $(MAKESILENT) -f faiss/python/CMakeFiles/swigfaiss_avx2.dir/build.make faiss/python/CMakeFiles/swigfaiss_avx2.dir/clean +.PHONY : faiss/python/CMakeFiles/swigfaiss_avx2.dir/clean + +#============================================================================= +# Target rules for target faiss/python/CMakeFiles/faiss_python_callbacks.dir + +# All Build rule for target. +faiss/python/CMakeFiles/faiss_python_callbacks.dir/all: + $(MAKE) $(MAKESILENT) -f faiss/python/CMakeFiles/faiss_python_callbacks.dir/build.make faiss/python/CMakeFiles/faiss_python_callbacks.dir/depend + $(MAKE) $(MAKESILENT) -f faiss/python/CMakeFiles/faiss_python_callbacks.dir/build.make faiss/python/CMakeFiles/faiss_python_callbacks.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target faiss_python_callbacks" +.PHONY : faiss/python/CMakeFiles/faiss_python_callbacks.dir/all + +# Build rule for subdir invocation for target. +faiss/python/CMakeFiles/faiss_python_callbacks.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 faiss/python/CMakeFiles/faiss_python_callbacks.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : faiss/python/CMakeFiles/faiss_python_callbacks.dir/rule + +# Convenience name for target. +faiss_python_callbacks: faiss/python/CMakeFiles/faiss_python_callbacks.dir/rule + +.PHONY : faiss_python_callbacks + +# clean rule for target. +faiss/python/CMakeFiles/faiss_python_callbacks.dir/clean: + $(MAKE) $(MAKESILENT) -f faiss/python/CMakeFiles/faiss_python_callbacks.dir/build.make faiss/python/CMakeFiles/faiss_python_callbacks.dir/clean +.PHONY : faiss/python/CMakeFiles/faiss_python_callbacks.dir/clean + +#============================================================================= +# Target rules for target demos/CMakeFiles/demo_imi_flat.dir + +# All Build rule for target. +demos/CMakeFiles/demo_imi_flat.dir/all: faiss/CMakeFiles/faiss.dir/all + $(MAKE) $(MAKESILENT) -f demos/CMakeFiles/demo_imi_flat.dir/build.make demos/CMakeFiles/demo_imi_flat.dir/depend + $(MAKE) $(MAKESILENT) -f demos/CMakeFiles/demo_imi_flat.dir/build.make demos/CMakeFiles/demo_imi_flat.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num=8 "Built target demo_imi_flat" +.PHONY : demos/CMakeFiles/demo_imi_flat.dir/all + +# Build rule for subdir invocation for target. +demos/CMakeFiles/demo_imi_flat.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 41 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 demos/CMakeFiles/demo_imi_flat.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : demos/CMakeFiles/demo_imi_flat.dir/rule + +# Convenience name for target. +demo_imi_flat: demos/CMakeFiles/demo_imi_flat.dir/rule + +.PHONY : demo_imi_flat + +# clean rule for target. +demos/CMakeFiles/demo_imi_flat.dir/clean: + $(MAKE) $(MAKESILENT) -f demos/CMakeFiles/demo_imi_flat.dir/build.make demos/CMakeFiles/demo_imi_flat.dir/clean +.PHONY : demos/CMakeFiles/demo_imi_flat.dir/clean + +#============================================================================= +# Target rules for target demos/CMakeFiles/demo_imi_pq.dir + +# All Build rule for target. +demos/CMakeFiles/demo_imi_pq.dir/all: faiss/CMakeFiles/faiss.dir/all + $(MAKE) $(MAKESILENT) -f demos/CMakeFiles/demo_imi_pq.dir/build.make demos/CMakeFiles/demo_imi_pq.dir/depend + $(MAKE) $(MAKESILENT) -f demos/CMakeFiles/demo_imi_pq.dir/build.make demos/CMakeFiles/demo_imi_pq.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target demo_imi_pq" +.PHONY : demos/CMakeFiles/demo_imi_pq.dir/all + +# Build rule for subdir invocation for target. +demos/CMakeFiles/demo_imi_pq.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 40 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 demos/CMakeFiles/demo_imi_pq.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : demos/CMakeFiles/demo_imi_pq.dir/rule + +# Convenience name for target. +demo_imi_pq: demos/CMakeFiles/demo_imi_pq.dir/rule + +.PHONY : demo_imi_pq + +# clean rule for target. +demos/CMakeFiles/demo_imi_pq.dir/clean: + $(MAKE) $(MAKESILENT) -f demos/CMakeFiles/demo_imi_pq.dir/build.make demos/CMakeFiles/demo_imi_pq.dir/clean +.PHONY : demos/CMakeFiles/demo_imi_pq.dir/clean + +#============================================================================= +# Target rules for target demos/CMakeFiles/demo_ivfpq_indexing.dir + +# All Build rule for target. +demos/CMakeFiles/demo_ivfpq_indexing.dir/all: faiss/CMakeFiles/faiss.dir/all + $(MAKE) $(MAKESILENT) -f demos/CMakeFiles/demo_ivfpq_indexing.dir/build.make demos/CMakeFiles/demo_ivfpq_indexing.dir/depend + $(MAKE) $(MAKESILENT) -f demos/CMakeFiles/demo_ivfpq_indexing.dir/build.make demos/CMakeFiles/demo_ivfpq_indexing.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num=9 "Built target demo_ivfpq_indexing" +.PHONY : demos/CMakeFiles/demo_ivfpq_indexing.dir/all + +# Build rule for subdir invocation for target. +demos/CMakeFiles/demo_ivfpq_indexing.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 41 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 demos/CMakeFiles/demo_ivfpq_indexing.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : demos/CMakeFiles/demo_ivfpq_indexing.dir/rule + +# Convenience name for target. +demo_ivfpq_indexing: demos/CMakeFiles/demo_ivfpq_indexing.dir/rule + +.PHONY : demo_ivfpq_indexing + +# clean rule for target. +demos/CMakeFiles/demo_ivfpq_indexing.dir/clean: + $(MAKE) $(MAKESILENT) -f demos/CMakeFiles/demo_ivfpq_indexing.dir/build.make demos/CMakeFiles/demo_ivfpq_indexing.dir/clean +.PHONY : demos/CMakeFiles/demo_ivfpq_indexing.dir/clean + +#============================================================================= +# Target rules for target demos/CMakeFiles/demo_nndescent.dir + +# All Build rule for target. +demos/CMakeFiles/demo_nndescent.dir/all: faiss/CMakeFiles/faiss.dir/all + $(MAKE) $(MAKESILENT) -f demos/CMakeFiles/demo_nndescent.dir/build.make demos/CMakeFiles/demo_nndescent.dir/depend + $(MAKE) $(MAKESILENT) -f demos/CMakeFiles/demo_nndescent.dir/build.make demos/CMakeFiles/demo_nndescent.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target demo_nndescent" +.PHONY : demos/CMakeFiles/demo_nndescent.dir/all + +# Build rule for subdir invocation for target. +demos/CMakeFiles/demo_nndescent.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 40 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 demos/CMakeFiles/demo_nndescent.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : demos/CMakeFiles/demo_nndescent.dir/rule + +# Convenience name for target. +demo_nndescent: demos/CMakeFiles/demo_nndescent.dir/rule + +.PHONY : demo_nndescent + +# clean rule for target. +demos/CMakeFiles/demo_nndescent.dir/clean: + $(MAKE) $(MAKESILENT) -f demos/CMakeFiles/demo_nndescent.dir/build.make demos/CMakeFiles/demo_nndescent.dir/clean +.PHONY : demos/CMakeFiles/demo_nndescent.dir/clean + +#============================================================================= +# Target rules for target demos/CMakeFiles/demo_weighted_kmeans.dir + +# All Build rule for target. +demos/CMakeFiles/demo_weighted_kmeans.dir/all: faiss/CMakeFiles/faiss.dir/all + $(MAKE) $(MAKESILENT) -f demos/CMakeFiles/demo_weighted_kmeans.dir/build.make demos/CMakeFiles/demo_weighted_kmeans.dir/depend + $(MAKE) $(MAKESILENT) -f demos/CMakeFiles/demo_weighted_kmeans.dir/build.make demos/CMakeFiles/demo_weighted_kmeans.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target demo_weighted_kmeans" +.PHONY : demos/CMakeFiles/demo_weighted_kmeans.dir/all + +# Build rule for subdir invocation for target. +demos/CMakeFiles/demo_weighted_kmeans.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 40 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 demos/CMakeFiles/demo_weighted_kmeans.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : demos/CMakeFiles/demo_weighted_kmeans.dir/rule + +# Convenience name for target. +demo_weighted_kmeans: demos/CMakeFiles/demo_weighted_kmeans.dir/rule + +.PHONY : demo_weighted_kmeans + +# clean rule for target. +demos/CMakeFiles/demo_weighted_kmeans.dir/clean: + $(MAKE) $(MAKESILENT) -f demos/CMakeFiles/demo_weighted_kmeans.dir/build.make demos/CMakeFiles/demo_weighted_kmeans.dir/clean +.PHONY : demos/CMakeFiles/demo_weighted_kmeans.dir/clean + +#============================================================================= +# Target rules for target demos/CMakeFiles/demo_sift1M.dir + +# All Build rule for target. +demos/CMakeFiles/demo_sift1M.dir/all: faiss/CMakeFiles/faiss.dir/all + $(MAKE) $(MAKESILENT) -f demos/CMakeFiles/demo_sift1M.dir/build.make demos/CMakeFiles/demo_sift1M.dir/depend + $(MAKE) $(MAKESILENT) -f demos/CMakeFiles/demo_sift1M.dir/build.make demos/CMakeFiles/demo_sift1M.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num=11 "Built target demo_sift1M" +.PHONY : demos/CMakeFiles/demo_sift1M.dir/all + +# Build rule for subdir invocation for target. +demos/CMakeFiles/demo_sift1M.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 41 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 demos/CMakeFiles/demo_sift1M.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : demos/CMakeFiles/demo_sift1M.dir/rule + +# Convenience name for target. +demo_sift1M: demos/CMakeFiles/demo_sift1M.dir/rule + +.PHONY : demo_sift1M + +# clean rule for target. +demos/CMakeFiles/demo_sift1M.dir/clean: + $(MAKE) $(MAKESILENT) -f demos/CMakeFiles/demo_sift1M.dir/build.make demos/CMakeFiles/demo_sift1M.dir/clean +.PHONY : demos/CMakeFiles/demo_sift1M.dir/clean + +#============================================================================= +# Target rules for target tutorial/cpp/CMakeFiles/1-Flat.dir + +# All Build rule for target. +tutorial/cpp/CMakeFiles/1-Flat.dir/all: faiss/CMakeFiles/faiss.dir/all + $(MAKE) $(MAKESILENT) -f tutorial/cpp/CMakeFiles/1-Flat.dir/build.make tutorial/cpp/CMakeFiles/1-Flat.dir/depend + $(MAKE) $(MAKESILENT) -f tutorial/cpp/CMakeFiles/1-Flat.dir/build.make tutorial/cpp/CMakeFiles/1-Flat.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target 1-Flat" +.PHONY : tutorial/cpp/CMakeFiles/1-Flat.dir/all + +# Build rule for subdir invocation for target. +tutorial/cpp/CMakeFiles/1-Flat.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 40 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 tutorial/cpp/CMakeFiles/1-Flat.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : tutorial/cpp/CMakeFiles/1-Flat.dir/rule + +# Convenience name for target. +1-Flat: tutorial/cpp/CMakeFiles/1-Flat.dir/rule + +.PHONY : 1-Flat + +# clean rule for target. +tutorial/cpp/CMakeFiles/1-Flat.dir/clean: + $(MAKE) $(MAKESILENT) -f tutorial/cpp/CMakeFiles/1-Flat.dir/build.make tutorial/cpp/CMakeFiles/1-Flat.dir/clean +.PHONY : tutorial/cpp/CMakeFiles/1-Flat.dir/clean + +#============================================================================= +# Target rules for target tutorial/cpp/CMakeFiles/5-Multiple-GPUs.dir + +# All Build rule for target. +tutorial/cpp/CMakeFiles/5-Multiple-GPUs.dir/all: faiss/CMakeFiles/faiss.dir/all + $(MAKE) $(MAKESILENT) -f tutorial/cpp/CMakeFiles/5-Multiple-GPUs.dir/build.make tutorial/cpp/CMakeFiles/5-Multiple-GPUs.dir/depend + $(MAKE) $(MAKESILENT) -f tutorial/cpp/CMakeFiles/5-Multiple-GPUs.dir/build.make tutorial/cpp/CMakeFiles/5-Multiple-GPUs.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target 5-Multiple-GPUs" +.PHONY : tutorial/cpp/CMakeFiles/5-Multiple-GPUs.dir/all + +# Build rule for subdir invocation for target. +tutorial/cpp/CMakeFiles/5-Multiple-GPUs.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 40 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 tutorial/cpp/CMakeFiles/5-Multiple-GPUs.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : tutorial/cpp/CMakeFiles/5-Multiple-GPUs.dir/rule + +# Convenience name for target. +5-Multiple-GPUs: tutorial/cpp/CMakeFiles/5-Multiple-GPUs.dir/rule + +.PHONY : 5-Multiple-GPUs + +# clean rule for target. +tutorial/cpp/CMakeFiles/5-Multiple-GPUs.dir/clean: + $(MAKE) $(MAKESILENT) -f tutorial/cpp/CMakeFiles/5-Multiple-GPUs.dir/build.make tutorial/cpp/CMakeFiles/5-Multiple-GPUs.dir/clean +.PHONY : tutorial/cpp/CMakeFiles/5-Multiple-GPUs.dir/clean + +#============================================================================= +# Target rules for target tutorial/cpp/CMakeFiles/2-IVFFlat.dir + +# All Build rule for target. +tutorial/cpp/CMakeFiles/2-IVFFlat.dir/all: faiss/CMakeFiles/faiss.dir/all + $(MAKE) $(MAKESILENT) -f tutorial/cpp/CMakeFiles/2-IVFFlat.dir/build.make tutorial/cpp/CMakeFiles/2-IVFFlat.dir/depend + $(MAKE) $(MAKESILENT) -f tutorial/cpp/CMakeFiles/2-IVFFlat.dir/build.make tutorial/cpp/CMakeFiles/2-IVFFlat.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num=1 "Built target 2-IVFFlat" +.PHONY : tutorial/cpp/CMakeFiles/2-IVFFlat.dir/all + +# Build rule for subdir invocation for target. +tutorial/cpp/CMakeFiles/2-IVFFlat.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 41 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 tutorial/cpp/CMakeFiles/2-IVFFlat.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : tutorial/cpp/CMakeFiles/2-IVFFlat.dir/rule + +# Convenience name for target. +2-IVFFlat: tutorial/cpp/CMakeFiles/2-IVFFlat.dir/rule + +.PHONY : 2-IVFFlat + +# clean rule for target. +tutorial/cpp/CMakeFiles/2-IVFFlat.dir/clean: + $(MAKE) $(MAKESILENT) -f tutorial/cpp/CMakeFiles/2-IVFFlat.dir/build.make tutorial/cpp/CMakeFiles/2-IVFFlat.dir/clean +.PHONY : tutorial/cpp/CMakeFiles/2-IVFFlat.dir/clean + +#============================================================================= +# Target rules for target tutorial/cpp/CMakeFiles/3-IVFPQ.dir + +# All Build rule for target. +tutorial/cpp/CMakeFiles/3-IVFPQ.dir/all: faiss/CMakeFiles/faiss.dir/all + $(MAKE) $(MAKESILENT) -f tutorial/cpp/CMakeFiles/3-IVFPQ.dir/build.make tutorial/cpp/CMakeFiles/3-IVFPQ.dir/depend + $(MAKE) $(MAKESILENT) -f tutorial/cpp/CMakeFiles/3-IVFPQ.dir/build.make tutorial/cpp/CMakeFiles/3-IVFPQ.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target 3-IVFPQ" +.PHONY : tutorial/cpp/CMakeFiles/3-IVFPQ.dir/all + +# Build rule for subdir invocation for target. +tutorial/cpp/CMakeFiles/3-IVFPQ.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 40 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 tutorial/cpp/CMakeFiles/3-IVFPQ.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : tutorial/cpp/CMakeFiles/3-IVFPQ.dir/rule + +# Convenience name for target. +3-IVFPQ: tutorial/cpp/CMakeFiles/3-IVFPQ.dir/rule + +.PHONY : 3-IVFPQ + +# clean rule for target. +tutorial/cpp/CMakeFiles/3-IVFPQ.dir/clean: + $(MAKE) $(MAKESILENT) -f tutorial/cpp/CMakeFiles/3-IVFPQ.dir/build.make tutorial/cpp/CMakeFiles/3-IVFPQ.dir/clean +.PHONY : tutorial/cpp/CMakeFiles/3-IVFPQ.dir/clean + +#============================================================================= +# Target rules for target tutorial/cpp/CMakeFiles/4-GPU.dir + +# All Build rule for target. +tutorial/cpp/CMakeFiles/4-GPU.dir/all: faiss/CMakeFiles/faiss.dir/all + $(MAKE) $(MAKESILENT) -f tutorial/cpp/CMakeFiles/4-GPU.dir/build.make tutorial/cpp/CMakeFiles/4-GPU.dir/depend + $(MAKE) $(MAKESILENT) -f tutorial/cpp/CMakeFiles/4-GPU.dir/build.make tutorial/cpp/CMakeFiles/4-GPU.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num=2 "Built target 4-GPU" +.PHONY : tutorial/cpp/CMakeFiles/4-GPU.dir/all + +# Build rule for subdir invocation for target. +tutorial/cpp/CMakeFiles/4-GPU.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 41 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 tutorial/cpp/CMakeFiles/4-GPU.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : tutorial/cpp/CMakeFiles/4-GPU.dir/rule + +# Convenience name for target. +4-GPU: tutorial/cpp/CMakeFiles/4-GPU.dir/rule + +.PHONY : 4-GPU + +# clean rule for target. +tutorial/cpp/CMakeFiles/4-GPU.dir/clean: + $(MAKE) $(MAKESILENT) -f tutorial/cpp/CMakeFiles/4-GPU.dir/build.make tutorial/cpp/CMakeFiles/4-GPU.dir/clean +.PHONY : tutorial/cpp/CMakeFiles/4-GPU.dir/clean + +#============================================================================= +# Target rules for target tests/CMakeFiles/faiss_test.dir + +# All Build rule for target. +tests/CMakeFiles/faiss_test.dir/all: faiss/CMakeFiles/faiss.dir/all +tests/CMakeFiles/faiss_test.dir/all: _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/all +tests/CMakeFiles/faiss_test.dir/all: _deps/googletest-build/googletest/CMakeFiles/gtest.dir/all + $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/faiss_test.dir/build.make tests/CMakeFiles/faiss_test.dir/depend + $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/faiss_test.dir/build.make tests/CMakeFiles/faiss_test.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num=93,94,95,96,97 "Built target faiss_test" +.PHONY : tests/CMakeFiles/faiss_test.dir/all + +# Build rule for subdir invocation for target. +tests/CMakeFiles/faiss_test.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 46 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 tests/CMakeFiles/faiss_test.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : tests/CMakeFiles/faiss_test.dir/rule + +# Convenience name for target. +faiss_test: tests/CMakeFiles/faiss_test.dir/rule + +.PHONY : faiss_test + +# clean rule for target. +tests/CMakeFiles/faiss_test.dir/clean: + $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/faiss_test.dir/build.make tests/CMakeFiles/faiss_test.dir/clean +.PHONY : tests/CMakeFiles/faiss_test.dir/clean + +#============================================================================= +# Target rules for target _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir + +# All Build rule for target. +_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/all: _deps/googletest-build/googletest/CMakeFiles/gtest.dir/all + $(MAKE) $(MAKESILENT) -f _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/build.make _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/depend + $(MAKE) $(MAKESILENT) -f _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/build.make _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num=98 "Built target gtest_main" +.PHONY : _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/all + +# Build rule for subdir invocation for target. +_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 1 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/rule + +# Convenience name for target. +gtest_main: _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/rule + +.PHONY : gtest_main + +# clean rule for target. +_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/clean: + $(MAKE) $(MAKESILENT) -f _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/build.make _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/clean +.PHONY : _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/clean + +#============================================================================= +# Target rules for target _deps/googletest-build/googletest/CMakeFiles/gtest.dir + +# All Build rule for target. +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/all: + $(MAKE) $(MAKESILENT) -f _deps/googletest-build/googletest/CMakeFiles/gtest.dir/build.make _deps/googletest-build/googletest/CMakeFiles/gtest.dir/depend + $(MAKE) $(MAKESILENT) -f _deps/googletest-build/googletest/CMakeFiles/gtest.dir/build.make _deps/googletest-build/googletest/CMakeFiles/gtest.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target gtest" +.PHONY : _deps/googletest-build/googletest/CMakeFiles/gtest.dir/all + +# Build rule for subdir invocation for target. +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 _deps/googletest-build/googletest/CMakeFiles/gtest.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : _deps/googletest-build/googletest/CMakeFiles/gtest.dir/rule + +# Convenience name for target. +gtest: _deps/googletest-build/googletest/CMakeFiles/gtest.dir/rule + +.PHONY : gtest + +# clean rule for target. +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/clean: + $(MAKE) $(MAKESILENT) -f _deps/googletest-build/googletest/CMakeFiles/gtest.dir/build.make _deps/googletest-build/googletest/CMakeFiles/gtest.dir/clean +.PHONY : _deps/googletest-build/googletest/CMakeFiles/gtest.dir/clean + +#============================================================================= +# Target rules for target faiss/gpu/test/CMakeFiles/demo_ivfpq_indexing_gpu.dir + +# All Build rule for target. +faiss/gpu/test/CMakeFiles/demo_ivfpq_indexing_gpu.dir/all: faiss/CMakeFiles/faiss.dir/all +faiss/gpu/test/CMakeFiles/demo_ivfpq_indexing_gpu.dir/all: _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/all +faiss/gpu/test/CMakeFiles/demo_ivfpq_indexing_gpu.dir/all: _deps/googletest-build/googletest/CMakeFiles/gtest.dir/all + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/demo_ivfpq_indexing_gpu.dir/build.make faiss/gpu/test/CMakeFiles/demo_ivfpq_indexing_gpu.dir/depend + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/demo_ivfpq_indexing_gpu.dir/build.make faiss/gpu/test/CMakeFiles/demo_ivfpq_indexing_gpu.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num=10 "Built target demo_ivfpq_indexing_gpu" +.PHONY : faiss/gpu/test/CMakeFiles/demo_ivfpq_indexing_gpu.dir/all + +# Build rule for subdir invocation for target. +faiss/gpu/test/CMakeFiles/demo_ivfpq_indexing_gpu.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 42 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 faiss/gpu/test/CMakeFiles/demo_ivfpq_indexing_gpu.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : faiss/gpu/test/CMakeFiles/demo_ivfpq_indexing_gpu.dir/rule + +# Convenience name for target. +demo_ivfpq_indexing_gpu: faiss/gpu/test/CMakeFiles/demo_ivfpq_indexing_gpu.dir/rule + +.PHONY : demo_ivfpq_indexing_gpu + +# clean rule for target. +faiss/gpu/test/CMakeFiles/demo_ivfpq_indexing_gpu.dir/clean: + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/demo_ivfpq_indexing_gpu.dir/build.make faiss/gpu/test/CMakeFiles/demo_ivfpq_indexing_gpu.dir/clean +.PHONY : faiss/gpu/test/CMakeFiles/demo_ivfpq_indexing_gpu.dir/clean + +#============================================================================= +# Target rules for target faiss/gpu/test/CMakeFiles/TestCodePacking.dir + +# All Build rule for target. +faiss/gpu/test/CMakeFiles/TestCodePacking.dir/all: faiss/CMakeFiles/faiss.dir/all +faiss/gpu/test/CMakeFiles/TestCodePacking.dir/all: _deps/googletest-build/googletest/CMakeFiles/gtest.dir/all +faiss/gpu/test/CMakeFiles/TestCodePacking.dir/all: faiss/gpu/test/CMakeFiles/faiss_gpu_test_helper.dir/all + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/TestCodePacking.dir/build.make faiss/gpu/test/CMakeFiles/TestCodePacking.dir/depend + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/TestCodePacking.dir/build.make faiss/gpu/test/CMakeFiles/TestCodePacking.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num=3 "Built target TestCodePacking" +.PHONY : faiss/gpu/test/CMakeFiles/TestCodePacking.dir/all + +# Build rule for subdir invocation for target. +faiss/gpu/test/CMakeFiles/TestCodePacking.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 42 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 faiss/gpu/test/CMakeFiles/TestCodePacking.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : faiss/gpu/test/CMakeFiles/TestCodePacking.dir/rule + +# Convenience name for target. +TestCodePacking: faiss/gpu/test/CMakeFiles/TestCodePacking.dir/rule + +.PHONY : TestCodePacking + +# clean rule for target. +faiss/gpu/test/CMakeFiles/TestCodePacking.dir/clean: + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/TestCodePacking.dir/build.make faiss/gpu/test/CMakeFiles/TestCodePacking.dir/clean +.PHONY : faiss/gpu/test/CMakeFiles/TestCodePacking.dir/clean + +#============================================================================= +# Target rules for target faiss/gpu/test/CMakeFiles/TestGpuMemoryException.dir + +# All Build rule for target. +faiss/gpu/test/CMakeFiles/TestGpuMemoryException.dir/all: faiss/CMakeFiles/faiss.dir/all +faiss/gpu/test/CMakeFiles/TestGpuMemoryException.dir/all: _deps/googletest-build/googletest/CMakeFiles/gtest.dir/all +faiss/gpu/test/CMakeFiles/TestGpuMemoryException.dir/all: faiss/gpu/test/CMakeFiles/faiss_gpu_test_helper.dir/all + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/TestGpuMemoryException.dir/build.make faiss/gpu/test/CMakeFiles/TestGpuMemoryException.dir/depend + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/TestGpuMemoryException.dir/build.make faiss/gpu/test/CMakeFiles/TestGpuMemoryException.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num=7 "Built target TestGpuMemoryException" +.PHONY : faiss/gpu/test/CMakeFiles/TestGpuMemoryException.dir/all + +# Build rule for subdir invocation for target. +faiss/gpu/test/CMakeFiles/TestGpuMemoryException.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 42 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 faiss/gpu/test/CMakeFiles/TestGpuMemoryException.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : faiss/gpu/test/CMakeFiles/TestGpuMemoryException.dir/rule + +# Convenience name for target. +TestGpuMemoryException: faiss/gpu/test/CMakeFiles/TestGpuMemoryException.dir/rule + +.PHONY : TestGpuMemoryException + +# clean rule for target. +faiss/gpu/test/CMakeFiles/TestGpuMemoryException.dir/clean: + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/TestGpuMemoryException.dir/build.make faiss/gpu/test/CMakeFiles/TestGpuMemoryException.dir/clean +.PHONY : faiss/gpu/test/CMakeFiles/TestGpuMemoryException.dir/clean + +#============================================================================= +# Target rules for target faiss/gpu/test/CMakeFiles/TestGpuIndexFlat.dir + +# All Build rule for target. +faiss/gpu/test/CMakeFiles/TestGpuIndexFlat.dir/all: faiss/CMakeFiles/faiss.dir/all +faiss/gpu/test/CMakeFiles/TestGpuIndexFlat.dir/all: _deps/googletest-build/googletest/CMakeFiles/gtest.dir/all +faiss/gpu/test/CMakeFiles/TestGpuIndexFlat.dir/all: faiss/gpu/test/CMakeFiles/faiss_gpu_test_helper.dir/all + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/TestGpuIndexFlat.dir/build.make faiss/gpu/test/CMakeFiles/TestGpuIndexFlat.dir/depend + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/TestGpuIndexFlat.dir/build.make faiss/gpu/test/CMakeFiles/TestGpuIndexFlat.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num=5 "Built target TestGpuIndexFlat" +.PHONY : faiss/gpu/test/CMakeFiles/TestGpuIndexFlat.dir/all + +# Build rule for subdir invocation for target. +faiss/gpu/test/CMakeFiles/TestGpuIndexFlat.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 42 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 faiss/gpu/test/CMakeFiles/TestGpuIndexFlat.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : faiss/gpu/test/CMakeFiles/TestGpuIndexFlat.dir/rule + +# Convenience name for target. +TestGpuIndexFlat: faiss/gpu/test/CMakeFiles/TestGpuIndexFlat.dir/rule + +.PHONY : TestGpuIndexFlat + +# clean rule for target. +faiss/gpu/test/CMakeFiles/TestGpuIndexFlat.dir/clean: + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/TestGpuIndexFlat.dir/build.make faiss/gpu/test/CMakeFiles/TestGpuIndexFlat.dir/clean +.PHONY : faiss/gpu/test/CMakeFiles/TestGpuIndexFlat.dir/clean + +#============================================================================= +# Target rules for target faiss/gpu/test/CMakeFiles/faiss_gpu_test_helper.dir + +# All Build rule for target. +faiss/gpu/test/CMakeFiles/faiss_gpu_test_helper.dir/all: faiss/CMakeFiles/faiss.dir/all +faiss/gpu/test/CMakeFiles/faiss_gpu_test_helper.dir/all: _deps/googletest-build/googletest/CMakeFiles/gtest.dir/all + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/faiss_gpu_test_helper.dir/build.make faiss/gpu/test/CMakeFiles/faiss_gpu_test_helper.dir/depend + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/faiss_gpu_test_helper.dir/build.make faiss/gpu/test/CMakeFiles/faiss_gpu_test_helper.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num=92 "Built target faiss_gpu_test_helper" +.PHONY : faiss/gpu/test/CMakeFiles/faiss_gpu_test_helper.dir/all + +# Build rule for subdir invocation for target. +faiss/gpu/test/CMakeFiles/faiss_gpu_test_helper.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 41 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 faiss/gpu/test/CMakeFiles/faiss_gpu_test_helper.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : faiss/gpu/test/CMakeFiles/faiss_gpu_test_helper.dir/rule + +# Convenience name for target. +faiss_gpu_test_helper: faiss/gpu/test/CMakeFiles/faiss_gpu_test_helper.dir/rule + +.PHONY : faiss_gpu_test_helper + +# clean rule for target. +faiss/gpu/test/CMakeFiles/faiss_gpu_test_helper.dir/clean: + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/faiss_gpu_test_helper.dir/build.make faiss/gpu/test/CMakeFiles/faiss_gpu_test_helper.dir/clean +.PHONY : faiss/gpu/test/CMakeFiles/faiss_gpu_test_helper.dir/clean + +#============================================================================= +# Target rules for target faiss/gpu/test/CMakeFiles/TestGpuIndexIVFFlat.dir + +# All Build rule for target. +faiss/gpu/test/CMakeFiles/TestGpuIndexIVFFlat.dir/all: faiss/CMakeFiles/faiss.dir/all +faiss/gpu/test/CMakeFiles/TestGpuIndexIVFFlat.dir/all: _deps/googletest-build/googletest/CMakeFiles/gtest.dir/all +faiss/gpu/test/CMakeFiles/TestGpuIndexIVFFlat.dir/all: faiss/gpu/test/CMakeFiles/faiss_gpu_test_helper.dir/all + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/TestGpuIndexIVFFlat.dir/build.make faiss/gpu/test/CMakeFiles/TestGpuIndexIVFFlat.dir/depend + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/TestGpuIndexIVFFlat.dir/build.make faiss/gpu/test/CMakeFiles/TestGpuIndexIVFFlat.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target TestGpuIndexIVFFlat" +.PHONY : faiss/gpu/test/CMakeFiles/TestGpuIndexIVFFlat.dir/all + +# Build rule for subdir invocation for target. +faiss/gpu/test/CMakeFiles/TestGpuIndexIVFFlat.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 41 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 faiss/gpu/test/CMakeFiles/TestGpuIndexIVFFlat.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : faiss/gpu/test/CMakeFiles/TestGpuIndexIVFFlat.dir/rule + +# Convenience name for target. +TestGpuIndexIVFFlat: faiss/gpu/test/CMakeFiles/TestGpuIndexIVFFlat.dir/rule + +.PHONY : TestGpuIndexIVFFlat + +# clean rule for target. +faiss/gpu/test/CMakeFiles/TestGpuIndexIVFFlat.dir/clean: + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/TestGpuIndexIVFFlat.dir/build.make faiss/gpu/test/CMakeFiles/TestGpuIndexIVFFlat.dir/clean +.PHONY : faiss/gpu/test/CMakeFiles/TestGpuIndexIVFFlat.dir/clean + +#============================================================================= +# Target rules for target faiss/gpu/test/CMakeFiles/TestGpuDistance.dir + +# All Build rule for target. +faiss/gpu/test/CMakeFiles/TestGpuDistance.dir/all: faiss/CMakeFiles/faiss.dir/all +faiss/gpu/test/CMakeFiles/TestGpuDistance.dir/all: _deps/googletest-build/googletest/CMakeFiles/gtest.dir/all +faiss/gpu/test/CMakeFiles/TestGpuDistance.dir/all: faiss/gpu/test/CMakeFiles/faiss_gpu_test_helper.dir/all + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/TestGpuDistance.dir/build.make faiss/gpu/test/CMakeFiles/TestGpuDistance.dir/depend + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/TestGpuDistance.dir/build.make faiss/gpu/test/CMakeFiles/TestGpuDistance.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target TestGpuDistance" +.PHONY : faiss/gpu/test/CMakeFiles/TestGpuDistance.dir/all + +# Build rule for subdir invocation for target. +faiss/gpu/test/CMakeFiles/TestGpuDistance.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 41 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 faiss/gpu/test/CMakeFiles/TestGpuDistance.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : faiss/gpu/test/CMakeFiles/TestGpuDistance.dir/rule + +# Convenience name for target. +TestGpuDistance: faiss/gpu/test/CMakeFiles/TestGpuDistance.dir/rule + +.PHONY : TestGpuDistance + +# clean rule for target. +faiss/gpu/test/CMakeFiles/TestGpuDistance.dir/clean: + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/TestGpuDistance.dir/build.make faiss/gpu/test/CMakeFiles/TestGpuDistance.dir/clean +.PHONY : faiss/gpu/test/CMakeFiles/TestGpuDistance.dir/clean + +#============================================================================= +# Target rules for target faiss/gpu/test/CMakeFiles/TestGpuIndexBinaryFlat.dir + +# All Build rule for target. +faiss/gpu/test/CMakeFiles/TestGpuIndexBinaryFlat.dir/all: faiss/CMakeFiles/faiss.dir/all +faiss/gpu/test/CMakeFiles/TestGpuIndexBinaryFlat.dir/all: _deps/googletest-build/googletest/CMakeFiles/gtest.dir/all +faiss/gpu/test/CMakeFiles/TestGpuIndexBinaryFlat.dir/all: faiss/gpu/test/CMakeFiles/faiss_gpu_test_helper.dir/all + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/TestGpuIndexBinaryFlat.dir/build.make faiss/gpu/test/CMakeFiles/TestGpuIndexBinaryFlat.dir/depend + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/TestGpuIndexBinaryFlat.dir/build.make faiss/gpu/test/CMakeFiles/TestGpuIndexBinaryFlat.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num=4 "Built target TestGpuIndexBinaryFlat" +.PHONY : faiss/gpu/test/CMakeFiles/TestGpuIndexBinaryFlat.dir/all + +# Build rule for subdir invocation for target. +faiss/gpu/test/CMakeFiles/TestGpuIndexBinaryFlat.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 42 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 faiss/gpu/test/CMakeFiles/TestGpuIndexBinaryFlat.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : faiss/gpu/test/CMakeFiles/TestGpuIndexBinaryFlat.dir/rule + +# Convenience name for target. +TestGpuIndexBinaryFlat: faiss/gpu/test/CMakeFiles/TestGpuIndexBinaryFlat.dir/rule + +.PHONY : TestGpuIndexBinaryFlat + +# clean rule for target. +faiss/gpu/test/CMakeFiles/TestGpuIndexBinaryFlat.dir/clean: + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/TestGpuIndexBinaryFlat.dir/build.make faiss/gpu/test/CMakeFiles/TestGpuIndexBinaryFlat.dir/clean +.PHONY : faiss/gpu/test/CMakeFiles/TestGpuIndexBinaryFlat.dir/clean + +#============================================================================= +# Target rules for target faiss/gpu/test/CMakeFiles/TestGpuIndexIVFPQ.dir + +# All Build rule for target. +faiss/gpu/test/CMakeFiles/TestGpuIndexIVFPQ.dir/all: faiss/CMakeFiles/faiss.dir/all +faiss/gpu/test/CMakeFiles/TestGpuIndexIVFPQ.dir/all: _deps/googletest-build/googletest/CMakeFiles/gtest.dir/all +faiss/gpu/test/CMakeFiles/TestGpuIndexIVFPQ.dir/all: faiss/gpu/test/CMakeFiles/faiss_gpu_test_helper.dir/all + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/TestGpuIndexIVFPQ.dir/build.make faiss/gpu/test/CMakeFiles/TestGpuIndexIVFPQ.dir/depend + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/TestGpuIndexIVFPQ.dir/build.make faiss/gpu/test/CMakeFiles/TestGpuIndexIVFPQ.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num=6 "Built target TestGpuIndexIVFPQ" +.PHONY : faiss/gpu/test/CMakeFiles/TestGpuIndexIVFPQ.dir/all + +# Build rule for subdir invocation for target. +faiss/gpu/test/CMakeFiles/TestGpuIndexIVFPQ.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 42 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 faiss/gpu/test/CMakeFiles/TestGpuIndexIVFPQ.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : faiss/gpu/test/CMakeFiles/TestGpuIndexIVFPQ.dir/rule + +# Convenience name for target. +TestGpuIndexIVFPQ: faiss/gpu/test/CMakeFiles/TestGpuIndexIVFPQ.dir/rule + +.PHONY : TestGpuIndexIVFPQ + +# clean rule for target. +faiss/gpu/test/CMakeFiles/TestGpuIndexIVFPQ.dir/clean: + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/TestGpuIndexIVFPQ.dir/build.make faiss/gpu/test/CMakeFiles/TestGpuIndexIVFPQ.dir/clean +.PHONY : faiss/gpu/test/CMakeFiles/TestGpuIndexIVFPQ.dir/clean + +#============================================================================= +# Target rules for target faiss/gpu/test/CMakeFiles/TestGpuIndexIVFScalarQuantizer.dir + +# All Build rule for target. +faiss/gpu/test/CMakeFiles/TestGpuIndexIVFScalarQuantizer.dir/all: faiss/CMakeFiles/faiss.dir/all +faiss/gpu/test/CMakeFiles/TestGpuIndexIVFScalarQuantizer.dir/all: _deps/googletest-build/googletest/CMakeFiles/gtest.dir/all +faiss/gpu/test/CMakeFiles/TestGpuIndexIVFScalarQuantizer.dir/all: faiss/gpu/test/CMakeFiles/faiss_gpu_test_helper.dir/all + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/TestGpuIndexIVFScalarQuantizer.dir/build.make faiss/gpu/test/CMakeFiles/TestGpuIndexIVFScalarQuantizer.dir/depend + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/TestGpuIndexIVFScalarQuantizer.dir/build.make faiss/gpu/test/CMakeFiles/TestGpuIndexIVFScalarQuantizer.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target TestGpuIndexIVFScalarQuantizer" +.PHONY : faiss/gpu/test/CMakeFiles/TestGpuIndexIVFScalarQuantizer.dir/all + +# Build rule for subdir invocation for target. +faiss/gpu/test/CMakeFiles/TestGpuIndexIVFScalarQuantizer.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 41 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 faiss/gpu/test/CMakeFiles/TestGpuIndexIVFScalarQuantizer.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : faiss/gpu/test/CMakeFiles/TestGpuIndexIVFScalarQuantizer.dir/rule + +# Convenience name for target. +TestGpuIndexIVFScalarQuantizer: faiss/gpu/test/CMakeFiles/TestGpuIndexIVFScalarQuantizer.dir/rule + +.PHONY : TestGpuIndexIVFScalarQuantizer + +# clean rule for target. +faiss/gpu/test/CMakeFiles/TestGpuIndexIVFScalarQuantizer.dir/clean: + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/TestGpuIndexIVFScalarQuantizer.dir/build.make faiss/gpu/test/CMakeFiles/TestGpuIndexIVFScalarQuantizer.dir/clean +.PHONY : faiss/gpu/test/CMakeFiles/TestGpuIndexIVFScalarQuantizer.dir/clean + +#============================================================================= +# Target rules for target faiss/gpu/test/CMakeFiles/TestGpuSelect.dir + +# All Build rule for target. +faiss/gpu/test/CMakeFiles/TestGpuSelect.dir/all: faiss/CMakeFiles/faiss.dir/all +faiss/gpu/test/CMakeFiles/TestGpuSelect.dir/all: _deps/googletest-build/googletest/CMakeFiles/gtest.dir/all +faiss/gpu/test/CMakeFiles/TestGpuSelect.dir/all: faiss/gpu/test/CMakeFiles/faiss_gpu_test_helper.dir/all + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/TestGpuSelect.dir/build.make faiss/gpu/test/CMakeFiles/TestGpuSelect.dir/depend + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/TestGpuSelect.dir/build.make faiss/gpu/test/CMakeFiles/TestGpuSelect.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num= "Built target TestGpuSelect" +.PHONY : faiss/gpu/test/CMakeFiles/TestGpuSelect.dir/all + +# Build rule for subdir invocation for target. +faiss/gpu/test/CMakeFiles/TestGpuSelect.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 41 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 faiss/gpu/test/CMakeFiles/TestGpuSelect.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : faiss/gpu/test/CMakeFiles/TestGpuSelect.dir/rule + +# Convenience name for target. +TestGpuSelect: faiss/gpu/test/CMakeFiles/TestGpuSelect.dir/rule + +.PHONY : TestGpuSelect + +# clean rule for target. +faiss/gpu/test/CMakeFiles/TestGpuSelect.dir/clean: + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/TestGpuSelect.dir/build.make faiss/gpu/test/CMakeFiles/TestGpuSelect.dir/clean +.PHONY : faiss/gpu/test/CMakeFiles/TestGpuSelect.dir/clean + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/build/CMakeFiles/Nightly.dir/DependInfo.cmake b/build/CMakeFiles/Nightly.dir/DependInfo.cmake new file mode 100644 index 0000000000000000000000000000000000000000..19fab2149bf120962a1699d74b7373348dc4c117 --- /dev/null +++ b/build/CMakeFiles/Nightly.dir/DependInfo.cmake @@ -0,0 +1,11 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) +# The set of files for implicit dependencies of each language: + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/CMakeFiles/Nightly.dir/build.make b/build/CMakeFiles/Nightly.dir/build.make new file mode 100644 index 0000000000000000000000000000000000000000..a694a3084489e89cc3a1f670125746042391c117 --- /dev/null +++ b/build/CMakeFiles/Nightly.dir/build.make @@ -0,0 +1,96 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake3 + +# The command to remove a file. +RM = /usr/bin/cmake3 -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/huchen/FAISS/faiss + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/huchen/FAISS/faiss/build + +# Utility rule file for Nightly. + +# Include the progress variables for this target. +include CMakeFiles/Nightly.dir/progress.make + +CMakeFiles/Nightly: + /usr/bin/ctest3 -D Nightly + +Nightly: CMakeFiles/Nightly +Nightly: CMakeFiles/Nightly.dir/build.make + +.PHONY : Nightly + +# Rule to build all files generated by this target. +CMakeFiles/Nightly.dir/build: Nightly + +.PHONY : CMakeFiles/Nightly.dir/build + +CMakeFiles/Nightly.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/Nightly.dir/cmake_clean.cmake +.PHONY : CMakeFiles/Nightly.dir/clean + +CMakeFiles/Nightly.dir/depend: + cd /home/huchen/FAISS/faiss/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build/CMakeFiles/Nightly.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/Nightly.dir/depend + diff --git a/build/CMakeFiles/Nightly.dir/cmake_clean.cmake b/build/CMakeFiles/Nightly.dir/cmake_clean.cmake new file mode 100644 index 0000000000000000000000000000000000000000..99a4ac149fbc87eaff43f33138bf97d980167986 --- /dev/null +++ b/build/CMakeFiles/Nightly.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/Nightly" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/Nightly.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/CMakeFiles/Nightly.dir/progress.make b/build/CMakeFiles/Nightly.dir/progress.make new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/build/CMakeFiles/Nightly.dir/progress.make @@ -0,0 +1 @@ + diff --git a/build/CMakeFiles/NightlyBuild.dir/DependInfo.cmake b/build/CMakeFiles/NightlyBuild.dir/DependInfo.cmake new file mode 100644 index 0000000000000000000000000000000000000000..19fab2149bf120962a1699d74b7373348dc4c117 --- /dev/null +++ b/build/CMakeFiles/NightlyBuild.dir/DependInfo.cmake @@ -0,0 +1,11 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) +# The set of files for implicit dependencies of each language: + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/CMakeFiles/NightlyBuild.dir/build.make b/build/CMakeFiles/NightlyBuild.dir/build.make new file mode 100644 index 0000000000000000000000000000000000000000..324c2c82f2ac1f1420a5c3314b0fe705ee6c8419 --- /dev/null +++ b/build/CMakeFiles/NightlyBuild.dir/build.make @@ -0,0 +1,96 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake3 + +# The command to remove a file. +RM = /usr/bin/cmake3 -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/huchen/FAISS/faiss + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/huchen/FAISS/faiss/build + +# Utility rule file for NightlyBuild. + +# Include the progress variables for this target. +include CMakeFiles/NightlyBuild.dir/progress.make + +CMakeFiles/NightlyBuild: + /usr/bin/ctest3 -D NightlyBuild + +NightlyBuild: CMakeFiles/NightlyBuild +NightlyBuild: CMakeFiles/NightlyBuild.dir/build.make + +.PHONY : NightlyBuild + +# Rule to build all files generated by this target. +CMakeFiles/NightlyBuild.dir/build: NightlyBuild + +.PHONY : CMakeFiles/NightlyBuild.dir/build + +CMakeFiles/NightlyBuild.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/NightlyBuild.dir/cmake_clean.cmake +.PHONY : CMakeFiles/NightlyBuild.dir/clean + +CMakeFiles/NightlyBuild.dir/depend: + cd /home/huchen/FAISS/faiss/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build/CMakeFiles/NightlyBuild.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/NightlyBuild.dir/depend + diff --git a/build/CMakeFiles/NightlyBuild.dir/cmake_clean.cmake b/build/CMakeFiles/NightlyBuild.dir/cmake_clean.cmake new file mode 100644 index 0000000000000000000000000000000000000000..7aa38a7847f108b629144b324ece47f81eb950dd --- /dev/null +++ b/build/CMakeFiles/NightlyBuild.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/NightlyBuild" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/NightlyBuild.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/CMakeFiles/NightlyBuild.dir/progress.make b/build/CMakeFiles/NightlyBuild.dir/progress.make new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/build/CMakeFiles/NightlyBuild.dir/progress.make @@ -0,0 +1 @@ + diff --git a/build/CMakeFiles/NightlyConfigure.dir/DependInfo.cmake b/build/CMakeFiles/NightlyConfigure.dir/DependInfo.cmake new file mode 100644 index 0000000000000000000000000000000000000000..19fab2149bf120962a1699d74b7373348dc4c117 --- /dev/null +++ b/build/CMakeFiles/NightlyConfigure.dir/DependInfo.cmake @@ -0,0 +1,11 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) +# The set of files for implicit dependencies of each language: + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/CMakeFiles/NightlyConfigure.dir/build.make b/build/CMakeFiles/NightlyConfigure.dir/build.make new file mode 100644 index 0000000000000000000000000000000000000000..d93673e0bb1256011b5bebda01e11c3554fb81e3 --- /dev/null +++ b/build/CMakeFiles/NightlyConfigure.dir/build.make @@ -0,0 +1,96 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake3 + +# The command to remove a file. +RM = /usr/bin/cmake3 -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/huchen/FAISS/faiss + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/huchen/FAISS/faiss/build + +# Utility rule file for NightlyConfigure. + +# Include the progress variables for this target. +include CMakeFiles/NightlyConfigure.dir/progress.make + +CMakeFiles/NightlyConfigure: + /usr/bin/ctest3 -D NightlyConfigure + +NightlyConfigure: CMakeFiles/NightlyConfigure +NightlyConfigure: CMakeFiles/NightlyConfigure.dir/build.make + +.PHONY : NightlyConfigure + +# Rule to build all files generated by this target. +CMakeFiles/NightlyConfigure.dir/build: NightlyConfigure + +.PHONY : CMakeFiles/NightlyConfigure.dir/build + +CMakeFiles/NightlyConfigure.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/NightlyConfigure.dir/cmake_clean.cmake +.PHONY : CMakeFiles/NightlyConfigure.dir/clean + +CMakeFiles/NightlyConfigure.dir/depend: + cd /home/huchen/FAISS/faiss/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build/CMakeFiles/NightlyConfigure.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/NightlyConfigure.dir/depend + diff --git a/build/CMakeFiles/NightlyConfigure.dir/cmake_clean.cmake b/build/CMakeFiles/NightlyConfigure.dir/cmake_clean.cmake new file mode 100644 index 0000000000000000000000000000000000000000..080c729b98b5ed38cc09b968dcc69760292f7d1a --- /dev/null +++ b/build/CMakeFiles/NightlyConfigure.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/NightlyConfigure" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/NightlyConfigure.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/CMakeFiles/NightlyConfigure.dir/progress.make b/build/CMakeFiles/NightlyConfigure.dir/progress.make new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/build/CMakeFiles/NightlyConfigure.dir/progress.make @@ -0,0 +1 @@ + diff --git a/build/CMakeFiles/NightlyCoverage.dir/DependInfo.cmake b/build/CMakeFiles/NightlyCoverage.dir/DependInfo.cmake new file mode 100644 index 0000000000000000000000000000000000000000..19fab2149bf120962a1699d74b7373348dc4c117 --- /dev/null +++ b/build/CMakeFiles/NightlyCoverage.dir/DependInfo.cmake @@ -0,0 +1,11 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) +# The set of files for implicit dependencies of each language: + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/CMakeFiles/NightlyCoverage.dir/build.make b/build/CMakeFiles/NightlyCoverage.dir/build.make new file mode 100644 index 0000000000000000000000000000000000000000..fd128e3c24f12cf954cd9f2b06b6ff36d76a9099 --- /dev/null +++ b/build/CMakeFiles/NightlyCoverage.dir/build.make @@ -0,0 +1,96 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake3 + +# The command to remove a file. +RM = /usr/bin/cmake3 -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/huchen/FAISS/faiss + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/huchen/FAISS/faiss/build + +# Utility rule file for NightlyCoverage. + +# Include the progress variables for this target. +include CMakeFiles/NightlyCoverage.dir/progress.make + +CMakeFiles/NightlyCoverage: + /usr/bin/ctest3 -D NightlyCoverage + +NightlyCoverage: CMakeFiles/NightlyCoverage +NightlyCoverage: CMakeFiles/NightlyCoverage.dir/build.make + +.PHONY : NightlyCoverage + +# Rule to build all files generated by this target. +CMakeFiles/NightlyCoverage.dir/build: NightlyCoverage + +.PHONY : CMakeFiles/NightlyCoverage.dir/build + +CMakeFiles/NightlyCoverage.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/NightlyCoverage.dir/cmake_clean.cmake +.PHONY : CMakeFiles/NightlyCoverage.dir/clean + +CMakeFiles/NightlyCoverage.dir/depend: + cd /home/huchen/FAISS/faiss/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build/CMakeFiles/NightlyCoverage.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/NightlyCoverage.dir/depend + diff --git a/build/CMakeFiles/NightlyCoverage.dir/cmake_clean.cmake b/build/CMakeFiles/NightlyCoverage.dir/cmake_clean.cmake new file mode 100644 index 0000000000000000000000000000000000000000..d6cba89b076ae520aa072d721e25a138891aa1a2 --- /dev/null +++ b/build/CMakeFiles/NightlyCoverage.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/NightlyCoverage" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/NightlyCoverage.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/CMakeFiles/NightlyCoverage.dir/progress.make b/build/CMakeFiles/NightlyCoverage.dir/progress.make new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/build/CMakeFiles/NightlyCoverage.dir/progress.make @@ -0,0 +1 @@ + diff --git a/build/CMakeFiles/NightlyMemCheck.dir/DependInfo.cmake b/build/CMakeFiles/NightlyMemCheck.dir/DependInfo.cmake new file mode 100644 index 0000000000000000000000000000000000000000..19fab2149bf120962a1699d74b7373348dc4c117 --- /dev/null +++ b/build/CMakeFiles/NightlyMemCheck.dir/DependInfo.cmake @@ -0,0 +1,11 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) +# The set of files for implicit dependencies of each language: + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/CMakeFiles/NightlyMemCheck.dir/build.make b/build/CMakeFiles/NightlyMemCheck.dir/build.make new file mode 100644 index 0000000000000000000000000000000000000000..fcf6605a0e22c6f580f0c6486c8b08b4675db17e --- /dev/null +++ b/build/CMakeFiles/NightlyMemCheck.dir/build.make @@ -0,0 +1,96 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake3 + +# The command to remove a file. +RM = /usr/bin/cmake3 -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/huchen/FAISS/faiss + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/huchen/FAISS/faiss/build + +# Utility rule file for NightlyMemCheck. + +# Include the progress variables for this target. +include CMakeFiles/NightlyMemCheck.dir/progress.make + +CMakeFiles/NightlyMemCheck: + /usr/bin/ctest3 -D NightlyMemCheck + +NightlyMemCheck: CMakeFiles/NightlyMemCheck +NightlyMemCheck: CMakeFiles/NightlyMemCheck.dir/build.make + +.PHONY : NightlyMemCheck + +# Rule to build all files generated by this target. +CMakeFiles/NightlyMemCheck.dir/build: NightlyMemCheck + +.PHONY : CMakeFiles/NightlyMemCheck.dir/build + +CMakeFiles/NightlyMemCheck.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/NightlyMemCheck.dir/cmake_clean.cmake +.PHONY : CMakeFiles/NightlyMemCheck.dir/clean + +CMakeFiles/NightlyMemCheck.dir/depend: + cd /home/huchen/FAISS/faiss/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build/CMakeFiles/NightlyMemCheck.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/NightlyMemCheck.dir/depend + diff --git a/build/CMakeFiles/NightlyMemCheck.dir/cmake_clean.cmake b/build/CMakeFiles/NightlyMemCheck.dir/cmake_clean.cmake new file mode 100644 index 0000000000000000000000000000000000000000..3c0e881a0a6d8cc082fa0ae04d307c72a3f5dd9b --- /dev/null +++ b/build/CMakeFiles/NightlyMemCheck.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/NightlyMemCheck" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/NightlyMemCheck.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/CMakeFiles/NightlyMemCheck.dir/progress.make b/build/CMakeFiles/NightlyMemCheck.dir/progress.make new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/build/CMakeFiles/NightlyMemCheck.dir/progress.make @@ -0,0 +1 @@ + diff --git a/build/CMakeFiles/NightlyMemoryCheck.dir/DependInfo.cmake b/build/CMakeFiles/NightlyMemoryCheck.dir/DependInfo.cmake new file mode 100644 index 0000000000000000000000000000000000000000..19fab2149bf120962a1699d74b7373348dc4c117 --- /dev/null +++ b/build/CMakeFiles/NightlyMemoryCheck.dir/DependInfo.cmake @@ -0,0 +1,11 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) +# The set of files for implicit dependencies of each language: + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/CMakeFiles/NightlyMemoryCheck.dir/build.make b/build/CMakeFiles/NightlyMemoryCheck.dir/build.make new file mode 100644 index 0000000000000000000000000000000000000000..40cc8872d918e9cb4765c2950ac7dd37c1110ae4 --- /dev/null +++ b/build/CMakeFiles/NightlyMemoryCheck.dir/build.make @@ -0,0 +1,96 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake3 + +# The command to remove a file. +RM = /usr/bin/cmake3 -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/huchen/FAISS/faiss + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/huchen/FAISS/faiss/build + +# Utility rule file for NightlyMemoryCheck. + +# Include the progress variables for this target. +include CMakeFiles/NightlyMemoryCheck.dir/progress.make + +CMakeFiles/NightlyMemoryCheck: + /usr/bin/ctest3 -D NightlyMemoryCheck + +NightlyMemoryCheck: CMakeFiles/NightlyMemoryCheck +NightlyMemoryCheck: CMakeFiles/NightlyMemoryCheck.dir/build.make + +.PHONY : NightlyMemoryCheck + +# Rule to build all files generated by this target. +CMakeFiles/NightlyMemoryCheck.dir/build: NightlyMemoryCheck + +.PHONY : CMakeFiles/NightlyMemoryCheck.dir/build + +CMakeFiles/NightlyMemoryCheck.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/NightlyMemoryCheck.dir/cmake_clean.cmake +.PHONY : CMakeFiles/NightlyMemoryCheck.dir/clean + +CMakeFiles/NightlyMemoryCheck.dir/depend: + cd /home/huchen/FAISS/faiss/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build/CMakeFiles/NightlyMemoryCheck.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/NightlyMemoryCheck.dir/depend + diff --git a/build/CMakeFiles/NightlyMemoryCheck.dir/cmake_clean.cmake b/build/CMakeFiles/NightlyMemoryCheck.dir/cmake_clean.cmake new file mode 100644 index 0000000000000000000000000000000000000000..884661158ff4d39174862beefa390daa8d12f1f0 --- /dev/null +++ b/build/CMakeFiles/NightlyMemoryCheck.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/NightlyMemoryCheck" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/NightlyMemoryCheck.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/CMakeFiles/NightlyMemoryCheck.dir/progress.make b/build/CMakeFiles/NightlyMemoryCheck.dir/progress.make new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/build/CMakeFiles/NightlyMemoryCheck.dir/progress.make @@ -0,0 +1 @@ + diff --git a/build/CMakeFiles/NightlyStart.dir/DependInfo.cmake b/build/CMakeFiles/NightlyStart.dir/DependInfo.cmake new file mode 100644 index 0000000000000000000000000000000000000000..19fab2149bf120962a1699d74b7373348dc4c117 --- /dev/null +++ b/build/CMakeFiles/NightlyStart.dir/DependInfo.cmake @@ -0,0 +1,11 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) +# The set of files for implicit dependencies of each language: + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/CMakeFiles/NightlyStart.dir/build.make b/build/CMakeFiles/NightlyStart.dir/build.make new file mode 100644 index 0000000000000000000000000000000000000000..01ac2b3a940b3670777ace8a2fdfd3f9c0fe16be --- /dev/null +++ b/build/CMakeFiles/NightlyStart.dir/build.make @@ -0,0 +1,96 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake3 + +# The command to remove a file. +RM = /usr/bin/cmake3 -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/huchen/FAISS/faiss + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/huchen/FAISS/faiss/build + +# Utility rule file for NightlyStart. + +# Include the progress variables for this target. +include CMakeFiles/NightlyStart.dir/progress.make + +CMakeFiles/NightlyStart: + /usr/bin/ctest3 -D NightlyStart + +NightlyStart: CMakeFiles/NightlyStart +NightlyStart: CMakeFiles/NightlyStart.dir/build.make + +.PHONY : NightlyStart + +# Rule to build all files generated by this target. +CMakeFiles/NightlyStart.dir/build: NightlyStart + +.PHONY : CMakeFiles/NightlyStart.dir/build + +CMakeFiles/NightlyStart.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/NightlyStart.dir/cmake_clean.cmake +.PHONY : CMakeFiles/NightlyStart.dir/clean + +CMakeFiles/NightlyStart.dir/depend: + cd /home/huchen/FAISS/faiss/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build/CMakeFiles/NightlyStart.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/NightlyStart.dir/depend + diff --git a/build/CMakeFiles/NightlyStart.dir/cmake_clean.cmake b/build/CMakeFiles/NightlyStart.dir/cmake_clean.cmake new file mode 100644 index 0000000000000000000000000000000000000000..6a2c6c6f434243a9d9d1ba9f5ee1aaa9815e8580 --- /dev/null +++ b/build/CMakeFiles/NightlyStart.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/NightlyStart" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/NightlyStart.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/CMakeFiles/NightlyStart.dir/progress.make b/build/CMakeFiles/NightlyStart.dir/progress.make new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/build/CMakeFiles/NightlyStart.dir/progress.make @@ -0,0 +1 @@ + diff --git a/build/CMakeFiles/NightlySubmit.dir/DependInfo.cmake b/build/CMakeFiles/NightlySubmit.dir/DependInfo.cmake new file mode 100644 index 0000000000000000000000000000000000000000..19fab2149bf120962a1699d74b7373348dc4c117 --- /dev/null +++ b/build/CMakeFiles/NightlySubmit.dir/DependInfo.cmake @@ -0,0 +1,11 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) +# The set of files for implicit dependencies of each language: + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/CMakeFiles/NightlySubmit.dir/build.make b/build/CMakeFiles/NightlySubmit.dir/build.make new file mode 100644 index 0000000000000000000000000000000000000000..5a6a4f3ad57068b679fcf8d5b6b6787da01ec67f --- /dev/null +++ b/build/CMakeFiles/NightlySubmit.dir/build.make @@ -0,0 +1,96 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake3 + +# The command to remove a file. +RM = /usr/bin/cmake3 -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/huchen/FAISS/faiss + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/huchen/FAISS/faiss/build + +# Utility rule file for NightlySubmit. + +# Include the progress variables for this target. +include CMakeFiles/NightlySubmit.dir/progress.make + +CMakeFiles/NightlySubmit: + /usr/bin/ctest3 -D NightlySubmit + +NightlySubmit: CMakeFiles/NightlySubmit +NightlySubmit: CMakeFiles/NightlySubmit.dir/build.make + +.PHONY : NightlySubmit + +# Rule to build all files generated by this target. +CMakeFiles/NightlySubmit.dir/build: NightlySubmit + +.PHONY : CMakeFiles/NightlySubmit.dir/build + +CMakeFiles/NightlySubmit.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/NightlySubmit.dir/cmake_clean.cmake +.PHONY : CMakeFiles/NightlySubmit.dir/clean + +CMakeFiles/NightlySubmit.dir/depend: + cd /home/huchen/FAISS/faiss/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build/CMakeFiles/NightlySubmit.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/NightlySubmit.dir/depend + diff --git a/build/CMakeFiles/NightlySubmit.dir/cmake_clean.cmake b/build/CMakeFiles/NightlySubmit.dir/cmake_clean.cmake new file mode 100644 index 0000000000000000000000000000000000000000..6f88ccc7daf558e237b04461ff25efd51a26e3e7 --- /dev/null +++ b/build/CMakeFiles/NightlySubmit.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/NightlySubmit" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/NightlySubmit.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/CMakeFiles/NightlySubmit.dir/progress.make b/build/CMakeFiles/NightlySubmit.dir/progress.make new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/build/CMakeFiles/NightlySubmit.dir/progress.make @@ -0,0 +1 @@ + diff --git a/build/CMakeFiles/NightlyTest.dir/DependInfo.cmake b/build/CMakeFiles/NightlyTest.dir/DependInfo.cmake new file mode 100644 index 0000000000000000000000000000000000000000..19fab2149bf120962a1699d74b7373348dc4c117 --- /dev/null +++ b/build/CMakeFiles/NightlyTest.dir/DependInfo.cmake @@ -0,0 +1,11 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) +# The set of files for implicit dependencies of each language: + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/CMakeFiles/NightlyTest.dir/build.make b/build/CMakeFiles/NightlyTest.dir/build.make new file mode 100644 index 0000000000000000000000000000000000000000..67156716e748bec7db047f33ad20658adeaf503b --- /dev/null +++ b/build/CMakeFiles/NightlyTest.dir/build.make @@ -0,0 +1,96 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake3 + +# The command to remove a file. +RM = /usr/bin/cmake3 -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/huchen/FAISS/faiss + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/huchen/FAISS/faiss/build + +# Utility rule file for NightlyTest. + +# Include the progress variables for this target. +include CMakeFiles/NightlyTest.dir/progress.make + +CMakeFiles/NightlyTest: + /usr/bin/ctest3 -D NightlyTest + +NightlyTest: CMakeFiles/NightlyTest +NightlyTest: CMakeFiles/NightlyTest.dir/build.make + +.PHONY : NightlyTest + +# Rule to build all files generated by this target. +CMakeFiles/NightlyTest.dir/build: NightlyTest + +.PHONY : CMakeFiles/NightlyTest.dir/build + +CMakeFiles/NightlyTest.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/NightlyTest.dir/cmake_clean.cmake +.PHONY : CMakeFiles/NightlyTest.dir/clean + +CMakeFiles/NightlyTest.dir/depend: + cd /home/huchen/FAISS/faiss/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build/CMakeFiles/NightlyTest.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/NightlyTest.dir/depend + diff --git a/build/CMakeFiles/NightlyTest.dir/cmake_clean.cmake b/build/CMakeFiles/NightlyTest.dir/cmake_clean.cmake new file mode 100644 index 0000000000000000000000000000000000000000..8f40bb87e4eaa3647e5882d961cd2e3063d371c4 --- /dev/null +++ b/build/CMakeFiles/NightlyTest.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/NightlyTest" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/NightlyTest.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/CMakeFiles/NightlyTest.dir/progress.make b/build/CMakeFiles/NightlyTest.dir/progress.make new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/build/CMakeFiles/NightlyTest.dir/progress.make @@ -0,0 +1 @@ + diff --git a/build/CMakeFiles/NightlyUpdate.dir/DependInfo.cmake b/build/CMakeFiles/NightlyUpdate.dir/DependInfo.cmake new file mode 100644 index 0000000000000000000000000000000000000000..19fab2149bf120962a1699d74b7373348dc4c117 --- /dev/null +++ b/build/CMakeFiles/NightlyUpdate.dir/DependInfo.cmake @@ -0,0 +1,11 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) +# The set of files for implicit dependencies of each language: + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/CMakeFiles/NightlyUpdate.dir/build.make b/build/CMakeFiles/NightlyUpdate.dir/build.make new file mode 100644 index 0000000000000000000000000000000000000000..89c45c2b6556e1f29bb3912cc9dfc9f1a49a01f7 --- /dev/null +++ b/build/CMakeFiles/NightlyUpdate.dir/build.make @@ -0,0 +1,96 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake3 + +# The command to remove a file. +RM = /usr/bin/cmake3 -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/huchen/FAISS/faiss + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/huchen/FAISS/faiss/build + +# Utility rule file for NightlyUpdate. + +# Include the progress variables for this target. +include CMakeFiles/NightlyUpdate.dir/progress.make + +CMakeFiles/NightlyUpdate: + /usr/bin/ctest3 -D NightlyUpdate + +NightlyUpdate: CMakeFiles/NightlyUpdate +NightlyUpdate: CMakeFiles/NightlyUpdate.dir/build.make + +.PHONY : NightlyUpdate + +# Rule to build all files generated by this target. +CMakeFiles/NightlyUpdate.dir/build: NightlyUpdate + +.PHONY : CMakeFiles/NightlyUpdate.dir/build + +CMakeFiles/NightlyUpdate.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/NightlyUpdate.dir/cmake_clean.cmake +.PHONY : CMakeFiles/NightlyUpdate.dir/clean + +CMakeFiles/NightlyUpdate.dir/depend: + cd /home/huchen/FAISS/faiss/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build/CMakeFiles/NightlyUpdate.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/NightlyUpdate.dir/depend + diff --git a/build/CMakeFiles/NightlyUpdate.dir/cmake_clean.cmake b/build/CMakeFiles/NightlyUpdate.dir/cmake_clean.cmake new file mode 100644 index 0000000000000000000000000000000000000000..0f10e8272faa906d248095765c50439ec8a711f7 --- /dev/null +++ b/build/CMakeFiles/NightlyUpdate.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/NightlyUpdate" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/NightlyUpdate.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/CMakeFiles/NightlyUpdate.dir/progress.make b/build/CMakeFiles/NightlyUpdate.dir/progress.make new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/build/CMakeFiles/NightlyUpdate.dir/progress.make @@ -0,0 +1 @@ + diff --git a/build/CMakeFiles/TargetDirectories.txt b/build/CMakeFiles/TargetDirectories.txt new file mode 100644 index 0000000000000000000000000000000000000000..ac430bf6032cfe6f37311ca4dddf651a8d408c38 --- /dev/null +++ b/build/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,130 @@ +/home/huchen/FAISS/faiss/build/CMakeFiles/install/strip.dir +/home/huchen/FAISS/faiss/build/CMakeFiles/install.dir +/home/huchen/FAISS/faiss/build/CMakeFiles/list_install_components.dir +/home/huchen/FAISS/faiss/build/CMakeFiles/rebuild_cache.dir +/home/huchen/FAISS/faiss/build/CMakeFiles/edit_cache.dir +/home/huchen/FAISS/faiss/build/CMakeFiles/ContinuousSubmit.dir +/home/huchen/FAISS/faiss/build/CMakeFiles/ContinuousCoverage.dir +/home/huchen/FAISS/faiss/build/CMakeFiles/ContinuousTest.dir +/home/huchen/FAISS/faiss/build/CMakeFiles/ContinuousBuild.dir +/home/huchen/FAISS/faiss/build/CMakeFiles/ContinuousMemCheck.dir +/home/huchen/FAISS/faiss/build/CMakeFiles/Nightly.dir +/home/huchen/FAISS/faiss/build/CMakeFiles/NightlyTest.dir +/home/huchen/FAISS/faiss/build/CMakeFiles/NightlyUpdate.dir +/home/huchen/FAISS/faiss/build/CMakeFiles/NightlyBuild.dir +/home/huchen/FAISS/faiss/build/CMakeFiles/install/local.dir +/home/huchen/FAISS/faiss/build/CMakeFiles/Continuous.dir +/home/huchen/FAISS/faiss/build/CMakeFiles/NightlyStart.dir +/home/huchen/FAISS/faiss/build/CMakeFiles/NightlyMemoryCheck.dir +/home/huchen/FAISS/faiss/build/CMakeFiles/NightlyMemCheck.dir +/home/huchen/FAISS/faiss/build/CMakeFiles/ExperimentalStart.dir +/home/huchen/FAISS/faiss/build/CMakeFiles/ContinuousConfigure.dir +/home/huchen/FAISS/faiss/build/CMakeFiles/NightlyCoverage.dir +/home/huchen/FAISS/faiss/build/CMakeFiles/ExperimentalUpdate.dir +/home/huchen/FAISS/faiss/build/CMakeFiles/test.dir +/home/huchen/FAISS/faiss/build/CMakeFiles/ExperimentalConfigure.dir +/home/huchen/FAISS/faiss/build/CMakeFiles/ExperimentalCoverage.dir +/home/huchen/FAISS/faiss/build/CMakeFiles/ExperimentalBuild.dir +/home/huchen/FAISS/faiss/build/CMakeFiles/NightlyConfigure.dir +/home/huchen/FAISS/faiss/build/CMakeFiles/ExperimentalTest.dir +/home/huchen/FAISS/faiss/build/CMakeFiles/ExperimentalMemCheck.dir +/home/huchen/FAISS/faiss/build/CMakeFiles/Experimental.dir +/home/huchen/FAISS/faiss/build/CMakeFiles/NightlySubmit.dir +/home/huchen/FAISS/faiss/build/CMakeFiles/ExperimentalSubmit.dir +/home/huchen/FAISS/faiss/build/CMakeFiles/ContinuousStart.dir +/home/huchen/FAISS/faiss/build/CMakeFiles/ContinuousUpdate.dir +/home/huchen/FAISS/faiss/build/faiss/CMakeFiles/install.dir +/home/huchen/FAISS/faiss/build/faiss/CMakeFiles/list_install_components.dir +/home/huchen/FAISS/faiss/build/faiss/CMakeFiles/rebuild_cache.dir +/home/huchen/FAISS/faiss/build/faiss/CMakeFiles/edit_cache.dir +/home/huchen/FAISS/faiss/build/faiss/CMakeFiles/test.dir +/home/huchen/FAISS/faiss/build/faiss/CMakeFiles/faiss_avx2.dir +/home/huchen/FAISS/faiss/build/faiss/CMakeFiles/install/strip.dir +/home/huchen/FAISS/faiss/build/faiss/CMakeFiles/install/local.dir +/home/huchen/FAISS/faiss/build/faiss/CMakeFiles/faiss.dir +/home/huchen/FAISS/faiss/build/faiss/gpu/CMakeFiles/install/strip.dir +/home/huchen/FAISS/faiss/build/faiss/gpu/CMakeFiles/install/local.dir +/home/huchen/FAISS/faiss/build/faiss/gpu/CMakeFiles/install.dir +/home/huchen/FAISS/faiss/build/faiss/gpu/CMakeFiles/list_install_components.dir +/home/huchen/FAISS/faiss/build/faiss/gpu/CMakeFiles/rebuild_cache.dir +/home/huchen/FAISS/faiss/build/faiss/gpu/CMakeFiles/edit_cache.dir +/home/huchen/FAISS/faiss/build/faiss/gpu/CMakeFiles/test.dir +/home/huchen/FAISS/faiss/build/faiss/python/CMakeFiles/install/local.dir +/home/huchen/FAISS/faiss/build/faiss/python/CMakeFiles/swigfaiss.dir +/home/huchen/FAISS/faiss/build/faiss/python/CMakeFiles/swigfaiss_avx2_swig_compilation.dir +/home/huchen/FAISS/faiss/build/faiss/python/CMakeFiles/test.dir +/home/huchen/FAISS/faiss/build/faiss/python/CMakeFiles/swigfaiss_swig_compilation.dir +/home/huchen/FAISS/faiss/build/faiss/python/CMakeFiles/swigfaiss_avx2.dir +/home/huchen/FAISS/faiss/build/faiss/python/CMakeFiles/faiss_python_callbacks.dir +/home/huchen/FAISS/faiss/build/faiss/python/CMakeFiles/edit_cache.dir +/home/huchen/FAISS/faiss/build/faiss/python/CMakeFiles/rebuild_cache.dir +/home/huchen/FAISS/faiss/build/faiss/python/CMakeFiles/install/strip.dir +/home/huchen/FAISS/faiss/build/faiss/python/CMakeFiles/list_install_components.dir +/home/huchen/FAISS/faiss/build/faiss/python/CMakeFiles/install.dir +/home/huchen/FAISS/faiss/build/demos/CMakeFiles/install/local.dir +/home/huchen/FAISS/faiss/build/demos/CMakeFiles/install.dir +/home/huchen/FAISS/faiss/build/demos/CMakeFiles/demo_imi_flat.dir +/home/huchen/FAISS/faiss/build/demos/CMakeFiles/demo_imi_pq.dir +/home/huchen/FAISS/faiss/build/demos/CMakeFiles/demo_ivfpq_indexing.dir +/home/huchen/FAISS/faiss/build/demos/CMakeFiles/edit_cache.dir +/home/huchen/FAISS/faiss/build/demos/CMakeFiles/demo_nndescent.dir +/home/huchen/FAISS/faiss/build/demos/CMakeFiles/demo_weighted_kmeans.dir +/home/huchen/FAISS/faiss/build/demos/CMakeFiles/rebuild_cache.dir +/home/huchen/FAISS/faiss/build/demos/CMakeFiles/demo_sift1M.dir +/home/huchen/FAISS/faiss/build/demos/CMakeFiles/install/strip.dir +/home/huchen/FAISS/faiss/build/demos/CMakeFiles/list_install_components.dir +/home/huchen/FAISS/faiss/build/demos/CMakeFiles/test.dir +/home/huchen/FAISS/faiss/build/tutorial/cpp/CMakeFiles/install/local.dir +/home/huchen/FAISS/faiss/build/tutorial/cpp/CMakeFiles/1-Flat.dir +/home/huchen/FAISS/faiss/build/tutorial/cpp/CMakeFiles/rebuild_cache.dir +/home/huchen/FAISS/faiss/build/tutorial/cpp/CMakeFiles/5-Multiple-GPUs.dir +/home/huchen/FAISS/faiss/build/tutorial/cpp/CMakeFiles/2-IVFFlat.dir +/home/huchen/FAISS/faiss/build/tutorial/cpp/CMakeFiles/3-IVFPQ.dir +/home/huchen/FAISS/faiss/build/tutorial/cpp/CMakeFiles/install/strip.dir +/home/huchen/FAISS/faiss/build/tutorial/cpp/CMakeFiles/list_install_components.dir +/home/huchen/FAISS/faiss/build/tutorial/cpp/CMakeFiles/install.dir +/home/huchen/FAISS/faiss/build/tutorial/cpp/CMakeFiles/4-GPU.dir +/home/huchen/FAISS/faiss/build/tutorial/cpp/CMakeFiles/edit_cache.dir +/home/huchen/FAISS/faiss/build/tutorial/cpp/CMakeFiles/test.dir +/home/huchen/FAISS/faiss/build/tests/CMakeFiles/install/strip.dir +/home/huchen/FAISS/faiss/build/tests/CMakeFiles/install/local.dir +/home/huchen/FAISS/faiss/build/tests/CMakeFiles/install.dir +/home/huchen/FAISS/faiss/build/tests/CMakeFiles/list_install_components.dir +/home/huchen/FAISS/faiss/build/tests/CMakeFiles/rebuild_cache.dir +/home/huchen/FAISS/faiss/build/tests/CMakeFiles/edit_cache.dir +/home/huchen/FAISS/faiss/build/tests/CMakeFiles/test.dir +/home/huchen/FAISS/faiss/build/tests/CMakeFiles/faiss_test.dir +/home/huchen/FAISS/faiss/build/_deps/googletest-build/CMakeFiles/install/strip.dir +/home/huchen/FAISS/faiss/build/_deps/googletest-build/CMakeFiles/install/local.dir +/home/huchen/FAISS/faiss/build/_deps/googletest-build/CMakeFiles/install.dir +/home/huchen/FAISS/faiss/build/_deps/googletest-build/CMakeFiles/list_install_components.dir +/home/huchen/FAISS/faiss/build/_deps/googletest-build/CMakeFiles/rebuild_cache.dir +/home/huchen/FAISS/faiss/build/_deps/googletest-build/CMakeFiles/edit_cache.dir +/home/huchen/FAISS/faiss/build/_deps/googletest-build/CMakeFiles/test.dir +/home/huchen/FAISS/faiss/build/_deps/googletest-build/googletest/CMakeFiles/install/strip.dir +/home/huchen/FAISS/faiss/build/_deps/googletest-build/googletest/CMakeFiles/install/local.dir +/home/huchen/FAISS/faiss/build/_deps/googletest-build/googletest/CMakeFiles/install.dir +/home/huchen/FAISS/faiss/build/_deps/googletest-build/googletest/CMakeFiles/list_install_components.dir +/home/huchen/FAISS/faiss/build/_deps/googletest-build/googletest/CMakeFiles/edit_cache.dir +/home/huchen/FAISS/faiss/build/_deps/googletest-build/googletest/CMakeFiles/test.dir +/home/huchen/FAISS/faiss/build/_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir +/home/huchen/FAISS/faiss/build/_deps/googletest-build/googletest/CMakeFiles/rebuild_cache.dir +/home/huchen/FAISS/faiss/build/_deps/googletest-build/googletest/CMakeFiles/gtest.dir +/home/huchen/FAISS/faiss/build/faiss/gpu/test/CMakeFiles/edit_cache.dir +/home/huchen/FAISS/faiss/build/faiss/gpu/test/CMakeFiles/test.dir +/home/huchen/FAISS/faiss/build/faiss/gpu/test/CMakeFiles/demo_ivfpq_indexing_gpu.dir +/home/huchen/FAISS/faiss/build/faiss/gpu/test/CMakeFiles/install.dir +/home/huchen/FAISS/faiss/build/faiss/gpu/test/CMakeFiles/TestCodePacking.dir +/home/huchen/FAISS/faiss/build/faiss/gpu/test/CMakeFiles/TestGpuMemoryException.dir +/home/huchen/FAISS/faiss/build/faiss/gpu/test/CMakeFiles/TestGpuIndexFlat.dir +/home/huchen/FAISS/faiss/build/faiss/gpu/test/CMakeFiles/faiss_gpu_test_helper.dir +/home/huchen/FAISS/faiss/build/faiss/gpu/test/CMakeFiles/TestGpuIndexIVFFlat.dir +/home/huchen/FAISS/faiss/build/faiss/gpu/test/CMakeFiles/install/local.dir +/home/huchen/FAISS/faiss/build/faiss/gpu/test/CMakeFiles/TestGpuDistance.dir +/home/huchen/FAISS/faiss/build/faiss/gpu/test/CMakeFiles/TestGpuIndexBinaryFlat.dir +/home/huchen/FAISS/faiss/build/faiss/gpu/test/CMakeFiles/rebuild_cache.dir +/home/huchen/FAISS/faiss/build/faiss/gpu/test/CMakeFiles/TestGpuIndexIVFPQ.dir +/home/huchen/FAISS/faiss/build/faiss/gpu/test/CMakeFiles/install/strip.dir +/home/huchen/FAISS/faiss/build/faiss/gpu/test/CMakeFiles/list_install_components.dir +/home/huchen/FAISS/faiss/build/faiss/gpu/test/CMakeFiles/TestGpuIndexIVFScalarQuantizer.dir +/home/huchen/FAISS/faiss/build/faiss/gpu/test/CMakeFiles/TestGpuSelect.dir diff --git a/build/CMakeFiles/cmake.check_cache b/build/CMakeFiles/cmake.check_cache new file mode 100644 index 0000000000000000000000000000000000000000..3dccd731726d7faa8b29d8d7dba3b981a53ca497 --- /dev/null +++ b/build/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/build/CMakeFiles/progress.marks b/build/CMakeFiles/progress.marks new file mode 100644 index 0000000000000000000000000000000000000000..59343b09ec765366a5b0ac04196385079acd864e --- /dev/null +++ b/build/CMakeFiles/progress.marks @@ -0,0 +1 @@ +53 diff --git a/build/CTestTestfile.cmake b/build/CTestTestfile.cmake new file mode 100644 index 0000000000000000000000000000000000000000..15e1415ed8329fd7a40eca171bd60f6216c929a8 --- /dev/null +++ b/build/CTestTestfile.cmake @@ -0,0 +1,13 @@ +# CMake generated Testfile for +# Source directory: /home/huchen/FAISS/faiss +# Build directory: /home/huchen/FAISS/faiss/build +# +# This file includes the relevant testing commands required for +# testing this directory and lists subdirectories to be tested as well. +subdirs("faiss") +subdirs("faiss/gpu") +subdirs("faiss/python") +subdirs("demos") +subdirs("tutorial/cpp") +subdirs("tests") +subdirs("faiss/gpu/test") diff --git a/build/DartConfiguration.tcl b/build/DartConfiguration.tcl new file mode 100644 index 0000000000000000000000000000000000000000..b3d606578863c747e5f0d13a7200577bb9cd6627 --- /dev/null +++ b/build/DartConfiguration.tcl @@ -0,0 +1,107 @@ +# This file is configured by CMake automatically as DartConfiguration.tcl +# If you choose not to use CMake, this file may be hand configured, by +# filling in the required variables. + + +# Configuration directories and files +SourceDirectory: /home/huchen/FAISS/faiss +BuildDirectory: /home/huchen/FAISS/faiss/build + +# Where to place the cost data store +CostDataFile: + +# Site is something like machine.domain, i.e. pragmatic.crd +Site: DCUnode2 + +# Build name is osname-revision-compiler, i.e. Linux-2.4.2-2smp-c++ +BuildName: Linux-hipcc + +# Subprojects +LabelsForSubprojects: + +# Submission information +SubmitURL: http:// + +# Dashboard start time +NightlyStartTime: 00:00:00 EDT + +# Commands for the build/test/submit cycle +ConfigureCommand: "/usr/bin/cmake3" "/home/huchen/FAISS/faiss" +MakeCommand: /usr/bin/cmake3 --build . --config "${CTEST_CONFIGURATION_TYPE}" +DefaultCTestConfigurationType: Release + +# version control +UpdateVersionOnly: + +# CVS options +# Default is "-d -P -A" +CVSCommand: CVSCOMMAND-NOTFOUND +CVSUpdateOptions: -d -A -P + +# Subversion options +SVNCommand: SVNCOMMAND-NOTFOUND +SVNOptions: +SVNUpdateOptions: + +# Git options +GITCommand: /opt/git-2.30.0/bin/git +GITInitSubmodules: +GITUpdateOptions: +GITUpdateCustom: + +# Perforce options +P4Command: P4COMMAND-NOTFOUND +P4Client: +P4Options: +P4UpdateOptions: +P4UpdateCustom: + +# Generic update command +UpdateCommand: /opt/git-2.30.0/bin/git +UpdateOptions: +UpdateType: git + +# Compiler info +Compiler: /opt/dtk-21.04/bin/hipcc +CompilerVersion: 12.0.0 + +# Dynamic analysis (MemCheck) +PurifyCommand: +ValgrindCommand: +ValgrindCommandOptions: +DrMemoryCommand: +DrMemoryCommandOptions: +MemoryCheckType: +MemoryCheckSanitizerOptions: +MemoryCheckCommand: /opt/rh/devtoolset-7/root/usr/bin/valgrind +MemoryCheckCommandOptions: +MemoryCheckSuppressionFile: + +# Coverage +CoverageCommand: /opt/rh/devtoolset-7/root/usr/bin/gcov +CoverageExtraFlags: -l + +# Cluster commands +SlurmBatchCommand: SLURM_SBATCH_COMMAND-NOTFOUND +SlurmRunCommand: SLURM_SRUN_COMMAND-NOTFOUND + +# Testing options +# TimeOut is the amount of time in seconds to wait for processes +# to complete during testing. After TimeOut seconds, the +# process will be summarily terminated. +# Currently set to 25 minutes +TimeOut: 1500 + +# During parallel testing CTest will not start a new test if doing +# so would cause the system load to exceed this value. +TestLoad: + +UseLaunchers: +CurlOptions: +# warning, if you add new options here that have to do with submit, +# you have to update cmCTestSubmitCommand.cxx + +# For CTest submissions that timeout, these options +# specify behavior for retrying the submission +CTestSubmitRetryDelay: 5 +CTestSubmitRetryCount: 3 diff --git a/build/Makefile b/build/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..e607dcd85e39ca534ca751ae1c533d6edf23c251 --- /dev/null +++ b/build/Makefile @@ -0,0 +1,1056 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Default target executed when no arguments are given to make. +default_target: all + +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake3 + +# The command to remove a file. +RM = /usr/bin/cmake3 -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/huchen/FAISS/faiss + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/huchen/FAISS/faiss/build + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake3 -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake3 -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake3 -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake3 -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Unspecified\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components + +.PHONY : list_install_components/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake3 --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache + +.PHONY : rebuild_cache/fast + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake cache editor..." + /usr/bin/ccmake3 -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache + +.PHONY : edit_cache/fast + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake3 -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake3 -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local/fast + +# Special rule for the target test +test: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running tests..." + /usr/bin/ctest3 --force-new-ctest-process $(ARGS) +.PHONY : test + +# Special rule for the target test +test/fast: test + +.PHONY : test/fast + +# The main all target +all: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles /home/huchen/FAISS/faiss/build/CMakeFiles/progress.marks + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 clean +.PHONY : clean + +# The main clean target +clean/fast: clean + +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +#============================================================================= +# Target rules for targets named ContinuousSubmit + +# Build rule for target. +ContinuousSubmit: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 ContinuousSubmit +.PHONY : ContinuousSubmit + +# fast build rule for target. +ContinuousSubmit/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousSubmit.dir/build.make CMakeFiles/ContinuousSubmit.dir/build +.PHONY : ContinuousSubmit/fast + +#============================================================================= +# Target rules for targets named ContinuousCoverage + +# Build rule for target. +ContinuousCoverage: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 ContinuousCoverage +.PHONY : ContinuousCoverage + +# fast build rule for target. +ContinuousCoverage/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousCoverage.dir/build.make CMakeFiles/ContinuousCoverage.dir/build +.PHONY : ContinuousCoverage/fast + +#============================================================================= +# Target rules for targets named ContinuousTest + +# Build rule for target. +ContinuousTest: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 ContinuousTest +.PHONY : ContinuousTest + +# fast build rule for target. +ContinuousTest/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousTest.dir/build.make CMakeFiles/ContinuousTest.dir/build +.PHONY : ContinuousTest/fast + +#============================================================================= +# Target rules for targets named ContinuousBuild + +# Build rule for target. +ContinuousBuild: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 ContinuousBuild +.PHONY : ContinuousBuild + +# fast build rule for target. +ContinuousBuild/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousBuild.dir/build.make CMakeFiles/ContinuousBuild.dir/build +.PHONY : ContinuousBuild/fast + +#============================================================================= +# Target rules for targets named ContinuousMemCheck + +# Build rule for target. +ContinuousMemCheck: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 ContinuousMemCheck +.PHONY : ContinuousMemCheck + +# fast build rule for target. +ContinuousMemCheck/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousMemCheck.dir/build.make CMakeFiles/ContinuousMemCheck.dir/build +.PHONY : ContinuousMemCheck/fast + +#============================================================================= +# Target rules for targets named Nightly + +# Build rule for target. +Nightly: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 Nightly +.PHONY : Nightly + +# fast build rule for target. +Nightly/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/Nightly.dir/build.make CMakeFiles/Nightly.dir/build +.PHONY : Nightly/fast + +#============================================================================= +# Target rules for targets named NightlyTest + +# Build rule for target. +NightlyTest: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 NightlyTest +.PHONY : NightlyTest + +# fast build rule for target. +NightlyTest/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyTest.dir/build.make CMakeFiles/NightlyTest.dir/build +.PHONY : NightlyTest/fast + +#============================================================================= +# Target rules for targets named NightlyUpdate + +# Build rule for target. +NightlyUpdate: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 NightlyUpdate +.PHONY : NightlyUpdate + +# fast build rule for target. +NightlyUpdate/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyUpdate.dir/build.make CMakeFiles/NightlyUpdate.dir/build +.PHONY : NightlyUpdate/fast + +#============================================================================= +# Target rules for targets named NightlyBuild + +# Build rule for target. +NightlyBuild: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 NightlyBuild +.PHONY : NightlyBuild + +# fast build rule for target. +NightlyBuild/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyBuild.dir/build.make CMakeFiles/NightlyBuild.dir/build +.PHONY : NightlyBuild/fast + +#============================================================================= +# Target rules for targets named Continuous + +# Build rule for target. +Continuous: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 Continuous +.PHONY : Continuous + +# fast build rule for target. +Continuous/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/Continuous.dir/build.make CMakeFiles/Continuous.dir/build +.PHONY : Continuous/fast + +#============================================================================= +# Target rules for targets named NightlyStart + +# Build rule for target. +NightlyStart: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 NightlyStart +.PHONY : NightlyStart + +# fast build rule for target. +NightlyStart/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyStart.dir/build.make CMakeFiles/NightlyStart.dir/build +.PHONY : NightlyStart/fast + +#============================================================================= +# Target rules for targets named NightlyMemoryCheck + +# Build rule for target. +NightlyMemoryCheck: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 NightlyMemoryCheck +.PHONY : NightlyMemoryCheck + +# fast build rule for target. +NightlyMemoryCheck/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyMemoryCheck.dir/build.make CMakeFiles/NightlyMemoryCheck.dir/build +.PHONY : NightlyMemoryCheck/fast + +#============================================================================= +# Target rules for targets named NightlyMemCheck + +# Build rule for target. +NightlyMemCheck: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 NightlyMemCheck +.PHONY : NightlyMemCheck + +# fast build rule for target. +NightlyMemCheck/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyMemCheck.dir/build.make CMakeFiles/NightlyMemCheck.dir/build +.PHONY : NightlyMemCheck/fast + +#============================================================================= +# Target rules for targets named ExperimentalStart + +# Build rule for target. +ExperimentalStart: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 ExperimentalStart +.PHONY : ExperimentalStart + +# fast build rule for target. +ExperimentalStart/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalStart.dir/build.make CMakeFiles/ExperimentalStart.dir/build +.PHONY : ExperimentalStart/fast + +#============================================================================= +# Target rules for targets named ContinuousConfigure + +# Build rule for target. +ContinuousConfigure: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 ContinuousConfigure +.PHONY : ContinuousConfigure + +# fast build rule for target. +ContinuousConfigure/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousConfigure.dir/build.make CMakeFiles/ContinuousConfigure.dir/build +.PHONY : ContinuousConfigure/fast + +#============================================================================= +# Target rules for targets named NightlyCoverage + +# Build rule for target. +NightlyCoverage: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 NightlyCoverage +.PHONY : NightlyCoverage + +# fast build rule for target. +NightlyCoverage/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyCoverage.dir/build.make CMakeFiles/NightlyCoverage.dir/build +.PHONY : NightlyCoverage/fast + +#============================================================================= +# Target rules for targets named ExperimentalUpdate + +# Build rule for target. +ExperimentalUpdate: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 ExperimentalUpdate +.PHONY : ExperimentalUpdate + +# fast build rule for target. +ExperimentalUpdate/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalUpdate.dir/build.make CMakeFiles/ExperimentalUpdate.dir/build +.PHONY : ExperimentalUpdate/fast + +#============================================================================= +# Target rules for targets named ExperimentalConfigure + +# Build rule for target. +ExperimentalConfigure: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 ExperimentalConfigure +.PHONY : ExperimentalConfigure + +# fast build rule for target. +ExperimentalConfigure/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalConfigure.dir/build.make CMakeFiles/ExperimentalConfigure.dir/build +.PHONY : ExperimentalConfigure/fast + +#============================================================================= +# Target rules for targets named ExperimentalCoverage + +# Build rule for target. +ExperimentalCoverage: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 ExperimentalCoverage +.PHONY : ExperimentalCoverage + +# fast build rule for target. +ExperimentalCoverage/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalCoverage.dir/build.make CMakeFiles/ExperimentalCoverage.dir/build +.PHONY : ExperimentalCoverage/fast + +#============================================================================= +# Target rules for targets named ExperimentalBuild + +# Build rule for target. +ExperimentalBuild: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 ExperimentalBuild +.PHONY : ExperimentalBuild + +# fast build rule for target. +ExperimentalBuild/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalBuild.dir/build.make CMakeFiles/ExperimentalBuild.dir/build +.PHONY : ExperimentalBuild/fast + +#============================================================================= +# Target rules for targets named NightlyConfigure + +# Build rule for target. +NightlyConfigure: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 NightlyConfigure +.PHONY : NightlyConfigure + +# fast build rule for target. +NightlyConfigure/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlyConfigure.dir/build.make CMakeFiles/NightlyConfigure.dir/build +.PHONY : NightlyConfigure/fast + +#============================================================================= +# Target rules for targets named ExperimentalTest + +# Build rule for target. +ExperimentalTest: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 ExperimentalTest +.PHONY : ExperimentalTest + +# fast build rule for target. +ExperimentalTest/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalTest.dir/build.make CMakeFiles/ExperimentalTest.dir/build +.PHONY : ExperimentalTest/fast + +#============================================================================= +# Target rules for targets named ExperimentalMemCheck + +# Build rule for target. +ExperimentalMemCheck: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 ExperimentalMemCheck +.PHONY : ExperimentalMemCheck + +# fast build rule for target. +ExperimentalMemCheck/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalMemCheck.dir/build.make CMakeFiles/ExperimentalMemCheck.dir/build +.PHONY : ExperimentalMemCheck/fast + +#============================================================================= +# Target rules for targets named Experimental + +# Build rule for target. +Experimental: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 Experimental +.PHONY : Experimental + +# fast build rule for target. +Experimental/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/Experimental.dir/build.make CMakeFiles/Experimental.dir/build +.PHONY : Experimental/fast + +#============================================================================= +# Target rules for targets named NightlySubmit + +# Build rule for target. +NightlySubmit: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 NightlySubmit +.PHONY : NightlySubmit + +# fast build rule for target. +NightlySubmit/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/NightlySubmit.dir/build.make CMakeFiles/NightlySubmit.dir/build +.PHONY : NightlySubmit/fast + +#============================================================================= +# Target rules for targets named ExperimentalSubmit + +# Build rule for target. +ExperimentalSubmit: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 ExperimentalSubmit +.PHONY : ExperimentalSubmit + +# fast build rule for target. +ExperimentalSubmit/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ExperimentalSubmit.dir/build.make CMakeFiles/ExperimentalSubmit.dir/build +.PHONY : ExperimentalSubmit/fast + +#============================================================================= +# Target rules for targets named ContinuousStart + +# Build rule for target. +ContinuousStart: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 ContinuousStart +.PHONY : ContinuousStart + +# fast build rule for target. +ContinuousStart/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousStart.dir/build.make CMakeFiles/ContinuousStart.dir/build +.PHONY : ContinuousStart/fast + +#============================================================================= +# Target rules for targets named ContinuousUpdate + +# Build rule for target. +ContinuousUpdate: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 ContinuousUpdate +.PHONY : ContinuousUpdate + +# fast build rule for target. +ContinuousUpdate/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/ContinuousUpdate.dir/build.make CMakeFiles/ContinuousUpdate.dir/build +.PHONY : ContinuousUpdate/fast + +#============================================================================= +# Target rules for targets named faiss_avx2 + +# Build rule for target. +faiss_avx2: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 faiss_avx2 +.PHONY : faiss_avx2 + +# fast build rule for target. +faiss_avx2/fast: + $(MAKE) $(MAKESILENT) -f faiss/CMakeFiles/faiss_avx2.dir/build.make faiss/CMakeFiles/faiss_avx2.dir/build +.PHONY : faiss_avx2/fast + +#============================================================================= +# Target rules for targets named faiss + +# Build rule for target. +faiss: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 faiss +.PHONY : faiss + +# fast build rule for target. +faiss/fast: + $(MAKE) $(MAKESILENT) -f faiss/CMakeFiles/faiss.dir/build.make faiss/CMakeFiles/faiss.dir/build +.PHONY : faiss/fast + +#============================================================================= +# Target rules for targets named swigfaiss + +# Build rule for target. +swigfaiss: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 swigfaiss +.PHONY : swigfaiss + +# fast build rule for target. +swigfaiss/fast: + $(MAKE) $(MAKESILENT) -f faiss/python/CMakeFiles/swigfaiss.dir/build.make faiss/python/CMakeFiles/swigfaiss.dir/build +.PHONY : swigfaiss/fast + +#============================================================================= +# Target rules for targets named swigfaiss_avx2_swig_compilation + +# Build rule for target. +swigfaiss_avx2_swig_compilation: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 swigfaiss_avx2_swig_compilation +.PHONY : swigfaiss_avx2_swig_compilation + +# fast build rule for target. +swigfaiss_avx2_swig_compilation/fast: + $(MAKE) $(MAKESILENT) -f faiss/python/CMakeFiles/swigfaiss_avx2_swig_compilation.dir/build.make faiss/python/CMakeFiles/swigfaiss_avx2_swig_compilation.dir/build +.PHONY : swigfaiss_avx2_swig_compilation/fast + +#============================================================================= +# Target rules for targets named swigfaiss_swig_compilation + +# Build rule for target. +swigfaiss_swig_compilation: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 swigfaiss_swig_compilation +.PHONY : swigfaiss_swig_compilation + +# fast build rule for target. +swigfaiss_swig_compilation/fast: + $(MAKE) $(MAKESILENT) -f faiss/python/CMakeFiles/swigfaiss_swig_compilation.dir/build.make faiss/python/CMakeFiles/swigfaiss_swig_compilation.dir/build +.PHONY : swigfaiss_swig_compilation/fast + +#============================================================================= +# Target rules for targets named swigfaiss_avx2 + +# Build rule for target. +swigfaiss_avx2: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 swigfaiss_avx2 +.PHONY : swigfaiss_avx2 + +# fast build rule for target. +swigfaiss_avx2/fast: + $(MAKE) $(MAKESILENT) -f faiss/python/CMakeFiles/swigfaiss_avx2.dir/build.make faiss/python/CMakeFiles/swigfaiss_avx2.dir/build +.PHONY : swigfaiss_avx2/fast + +#============================================================================= +# Target rules for targets named faiss_python_callbacks + +# Build rule for target. +faiss_python_callbacks: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 faiss_python_callbacks +.PHONY : faiss_python_callbacks + +# fast build rule for target. +faiss_python_callbacks/fast: + $(MAKE) $(MAKESILENT) -f faiss/python/CMakeFiles/faiss_python_callbacks.dir/build.make faiss/python/CMakeFiles/faiss_python_callbacks.dir/build +.PHONY : faiss_python_callbacks/fast + +#============================================================================= +# Target rules for targets named demo_imi_flat + +# Build rule for target. +demo_imi_flat: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 demo_imi_flat +.PHONY : demo_imi_flat + +# fast build rule for target. +demo_imi_flat/fast: + $(MAKE) $(MAKESILENT) -f demos/CMakeFiles/demo_imi_flat.dir/build.make demos/CMakeFiles/demo_imi_flat.dir/build +.PHONY : demo_imi_flat/fast + +#============================================================================= +# Target rules for targets named demo_imi_pq + +# Build rule for target. +demo_imi_pq: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 demo_imi_pq +.PHONY : demo_imi_pq + +# fast build rule for target. +demo_imi_pq/fast: + $(MAKE) $(MAKESILENT) -f demos/CMakeFiles/demo_imi_pq.dir/build.make demos/CMakeFiles/demo_imi_pq.dir/build +.PHONY : demo_imi_pq/fast + +#============================================================================= +# Target rules for targets named demo_ivfpq_indexing + +# Build rule for target. +demo_ivfpq_indexing: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 demo_ivfpq_indexing +.PHONY : demo_ivfpq_indexing + +# fast build rule for target. +demo_ivfpq_indexing/fast: + $(MAKE) $(MAKESILENT) -f demos/CMakeFiles/demo_ivfpq_indexing.dir/build.make demos/CMakeFiles/demo_ivfpq_indexing.dir/build +.PHONY : demo_ivfpq_indexing/fast + +#============================================================================= +# Target rules for targets named demo_nndescent + +# Build rule for target. +demo_nndescent: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 demo_nndescent +.PHONY : demo_nndescent + +# fast build rule for target. +demo_nndescent/fast: + $(MAKE) $(MAKESILENT) -f demos/CMakeFiles/demo_nndescent.dir/build.make demos/CMakeFiles/demo_nndescent.dir/build +.PHONY : demo_nndescent/fast + +#============================================================================= +# Target rules for targets named demo_weighted_kmeans + +# Build rule for target. +demo_weighted_kmeans: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 demo_weighted_kmeans +.PHONY : demo_weighted_kmeans + +# fast build rule for target. +demo_weighted_kmeans/fast: + $(MAKE) $(MAKESILENT) -f demos/CMakeFiles/demo_weighted_kmeans.dir/build.make demos/CMakeFiles/demo_weighted_kmeans.dir/build +.PHONY : demo_weighted_kmeans/fast + +#============================================================================= +# Target rules for targets named demo_sift1M + +# Build rule for target. +demo_sift1M: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 demo_sift1M +.PHONY : demo_sift1M + +# fast build rule for target. +demo_sift1M/fast: + $(MAKE) $(MAKESILENT) -f demos/CMakeFiles/demo_sift1M.dir/build.make demos/CMakeFiles/demo_sift1M.dir/build +.PHONY : demo_sift1M/fast + +#============================================================================= +# Target rules for targets named 1-Flat + +# Build rule for target. +1-Flat: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 1-Flat +.PHONY : 1-Flat + +# fast build rule for target. +1-Flat/fast: + $(MAKE) $(MAKESILENT) -f tutorial/cpp/CMakeFiles/1-Flat.dir/build.make tutorial/cpp/CMakeFiles/1-Flat.dir/build +.PHONY : 1-Flat/fast + +#============================================================================= +# Target rules for targets named 5-Multiple-GPUs + +# Build rule for target. +5-Multiple-GPUs: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 5-Multiple-GPUs +.PHONY : 5-Multiple-GPUs + +# fast build rule for target. +5-Multiple-GPUs/fast: + $(MAKE) $(MAKESILENT) -f tutorial/cpp/CMakeFiles/5-Multiple-GPUs.dir/build.make tutorial/cpp/CMakeFiles/5-Multiple-GPUs.dir/build +.PHONY : 5-Multiple-GPUs/fast + +#============================================================================= +# Target rules for targets named 2-IVFFlat + +# Build rule for target. +2-IVFFlat: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 2-IVFFlat +.PHONY : 2-IVFFlat + +# fast build rule for target. +2-IVFFlat/fast: + $(MAKE) $(MAKESILENT) -f tutorial/cpp/CMakeFiles/2-IVFFlat.dir/build.make tutorial/cpp/CMakeFiles/2-IVFFlat.dir/build +.PHONY : 2-IVFFlat/fast + +#============================================================================= +# Target rules for targets named 3-IVFPQ + +# Build rule for target. +3-IVFPQ: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 3-IVFPQ +.PHONY : 3-IVFPQ + +# fast build rule for target. +3-IVFPQ/fast: + $(MAKE) $(MAKESILENT) -f tutorial/cpp/CMakeFiles/3-IVFPQ.dir/build.make tutorial/cpp/CMakeFiles/3-IVFPQ.dir/build +.PHONY : 3-IVFPQ/fast + +#============================================================================= +# Target rules for targets named 4-GPU + +# Build rule for target. +4-GPU: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 4-GPU +.PHONY : 4-GPU + +# fast build rule for target. +4-GPU/fast: + $(MAKE) $(MAKESILENT) -f tutorial/cpp/CMakeFiles/4-GPU.dir/build.make tutorial/cpp/CMakeFiles/4-GPU.dir/build +.PHONY : 4-GPU/fast + +#============================================================================= +# Target rules for targets named faiss_test + +# Build rule for target. +faiss_test: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 faiss_test +.PHONY : faiss_test + +# fast build rule for target. +faiss_test/fast: + $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/faiss_test.dir/build.make tests/CMakeFiles/faiss_test.dir/build +.PHONY : faiss_test/fast + +#============================================================================= +# Target rules for targets named gtest_main + +# Build rule for target. +gtest_main: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 gtest_main +.PHONY : gtest_main + +# fast build rule for target. +gtest_main/fast: + $(MAKE) $(MAKESILENT) -f _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/build.make _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/build +.PHONY : gtest_main/fast + +#============================================================================= +# Target rules for targets named gtest + +# Build rule for target. +gtest: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 gtest +.PHONY : gtest + +# fast build rule for target. +gtest/fast: + $(MAKE) $(MAKESILENT) -f _deps/googletest-build/googletest/CMakeFiles/gtest.dir/build.make _deps/googletest-build/googletest/CMakeFiles/gtest.dir/build +.PHONY : gtest/fast + +#============================================================================= +# Target rules for targets named demo_ivfpq_indexing_gpu + +# Build rule for target. +demo_ivfpq_indexing_gpu: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 demo_ivfpq_indexing_gpu +.PHONY : demo_ivfpq_indexing_gpu + +# fast build rule for target. +demo_ivfpq_indexing_gpu/fast: + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/demo_ivfpq_indexing_gpu.dir/build.make faiss/gpu/test/CMakeFiles/demo_ivfpq_indexing_gpu.dir/build +.PHONY : demo_ivfpq_indexing_gpu/fast + +#============================================================================= +# Target rules for targets named TestCodePacking + +# Build rule for target. +TestCodePacking: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 TestCodePacking +.PHONY : TestCodePacking + +# fast build rule for target. +TestCodePacking/fast: + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/TestCodePacking.dir/build.make faiss/gpu/test/CMakeFiles/TestCodePacking.dir/build +.PHONY : TestCodePacking/fast + +#============================================================================= +# Target rules for targets named TestGpuMemoryException + +# Build rule for target. +TestGpuMemoryException: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 TestGpuMemoryException +.PHONY : TestGpuMemoryException + +# fast build rule for target. +TestGpuMemoryException/fast: + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/TestGpuMemoryException.dir/build.make faiss/gpu/test/CMakeFiles/TestGpuMemoryException.dir/build +.PHONY : TestGpuMemoryException/fast + +#============================================================================= +# Target rules for targets named TestGpuIndexFlat + +# Build rule for target. +TestGpuIndexFlat: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 TestGpuIndexFlat +.PHONY : TestGpuIndexFlat + +# fast build rule for target. +TestGpuIndexFlat/fast: + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/TestGpuIndexFlat.dir/build.make faiss/gpu/test/CMakeFiles/TestGpuIndexFlat.dir/build +.PHONY : TestGpuIndexFlat/fast + +#============================================================================= +# Target rules for targets named faiss_gpu_test_helper + +# Build rule for target. +faiss_gpu_test_helper: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 faiss_gpu_test_helper +.PHONY : faiss_gpu_test_helper + +# fast build rule for target. +faiss_gpu_test_helper/fast: + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/faiss_gpu_test_helper.dir/build.make faiss/gpu/test/CMakeFiles/faiss_gpu_test_helper.dir/build +.PHONY : faiss_gpu_test_helper/fast + +#============================================================================= +# Target rules for targets named TestGpuIndexIVFFlat + +# Build rule for target. +TestGpuIndexIVFFlat: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 TestGpuIndexIVFFlat +.PHONY : TestGpuIndexIVFFlat + +# fast build rule for target. +TestGpuIndexIVFFlat/fast: + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/TestGpuIndexIVFFlat.dir/build.make faiss/gpu/test/CMakeFiles/TestGpuIndexIVFFlat.dir/build +.PHONY : TestGpuIndexIVFFlat/fast + +#============================================================================= +# Target rules for targets named TestGpuDistance + +# Build rule for target. +TestGpuDistance: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 TestGpuDistance +.PHONY : TestGpuDistance + +# fast build rule for target. +TestGpuDistance/fast: + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/TestGpuDistance.dir/build.make faiss/gpu/test/CMakeFiles/TestGpuDistance.dir/build +.PHONY : TestGpuDistance/fast + +#============================================================================= +# Target rules for targets named TestGpuIndexBinaryFlat + +# Build rule for target. +TestGpuIndexBinaryFlat: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 TestGpuIndexBinaryFlat +.PHONY : TestGpuIndexBinaryFlat + +# fast build rule for target. +TestGpuIndexBinaryFlat/fast: + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/TestGpuIndexBinaryFlat.dir/build.make faiss/gpu/test/CMakeFiles/TestGpuIndexBinaryFlat.dir/build +.PHONY : TestGpuIndexBinaryFlat/fast + +#============================================================================= +# Target rules for targets named TestGpuIndexIVFPQ + +# Build rule for target. +TestGpuIndexIVFPQ: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 TestGpuIndexIVFPQ +.PHONY : TestGpuIndexIVFPQ + +# fast build rule for target. +TestGpuIndexIVFPQ/fast: + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/TestGpuIndexIVFPQ.dir/build.make faiss/gpu/test/CMakeFiles/TestGpuIndexIVFPQ.dir/build +.PHONY : TestGpuIndexIVFPQ/fast + +#============================================================================= +# Target rules for targets named TestGpuIndexIVFScalarQuantizer + +# Build rule for target. +TestGpuIndexIVFScalarQuantizer: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 TestGpuIndexIVFScalarQuantizer +.PHONY : TestGpuIndexIVFScalarQuantizer + +# fast build rule for target. +TestGpuIndexIVFScalarQuantizer/fast: + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/TestGpuIndexIVFScalarQuantizer.dir/build.make faiss/gpu/test/CMakeFiles/TestGpuIndexIVFScalarQuantizer.dir/build +.PHONY : TestGpuIndexIVFScalarQuantizer/fast + +#============================================================================= +# Target rules for targets named TestGpuSelect + +# Build rule for target. +TestGpuSelect: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 TestGpuSelect +.PHONY : TestGpuSelect + +# fast build rule for target. +TestGpuSelect/fast: + $(MAKE) $(MAKESILENT) -f faiss/gpu/test/CMakeFiles/TestGpuSelect.dir/build.make faiss/gpu/test/CMakeFiles/TestGpuSelect.dir/build +.PHONY : TestGpuSelect/fast + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... edit_cache" + @echo "... install" + @echo "... install/local" + @echo "... install/strip" + @echo "... list_install_components" + @echo "... rebuild_cache" + @echo "... test" + @echo "... Continuous" + @echo "... ContinuousBuild" + @echo "... ContinuousConfigure" + @echo "... ContinuousCoverage" + @echo "... ContinuousMemCheck" + @echo "... ContinuousStart" + @echo "... ContinuousSubmit" + @echo "... ContinuousTest" + @echo "... ContinuousUpdate" + @echo "... Experimental" + @echo "... ExperimentalBuild" + @echo "... ExperimentalConfigure" + @echo "... ExperimentalCoverage" + @echo "... ExperimentalMemCheck" + @echo "... ExperimentalStart" + @echo "... ExperimentalSubmit" + @echo "... ExperimentalTest" + @echo "... ExperimentalUpdate" + @echo "... Nightly" + @echo "... NightlyBuild" + @echo "... NightlyConfigure" + @echo "... NightlyCoverage" + @echo "... NightlyMemCheck" + @echo "... NightlyMemoryCheck" + @echo "... NightlyStart" + @echo "... NightlySubmit" + @echo "... NightlyTest" + @echo "... NightlyUpdate" + @echo "... swigfaiss_avx2_swig_compilation" + @echo "... swigfaiss_swig_compilation" + @echo "... 1-Flat" + @echo "... 2-IVFFlat" + @echo "... 3-IVFPQ" + @echo "... 4-GPU" + @echo "... 5-Multiple-GPUs" + @echo "... TestCodePacking" + @echo "... TestGpuDistance" + @echo "... TestGpuIndexBinaryFlat" + @echo "... TestGpuIndexFlat" + @echo "... TestGpuIndexIVFFlat" + @echo "... TestGpuIndexIVFPQ" + @echo "... TestGpuIndexIVFScalarQuantizer" + @echo "... TestGpuMemoryException" + @echo "... TestGpuSelect" + @echo "... demo_imi_flat" + @echo "... demo_imi_pq" + @echo "... demo_ivfpq_indexing" + @echo "... demo_ivfpq_indexing_gpu" + @echo "... demo_nndescent" + @echo "... demo_sift1M" + @echo "... demo_weighted_kmeans" + @echo "... faiss" + @echo "... faiss_avx2" + @echo "... faiss_gpu_test_helper" + @echo "... faiss_python_callbacks" + @echo "... faiss_test" + @echo "... gtest" + @echo "... gtest_main" + @echo "... swigfaiss" + @echo "... swigfaiss_avx2" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/build/_deps/googletest-build/CMakeFiles/CMakeDirectoryInformation.cmake b/build/_deps/googletest-build/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000000000000000000000000000000000000..f2aa3f924d61252118e5f336a110a356f0ee18fe --- /dev/null +++ b/build/_deps/googletest-build/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/huchen/FAISS/faiss") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/huchen/FAISS/faiss/build") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/build/_deps/googletest-build/CMakeFiles/progress.marks b/build/_deps/googletest-build/CMakeFiles/progress.marks new file mode 100644 index 0000000000000000000000000000000000000000..d00491fd7e5bb6fa28c517a0bb32b8b506539d4d --- /dev/null +++ b/build/_deps/googletest-build/CMakeFiles/progress.marks @@ -0,0 +1 @@ +1 diff --git a/build/_deps/googletest-build/CTestTestfile.cmake b/build/_deps/googletest-build/CTestTestfile.cmake new file mode 100644 index 0000000000000000000000000000000000000000..a1c2dad83cddda770ac7b2787874f6a5ad2ab263 --- /dev/null +++ b/build/_deps/googletest-build/CTestTestfile.cmake @@ -0,0 +1,7 @@ +# CMake generated Testfile for +# Source directory: /home/huchen/FAISS/faiss/build/_deps/googletest-src +# Build directory: /home/huchen/FAISS/faiss/build/_deps/googletest-build +# +# This file includes the relevant testing commands required for +# testing this directory and lists subdirectories to be tested as well. +subdirs("googletest") diff --git a/build/_deps/googletest-build/Makefile b/build/_deps/googletest-build/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..25e04d88c2c80094bcb7d9eada3c8ea9f708f431 --- /dev/null +++ b/build/_deps/googletest-build/Makefile @@ -0,0 +1,216 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Default target executed when no arguments are given to make. +default_target: all + +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake3 + +# The command to remove a file. +RM = /usr/bin/cmake3 -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/huchen/FAISS/faiss + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/huchen/FAISS/faiss/build + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake3 -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake3 -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip/fast + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake3 -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake3 -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake3 -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake3 -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Unspecified\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components + +.PHONY : list_install_components/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake3 --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache + +.PHONY : rebuild_cache/fast + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake cache editor..." + /usr/bin/ccmake3 -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache + +.PHONY : edit_cache/fast + +# Special rule for the target test +test: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running tests..." + /usr/bin/ctest3 --force-new-ctest-process $(ARGS) +.PHONY : test + +# Special rule for the target test +test/fast: test + +.PHONY : test/fast + +# The main all target +all: cmake_check_build_system + cd /home/huchen/FAISS/faiss/build && $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles /home/huchen/FAISS/faiss/build/_deps/googletest-build/CMakeFiles/progress.marks + cd /home/huchen/FAISS/faiss/build && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 _deps/googletest-build/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + cd /home/huchen/FAISS/faiss/build && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 _deps/googletest-build/clean +.PHONY : clean + +# The main clean target +clean/fast: clean + +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + cd /home/huchen/FAISS/faiss/build && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 _deps/googletest-build/preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + cd /home/huchen/FAISS/faiss/build && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 _deps/googletest-build/preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + cd /home/huchen/FAISS/faiss/build && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... edit_cache" + @echo "... install" + @echo "... install/local" + @echo "... install/strip" + @echo "... list_install_components" + @echo "... rebuild_cache" + @echo "... test" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + cd /home/huchen/FAISS/faiss/build && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/build/_deps/googletest-build/cmake_install.cmake b/build/_deps/googletest-build/cmake_install.cmake new file mode 100644 index 0000000000000000000000000000000000000000..7f9e957e910f74dda27617385112b8668ce3c4ba --- /dev/null +++ b/build/_deps/googletest-build/cmake_install.cmake @@ -0,0 +1,45 @@ +# Install script for directory: /home/huchen/FAISS/faiss/build/_deps/googletest-src + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "0") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +if(NOT CMAKE_INSTALL_LOCAL_ONLY) + # Include the install script for each subdirectory. + include("/home/huchen/FAISS/faiss/build/_deps/googletest-build/googletest/cmake_install.cmake") + +endif() + diff --git a/build/_deps/googletest-build/googletest/CMakeFiles/CMakeDirectoryInformation.cmake b/build/_deps/googletest-build/googletest/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000000000000000000000000000000000000..f2aa3f924d61252118e5f336a110a356f0ee18fe --- /dev/null +++ b/build/_deps/googletest-build/googletest/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/huchen/FAISS/faiss") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/huchen/FAISS/faiss/build") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/build/_deps/googletest-build/googletest/CMakeFiles/gtest.dir/CXX.includecache b/build/_deps/googletest-build/googletest/CMakeFiles/gtest.dir/CXX.includecache new file mode 100644 index 0000000000000000000000000000000000000000..992b0b989fd2232f3c7cdc4a0c90b01d7891063c --- /dev/null +++ b/build/_deps/googletest-build/googletest/CMakeFiles/gtest.dir/CXX.includecache @@ -0,0 +1,644 @@ +#IncludeRegexLine: ^[ ]*[#%][ ]*(include|import)[ ]*[<"]([^">]+)([">]) + +#IncludeRegexScan: ^.*$ + +#IncludeRegexComplain: ^$ + +#IncludeRegexTransform: + +/home/huchen/FAISS/faiss/build/_deps/googletest-src/googletest/src/gtest-all.cc +gtest/gtest.h +/home/huchen/FAISS/faiss/build/_deps/googletest-src/googletest/src/gtest/gtest.h +src/gtest.cc +/home/huchen/FAISS/faiss/build/_deps/googletest-src/googletest/src/src/gtest.cc +src/gtest-death-test.cc +/home/huchen/FAISS/faiss/build/_deps/googletest-src/googletest/src/src/gtest-death-test.cc +src/gtest-filepath.cc +/home/huchen/FAISS/faiss/build/_deps/googletest-src/googletest/src/src/gtest-filepath.cc +src/gtest-matchers.cc +/home/huchen/FAISS/faiss/build/_deps/googletest-src/googletest/src/src/gtest-matchers.cc +src/gtest-port.cc +/home/huchen/FAISS/faiss/build/_deps/googletest-src/googletest/src/src/gtest-port.cc +src/gtest-printers.cc +/home/huchen/FAISS/faiss/build/_deps/googletest-src/googletest/src/src/gtest-printers.cc +src/gtest-test-part.cc +/home/huchen/FAISS/faiss/build/_deps/googletest-src/googletest/src/src/gtest-test-part.cc +src/gtest-typed-test.cc +/home/huchen/FAISS/faiss/build/_deps/googletest-src/googletest/src/src/gtest-typed-test.cc + +_deps/googletest-src/googletest/include/gtest/gtest-death-test.h +gtest/internal/gtest-death-test-internal.h +_deps/googletest-src/googletest/include/gtest/gtest/internal/gtest-death-test-internal.h + +_deps/googletest-src/googletest/include/gtest/gtest-matchers.h +memory +- +ostream +- +string +- +type_traits +- +gtest/gtest-printers.h +_deps/googletest-src/googletest/include/gtest/gtest/gtest-printers.h +gtest/internal/gtest-internal.h +_deps/googletest-src/googletest/include/gtest/gtest/internal/gtest-internal.h +gtest/internal/gtest-port.h +_deps/googletest-src/googletest/include/gtest/gtest/internal/gtest-port.h + +_deps/googletest-src/googletest/include/gtest/gtest-message.h +limits +- +memory +- +gtest/internal/gtest-port.h +_deps/googletest-src/googletest/include/gtest/gtest/internal/gtest-port.h + +_deps/googletest-src/googletest/include/gtest/gtest-param-test.h +iterator +- +utility +- +gtest/internal/gtest-internal.h +_deps/googletest-src/googletest/include/gtest/gtest/internal/gtest-internal.h +gtest/internal/gtest-param-util.h +_deps/googletest-src/googletest/include/gtest/gtest/internal/gtest-param-util.h +gtest/internal/gtest-port.h +_deps/googletest-src/googletest/include/gtest/gtest/internal/gtest-port.h + +_deps/googletest-src/googletest/include/gtest/gtest-printers.h +functional +- +ostream +- +sstream +- +string +- +tuple +- +type_traits +- +utility +- +vector +- +gtest/internal/gtest-internal.h +_deps/googletest-src/googletest/include/gtest/gtest/internal/gtest-internal.h +gtest/internal/gtest-port.h +_deps/googletest-src/googletest/include/gtest/gtest/internal/gtest-port.h +absl/strings/string_view.h +_deps/googletest-src/googletest/include/gtest/absl/strings/string_view.h +absl/types/optional.h +_deps/googletest-src/googletest/include/gtest/absl/types/optional.h +absl/types/variant.h +_deps/googletest-src/googletest/include/gtest/absl/types/variant.h +gtest/internal/custom/gtest-printers.h +_deps/googletest-src/googletest/include/gtest/gtest/internal/custom/gtest-printers.h + +_deps/googletest-src/googletest/include/gtest/gtest-spi.h +gtest/gtest.h +_deps/googletest-src/googletest/include/gtest/gtest/gtest.h + +_deps/googletest-src/googletest/include/gtest/gtest-test-part.h +iosfwd +- +vector +- +gtest/internal/gtest-internal.h +_deps/googletest-src/googletest/include/gtest/gtest/internal/gtest-internal.h +gtest/internal/gtest-string.h +_deps/googletest-src/googletest/include/gtest/gtest/internal/gtest-string.h + +_deps/googletest-src/googletest/include/gtest/gtest-typed-test.h +gtest/internal/gtest-port.h +_deps/googletest-src/googletest/include/gtest/gtest/internal/gtest-port.h +gtest/internal/gtest-type-util.h +_deps/googletest-src/googletest/include/gtest/gtest/internal/gtest-type-util.h + +_deps/googletest-src/googletest/include/gtest/gtest.h +cstddef +- +limits +- +memory +- +ostream +- +type_traits +- +vector +- +gtest/internal/gtest-internal.h +_deps/googletest-src/googletest/include/gtest/gtest/internal/gtest-internal.h +gtest/internal/gtest-string.h +_deps/googletest-src/googletest/include/gtest/gtest/internal/gtest-string.h +gtest/gtest-death-test.h +_deps/googletest-src/googletest/include/gtest/gtest/gtest-death-test.h +gtest/gtest-matchers.h +_deps/googletest-src/googletest/include/gtest/gtest/gtest-matchers.h +gtest/gtest-message.h +_deps/googletest-src/googletest/include/gtest/gtest/gtest-message.h +gtest/gtest-param-test.h +_deps/googletest-src/googletest/include/gtest/gtest/gtest-param-test.h +gtest/gtest-printers.h +_deps/googletest-src/googletest/include/gtest/gtest/gtest-printers.h +gtest/gtest_prod.h +_deps/googletest-src/googletest/include/gtest/gtest/gtest_prod.h +gtest/gtest-test-part.h +_deps/googletest-src/googletest/include/gtest/gtest/gtest-test-part.h +gtest/gtest-typed-test.h +_deps/googletest-src/googletest/include/gtest/gtest/gtest-typed-test.h +gtest/gtest_pred_impl.h +_deps/googletest-src/googletest/include/gtest/gtest/gtest_pred_impl.h + +_deps/googletest-src/googletest/include/gtest/gtest_pred_impl.h +gtest/gtest.h +_deps/googletest-src/googletest/include/gtest/gtest/gtest.h + +_deps/googletest-src/googletest/include/gtest/gtest_prod.h + +_deps/googletest-src/googletest/include/gtest/internal/custom/gtest-port.h + +_deps/googletest-src/googletest/include/gtest/internal/custom/gtest-printers.h + +_deps/googletest-src/googletest/include/gtest/internal/custom/gtest.h + +_deps/googletest-src/googletest/include/gtest/internal/gtest-death-test-internal.h +gtest/gtest-matchers.h +_deps/googletest-src/googletest/include/gtest/internal/gtest/gtest-matchers.h +gtest/internal/gtest-internal.h +_deps/googletest-src/googletest/include/gtest/internal/gtest/internal/gtest-internal.h +stdio.h +- +memory +- + +_deps/googletest-src/googletest/include/gtest/internal/gtest-filepath.h +gtest/internal/gtest-string.h +_deps/googletest-src/googletest/include/gtest/internal/gtest/internal/gtest-string.h + +_deps/googletest-src/googletest/include/gtest/internal/gtest-internal.h +gtest/internal/gtest-port.h +_deps/googletest-src/googletest/include/gtest/internal/gtest/internal/gtest-port.h +stdlib.h +- +sys/types.h +- +sys/wait.h +- +unistd.h +- +stdexcept +- +ctype.h +- +float.h +- +string.h +- +iomanip +- +limits +- +map +- +set +- +string +- +type_traits +- +vector +- +gtest/gtest-message.h +_deps/googletest-src/googletest/include/gtest/internal/gtest/gtest-message.h +gtest/internal/gtest-filepath.h +_deps/googletest-src/googletest/include/gtest/internal/gtest/internal/gtest-filepath.h +gtest/internal/gtest-string.h +_deps/googletest-src/googletest/include/gtest/internal/gtest/internal/gtest-string.h +gtest/internal/gtest-type-util.h +_deps/googletest-src/googletest/include/gtest/internal/gtest/internal/gtest-type-util.h + +_deps/googletest-src/googletest/include/gtest/internal/gtest-param-util.h +ctype.h +- +cassert +- +iterator +- +memory +- +set +- +tuple +- +utility +- +vector +- +gtest/internal/gtest-internal.h +_deps/googletest-src/googletest/include/gtest/internal/gtest/internal/gtest-internal.h +gtest/internal/gtest-port.h +_deps/googletest-src/googletest/include/gtest/internal/gtest/internal/gtest-port.h +gtest/gtest-printers.h +_deps/googletest-src/googletest/include/gtest/internal/gtest/gtest-printers.h + +_deps/googletest-src/googletest/include/gtest/internal/gtest-port-arch.h +winapifamily.h +- + +_deps/googletest-src/googletest/include/gtest/internal/gtest-port.h +ctype.h +- +stddef.h +- +stdio.h +- +stdlib.h +- +string.h +- +memory +- +type_traits +- +sys/types.h +- +sys/stat.h +- +AvailabilityMacros.h +- +TargetConditionals.h +- +algorithm +- +iostream +- +sstream +- +string +- +tuple +- +utility +- +vector +- +gtest/internal/gtest-port-arch.h +_deps/googletest-src/googletest/include/gtest/internal/gtest/internal/gtest-port-arch.h +gtest/internal/custom/gtest-port.h +_deps/googletest-src/googletest/include/gtest/internal/gtest/internal/custom/gtest-port.h +direct.h +- +io.h +- +unistd.h +- +strings.h +- +android/api-level.h +- +regex.h +- +typeinfo +- +pthread.h +- +time.h +- + +_deps/googletest-src/googletest/include/gtest/internal/gtest-string.h +mem.h +- +string.h +- +string +- +gtest/internal/gtest-port.h +_deps/googletest-src/googletest/include/gtest/internal/gtest/internal/gtest-port.h + +_deps/googletest-src/googletest/include/gtest/internal/gtest-type-util.h +gtest/internal/gtest-port.h +_deps/googletest-src/googletest/include/gtest/internal/gtest/internal/gtest-port.h +cxxabi.h +- +acxx_demangle.h +- + +_deps/googletest-src/googletest/src/gtest-death-test.cc +gtest/gtest-death-test.h +_deps/googletest-src/googletest/src/gtest/gtest-death-test.h +utility +- +gtest/internal/gtest-port.h +_deps/googletest-src/googletest/src/gtest/internal/gtest-port.h +gtest/internal/custom/gtest.h +_deps/googletest-src/googletest/src/gtest/internal/custom/gtest.h +crt_externs.h +- +errno.h +- +fcntl.h +- +limits.h +- +signal.h +- +stdarg.h +- +windows.h +- +sys/mman.h +- +sys/wait.h +- +spawn.h +- +lib/fdio/fd.h +- +lib/fdio/io.h +- +lib/fdio/spawn.h +- +lib/zx/channel.h +- +lib/zx/port.h +- +lib/zx/process.h +- +lib/zx/socket.h +- +zircon/processargs.h +- +zircon/syscalls.h +- +zircon/syscalls/policy.h +- +zircon/syscalls/port.h +- +gtest/gtest-message.h +_deps/googletest-src/googletest/src/gtest/gtest-message.h +gtest/internal/gtest-string.h +_deps/googletest-src/googletest/src/gtest/internal/gtest-string.h +src/gtest-internal-inl.h +_deps/googletest-src/googletest/src/src/gtest-internal-inl.h + +_deps/googletest-src/googletest/src/gtest-filepath.cc +gtest/internal/gtest-filepath.h +_deps/googletest-src/googletest/src/gtest/internal/gtest-filepath.h +stdlib.h +- +gtest/internal/gtest-port.h +_deps/googletest-src/googletest/src/gtest/internal/gtest-port.h +gtest/gtest-message.h +_deps/googletest-src/googletest/src/gtest/gtest-message.h +windows.h +- +direct.h +- +io.h +- +limits.h +- +climits +- +gtest/internal/gtest-string.h +_deps/googletest-src/googletest/src/gtest/internal/gtest-string.h + +_deps/googletest-src/googletest/src/gtest-internal-inl.h +errno.h +- +stddef.h +- +stdlib.h +- +string.h +- +algorithm +- +memory +- +string +- +vector +- +gtest/internal/gtest-port.h +_deps/googletest-src/googletest/src/gtest/internal/gtest-port.h +arpa/inet.h +- +netdb.h +- +windows.h +- +gtest/gtest.h +_deps/googletest-src/googletest/src/gtest/gtest.h +gtest/gtest-spi.h +_deps/googletest-src/googletest/src/gtest/gtest-spi.h + +_deps/googletest-src/googletest/src/gtest-matchers.cc +gtest/internal/gtest-internal.h +_deps/googletest-src/googletest/src/gtest/internal/gtest-internal.h +gtest/internal/gtest-port.h +_deps/googletest-src/googletest/src/gtest/internal/gtest-port.h +gtest/gtest-matchers.h +_deps/googletest-src/googletest/src/gtest/gtest-matchers.h +string +- + +_deps/googletest-src/googletest/src/gtest-port.cc +gtest/internal/gtest-port.h +_deps/googletest-src/googletest/src/gtest/internal/gtest-port.h +limits.h +- +stdio.h +- +stdlib.h +- +string.h +- +fstream +- +memory +- +windows.h +- +io.h +- +sys/stat.h +- +map +- +crtdbg.h +- +unistd.h +- +mach/mach_init.h +- +mach/task.h +- +mach/vm_map.h +- +sys/sysctl.h +- +sys/user.h +- +devctl.h +- +fcntl.h +- +sys/procfs.h +- +procinfo.h +- +sys/types.h +- +zircon/process.h +- +zircon/syscalls.h +- +gtest/gtest-spi.h +_deps/googletest-src/googletest/src/gtest/gtest-spi.h +gtest/gtest-message.h +_deps/googletest-src/googletest/src/gtest/gtest-message.h +gtest/internal/gtest-internal.h +_deps/googletest-src/googletest/src/gtest/internal/gtest-internal.h +gtest/internal/gtest-string.h +_deps/googletest-src/googletest/src/gtest/internal/gtest-string.h +src/gtest-internal-inl.h +_deps/googletest-src/googletest/src/src/gtest-internal-inl.h + +_deps/googletest-src/googletest/src/gtest-printers.cc +gtest/gtest-printers.h +_deps/googletest-src/googletest/src/gtest/gtest-printers.h +stdio.h +- +cctype +- +cwchar +- +ostream +- +string +- +gtest/internal/gtest-port.h +_deps/googletest-src/googletest/src/gtest/internal/gtest-port.h +src/gtest-internal-inl.h +_deps/googletest-src/googletest/src/src/gtest-internal-inl.h + +_deps/googletest-src/googletest/src/gtest-test-part.cc +gtest/gtest-test-part.h +_deps/googletest-src/googletest/src/gtest/gtest-test-part.h +src/gtest-internal-inl.h +_deps/googletest-src/googletest/src/src/gtest-internal-inl.h + +_deps/googletest-src/googletest/src/gtest-typed-test.cc +gtest/gtest-typed-test.h +_deps/googletest-src/googletest/src/gtest/gtest-typed-test.h +gtest/gtest.h +_deps/googletest-src/googletest/src/gtest/gtest.h + +_deps/googletest-src/googletest/src/gtest.cc +gtest/gtest.h +_deps/googletest-src/googletest/src/gtest/gtest.h +gtest/internal/custom/gtest.h +_deps/googletest-src/googletest/src/gtest/internal/custom/gtest.h +gtest/gtest-spi.h +_deps/googletest-src/googletest/src/gtest/gtest-spi.h +ctype.h +- +math.h +- +stdarg.h +- +stdio.h +- +stdlib.h +- +time.h +- +wchar.h +- +wctype.h +- +algorithm +- +iomanip +- +limits +- +list +- +map +- +ostream +- +sstream +- +vector +- +fcntl.h +- +limits.h +- +sched.h +- +strings.h +- +sys/mman.h +- +sys/time.h +- +unistd.h +- +string +- +sys/time.h +- +strings.h +- +windows.h +- +windows.h +- +crtdbg.h +- +debugapi.h +- +io.h +- +sys/timeb.h +- +sys/types.h +- +sys/stat.h +- +sys/time.h +- +sys/time.h +- +unistd.h +- +stdexcept +- +arpa/inet.h +- +netdb.h +- +sys/socket.h +- +sys/types.h +- +src/gtest-internal-inl.h +_deps/googletest-src/googletest/src/src/gtest-internal-inl.h +crt_externs.h +- +absl/debugging/failure_signal_handler.h +_deps/googletest-src/googletest/src/absl/debugging/failure_signal_handler.h +absl/debugging/stacktrace.h +_deps/googletest-src/googletest/src/absl/debugging/stacktrace.h +absl/debugging/symbolize.h +_deps/googletest-src/googletest/src/absl/debugging/symbolize.h +absl/strings/str_cat.h +_deps/googletest-src/googletest/src/absl/strings/str_cat.h + diff --git a/build/_deps/googletest-build/googletest/CMakeFiles/gtest.dir/DependInfo.cmake b/build/_deps/googletest-build/googletest/CMakeFiles/gtest.dir/DependInfo.cmake new file mode 100644 index 0000000000000000000000000000000000000000..11f7922a8cdc915e1f6fc78bc8108e8319caf56d --- /dev/null +++ b/build/_deps/googletest-build/googletest/CMakeFiles/gtest.dir/DependInfo.cmake @@ -0,0 +1,28 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + "CXX" + ) +# The set of files for implicit dependencies of each language: +set(CMAKE_DEPENDS_CHECK_CXX + "/home/huchen/FAISS/faiss/build/_deps/googletest-src/googletest/src/gtest-all.cc" "/home/huchen/FAISS/faiss/build/_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o" + ) +set(CMAKE_CXX_COMPILER_ID "Clang") + +# Preprocessor definitions for this target. +set(CMAKE_TARGET_DEFINITIONS_CXX + "GTEST_CREATE_SHARED_LIBRARY=1" + "gtest_EXPORTS" + ) + +# The include file search paths: +set(CMAKE_CXX_TARGET_INCLUDE_PATH + "_deps/googletest-src/googletest/include" + "_deps/googletest-src/googletest" + ) + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/_deps/googletest-build/googletest/CMakeFiles/gtest.dir/build.make b/build/_deps/googletest-build/googletest/CMakeFiles/gtest.dir/build.make new file mode 100644 index 0000000000000000000000000000000000000000..db6b06f11705ed4a8b08c7a110d6f0095cffabdf --- /dev/null +++ b/build/_deps/googletest-build/googletest/CMakeFiles/gtest.dir/build.make @@ -0,0 +1,118 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake3 + +# The command to remove a file. +RM = /usr/bin/cmake3 -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/huchen/FAISS/faiss + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/huchen/FAISS/faiss/build + +# Include any dependencies generated for this target. +include _deps/googletest-build/googletest/CMakeFiles/gtest.dir/depend.make + +# Include the progress variables for this target. +include _deps/googletest-build/googletest/CMakeFiles/gtest.dir/progress.make + +# Include the compile flags for this target's objects. +include _deps/googletest-build/googletest/CMakeFiles/gtest.dir/flags.make + +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o: _deps/googletest-build/googletest/CMakeFiles/gtest.dir/flags.make +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o: _deps/googletest-src/googletest/src/gtest-all.cc + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CXX object _deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o" + cd /home/huchen/FAISS/faiss/build/_deps/googletest-build/googletest && /opt/dtk-21.04/bin/hipcc $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/gtest.dir/src/gtest-all.cc.o -c /home/huchen/FAISS/faiss/build/_deps/googletest-src/googletest/src/gtest-all.cc + +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/gtest.dir/src/gtest-all.cc.i" + cd /home/huchen/FAISS/faiss/build/_deps/googletest-build/googletest && /opt/dtk-21.04/bin/hipcc $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/huchen/FAISS/faiss/build/_deps/googletest-src/googletest/src/gtest-all.cc > CMakeFiles/gtest.dir/src/gtest-all.cc.i + +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/gtest.dir/src/gtest-all.cc.s" + cd /home/huchen/FAISS/faiss/build/_deps/googletest-build/googletest && /opt/dtk-21.04/bin/hipcc $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/huchen/FAISS/faiss/build/_deps/googletest-src/googletest/src/gtest-all.cc -o CMakeFiles/gtest.dir/src/gtest-all.cc.s + +# Object files for target gtest +gtest_OBJECTS = \ +"CMakeFiles/gtest.dir/src/gtest-all.cc.o" + +# External object files for target gtest +gtest_EXTERNAL_OBJECTS = + +lib/libgtest.so: _deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o +lib/libgtest.so: _deps/googletest-build/googletest/CMakeFiles/gtest.dir/build.make +lib/libgtest.so: _deps/googletest-build/googletest/CMakeFiles/gtest.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Linking CXX shared library ../../../lib/libgtest.so" + cd /home/huchen/FAISS/faiss/build/_deps/googletest-build/googletest && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/gtest.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/build: lib/libgtest.so + +.PHONY : _deps/googletest-build/googletest/CMakeFiles/gtest.dir/build + +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/clean: + cd /home/huchen/FAISS/faiss/build/_deps/googletest-build/googletest && $(CMAKE_COMMAND) -P CMakeFiles/gtest.dir/cmake_clean.cmake +.PHONY : _deps/googletest-build/googletest/CMakeFiles/gtest.dir/clean + +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/depend: + cd /home/huchen/FAISS/faiss/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss/build/_deps/googletest-src/googletest /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build/_deps/googletest-build/googletest /home/huchen/FAISS/faiss/build/_deps/googletest-build/googletest/CMakeFiles/gtest.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : _deps/googletest-build/googletest/CMakeFiles/gtest.dir/depend + diff --git a/build/_deps/googletest-build/googletest/CMakeFiles/gtest.dir/cmake_clean.cmake b/build/_deps/googletest-build/googletest/CMakeFiles/gtest.dir/cmake_clean.cmake new file mode 100644 index 0000000000000000000000000000000000000000..aee7a9c09fd21bc1e527eb06077280eaee43568a --- /dev/null +++ b/build/_deps/googletest-build/googletest/CMakeFiles/gtest.dir/cmake_clean.cmake @@ -0,0 +1,10 @@ +file(REMOVE_RECURSE + "../../../bin/libgtest.pdb" + "../../../lib/libgtest.so" + "CMakeFiles/gtest.dir/src/gtest-all.cc.o" +) + +# Per-language clean rules from dependency scanning. +foreach(lang CXX) + include(CMakeFiles/gtest.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/_deps/googletest-build/googletest/CMakeFiles/gtest.dir/depend.internal b/build/_deps/googletest-build/googletest/CMakeFiles/gtest.dir/depend.internal new file mode 100644 index 0000000000000000000000000000000000000000..2ffc67f8088b671aafe0dd889e0679756487aff2 --- /dev/null +++ b/build/_deps/googletest-build/googletest/CMakeFiles/gtest.dir/depend.internal @@ -0,0 +1,36 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o + /home/huchen/FAISS/faiss/build/_deps/googletest-src/googletest/src/gtest-all.cc + _deps/googletest-src/googletest/include/gtest/gtest-death-test.h + _deps/googletest-src/googletest/include/gtest/gtest-matchers.h + _deps/googletest-src/googletest/include/gtest/gtest-message.h + _deps/googletest-src/googletest/include/gtest/gtest-param-test.h + _deps/googletest-src/googletest/include/gtest/gtest-printers.h + _deps/googletest-src/googletest/include/gtest/gtest-spi.h + _deps/googletest-src/googletest/include/gtest/gtest-test-part.h + _deps/googletest-src/googletest/include/gtest/gtest-typed-test.h + _deps/googletest-src/googletest/include/gtest/gtest.h + _deps/googletest-src/googletest/include/gtest/gtest_pred_impl.h + _deps/googletest-src/googletest/include/gtest/gtest_prod.h + _deps/googletest-src/googletest/include/gtest/internal/custom/gtest-port.h + _deps/googletest-src/googletest/include/gtest/internal/custom/gtest-printers.h + _deps/googletest-src/googletest/include/gtest/internal/custom/gtest.h + _deps/googletest-src/googletest/include/gtest/internal/gtest-death-test-internal.h + _deps/googletest-src/googletest/include/gtest/internal/gtest-filepath.h + _deps/googletest-src/googletest/include/gtest/internal/gtest-internal.h + _deps/googletest-src/googletest/include/gtest/internal/gtest-param-util.h + _deps/googletest-src/googletest/include/gtest/internal/gtest-port-arch.h + _deps/googletest-src/googletest/include/gtest/internal/gtest-port.h + _deps/googletest-src/googletest/include/gtest/internal/gtest-string.h + _deps/googletest-src/googletest/include/gtest/internal/gtest-type-util.h + _deps/googletest-src/googletest/src/gtest-death-test.cc + _deps/googletest-src/googletest/src/gtest-filepath.cc + _deps/googletest-src/googletest/src/gtest-internal-inl.h + _deps/googletest-src/googletest/src/gtest-matchers.cc + _deps/googletest-src/googletest/src/gtest-port.cc + _deps/googletest-src/googletest/src/gtest-printers.cc + _deps/googletest-src/googletest/src/gtest-test-part.cc + _deps/googletest-src/googletest/src/gtest-typed-test.cc + _deps/googletest-src/googletest/src/gtest.cc diff --git a/build/_deps/googletest-build/googletest/CMakeFiles/gtest.dir/depend.make b/build/_deps/googletest-build/googletest/CMakeFiles/gtest.dir/depend.make new file mode 100644 index 0000000000000000000000000000000000000000..24f3a379237ed84cb420534a729705d333d8555f --- /dev/null +++ b/build/_deps/googletest-build/googletest/CMakeFiles/gtest.dir/depend.make @@ -0,0 +1,36 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o: _deps/googletest-src/googletest/src/gtest-all.cc +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o: _deps/googletest-src/googletest/include/gtest/gtest-death-test.h +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o: _deps/googletest-src/googletest/include/gtest/gtest-matchers.h +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o: _deps/googletest-src/googletest/include/gtest/gtest-message.h +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o: _deps/googletest-src/googletest/include/gtest/gtest-param-test.h +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o: _deps/googletest-src/googletest/include/gtest/gtest-printers.h +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o: _deps/googletest-src/googletest/include/gtest/gtest-spi.h +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o: _deps/googletest-src/googletest/include/gtest/gtest-test-part.h +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o: _deps/googletest-src/googletest/include/gtest/gtest-typed-test.h +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o: _deps/googletest-src/googletest/include/gtest/gtest.h +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o: _deps/googletest-src/googletest/include/gtest/gtest_pred_impl.h +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o: _deps/googletest-src/googletest/include/gtest/gtest_prod.h +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o: _deps/googletest-src/googletest/include/gtest/internal/custom/gtest-port.h +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o: _deps/googletest-src/googletest/include/gtest/internal/custom/gtest-printers.h +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o: _deps/googletest-src/googletest/include/gtest/internal/custom/gtest.h +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o: _deps/googletest-src/googletest/include/gtest/internal/gtest-death-test-internal.h +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o: _deps/googletest-src/googletest/include/gtest/internal/gtest-filepath.h +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o: _deps/googletest-src/googletest/include/gtest/internal/gtest-internal.h +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o: _deps/googletest-src/googletest/include/gtest/internal/gtest-param-util.h +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o: _deps/googletest-src/googletest/include/gtest/internal/gtest-port-arch.h +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o: _deps/googletest-src/googletest/include/gtest/internal/gtest-port.h +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o: _deps/googletest-src/googletest/include/gtest/internal/gtest-string.h +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o: _deps/googletest-src/googletest/include/gtest/internal/gtest-type-util.h +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o: _deps/googletest-src/googletest/src/gtest-death-test.cc +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o: _deps/googletest-src/googletest/src/gtest-filepath.cc +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o: _deps/googletest-src/googletest/src/gtest-internal-inl.h +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o: _deps/googletest-src/googletest/src/gtest-matchers.cc +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o: _deps/googletest-src/googletest/src/gtest-port.cc +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o: _deps/googletest-src/googletest/src/gtest-printers.cc +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o: _deps/googletest-src/googletest/src/gtest-test-part.cc +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o: _deps/googletest-src/googletest/src/gtest-typed-test.cc +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o: _deps/googletest-src/googletest/src/gtest.cc + diff --git a/build/_deps/googletest-build/googletest/CMakeFiles/gtest.dir/flags.make b/build/_deps/googletest-build/googletest/CMakeFiles/gtest.dir/flags.make new file mode 100644 index 0000000000000000000000000000000000000000..ce92cc7cc31a94e705616f18db47227e55fdaf03 --- /dev/null +++ b/build/_deps/googletest-build/googletest/CMakeFiles/gtest.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# compile CXX with /opt/dtk-21.04/bin/hipcc +CXX_FLAGS = -fPIC -Wall -Wshadow -Werror -Wconversion -DGTEST_HAS_PTHREAD=1 -fexceptions -W -Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch -Wunused-parameter -Wcast-align -Wchar-subscripts -Winline -Wredundant-decls -pthread -std=c++11 + +CXX_DEFINES = -DGTEST_CREATE_SHARED_LIBRARY=1 -Dgtest_EXPORTS + +CXX_INCLUDES = -I/home/huchen/FAISS/faiss/build/_deps/googletest-src/googletest/include -I/home/huchen/FAISS/faiss/build/_deps/googletest-src/googletest + diff --git a/build/_deps/googletest-build/googletest/CMakeFiles/gtest.dir/link.txt b/build/_deps/googletest-build/googletest/CMakeFiles/gtest.dir/link.txt new file mode 100644 index 0000000000000000000000000000000000000000..6c57aac569449bb8a6c009131eae2a07a24e0421 --- /dev/null +++ b/build/_deps/googletest-build/googletest/CMakeFiles/gtest.dir/link.txt @@ -0,0 +1 @@ +/opt/dtk-21.04/bin/hipcc -fPIC -Wl,-rpath=/opt/rh/devtoolset-7/root/usr/lib64 -Wl,-rpath=/opt/rh/devtoolset-7/root/usr/lib -shared -Wl,-soname,libgtest.so -o ../../../lib/libgtest.so CMakeFiles/gtest.dir/src/gtest-all.cc.o -pthread diff --git a/build/_deps/googletest-build/googletest/CMakeFiles/gtest.dir/progress.make b/build/_deps/googletest-build/googletest/CMakeFiles/gtest.dir/progress.make new file mode 100644 index 0000000000000000000000000000000000000000..6c287f17b23171ee8abc97d23b8f8a3bfa7225de --- /dev/null +++ b/build/_deps/googletest-build/googletest/CMakeFiles/gtest.dir/progress.make @@ -0,0 +1,3 @@ +CMAKE_PROGRESS_1 = +CMAKE_PROGRESS_2 = + diff --git a/build/_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o b/build/_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o new file mode 100644 index 0000000000000000000000000000000000000000..dfe61c271f56d147c840fb5aa9b31f5eddbfcee5 Binary files /dev/null and b/build/_deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o differ diff --git a/build/_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/CXX.includecache b/build/_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/CXX.includecache new file mode 100644 index 0000000000000000000000000000000000000000..341163461f7ef079b2404b61f686e868aa0c371a --- /dev/null +++ b/build/_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/CXX.includecache @@ -0,0 +1,308 @@ +#IncludeRegexLine: ^[ ]*[#%][ ]*(include|import)[ ]*[<"]([^">]+)([">]) + +#IncludeRegexScan: ^.*$ + +#IncludeRegexComplain: ^$ + +#IncludeRegexTransform: + +/home/huchen/FAISS/faiss/build/_deps/googletest-src/googletest/src/gtest_main.cc +cstdio +- +gtest/gtest.h +/home/huchen/FAISS/faiss/build/_deps/googletest-src/googletest/src/gtest/gtest.h + +_deps/googletest-src/googletest/include/gtest/gtest-death-test.h +gtest/internal/gtest-death-test-internal.h +_deps/googletest-src/googletest/include/gtest/gtest/internal/gtest-death-test-internal.h + +_deps/googletest-src/googletest/include/gtest/gtest-matchers.h +memory +- +ostream +- +string +- +type_traits +- +gtest/gtest-printers.h +_deps/googletest-src/googletest/include/gtest/gtest/gtest-printers.h +gtest/internal/gtest-internal.h +_deps/googletest-src/googletest/include/gtest/gtest/internal/gtest-internal.h +gtest/internal/gtest-port.h +_deps/googletest-src/googletest/include/gtest/gtest/internal/gtest-port.h + +_deps/googletest-src/googletest/include/gtest/gtest-message.h +limits +- +memory +- +gtest/internal/gtest-port.h +_deps/googletest-src/googletest/include/gtest/gtest/internal/gtest-port.h + +_deps/googletest-src/googletest/include/gtest/gtest-param-test.h +iterator +- +utility +- +gtest/internal/gtest-internal.h +_deps/googletest-src/googletest/include/gtest/gtest/internal/gtest-internal.h +gtest/internal/gtest-param-util.h +_deps/googletest-src/googletest/include/gtest/gtest/internal/gtest-param-util.h +gtest/internal/gtest-port.h +_deps/googletest-src/googletest/include/gtest/gtest/internal/gtest-port.h + +_deps/googletest-src/googletest/include/gtest/gtest-printers.h +functional +- +ostream +- +sstream +- +string +- +tuple +- +type_traits +- +utility +- +vector +- +gtest/internal/gtest-internal.h +_deps/googletest-src/googletest/include/gtest/gtest/internal/gtest-internal.h +gtest/internal/gtest-port.h +_deps/googletest-src/googletest/include/gtest/gtest/internal/gtest-port.h +absl/strings/string_view.h +_deps/googletest-src/googletest/include/gtest/absl/strings/string_view.h +absl/types/optional.h +_deps/googletest-src/googletest/include/gtest/absl/types/optional.h +absl/types/variant.h +_deps/googletest-src/googletest/include/gtest/absl/types/variant.h +gtest/internal/custom/gtest-printers.h +_deps/googletest-src/googletest/include/gtest/gtest/internal/custom/gtest-printers.h + +_deps/googletest-src/googletest/include/gtest/gtest-test-part.h +iosfwd +- +vector +- +gtest/internal/gtest-internal.h +_deps/googletest-src/googletest/include/gtest/gtest/internal/gtest-internal.h +gtest/internal/gtest-string.h +_deps/googletest-src/googletest/include/gtest/gtest/internal/gtest-string.h + +_deps/googletest-src/googletest/include/gtest/gtest-typed-test.h +gtest/internal/gtest-port.h +_deps/googletest-src/googletest/include/gtest/gtest/internal/gtest-port.h +gtest/internal/gtest-type-util.h +_deps/googletest-src/googletest/include/gtest/gtest/internal/gtest-type-util.h + +_deps/googletest-src/googletest/include/gtest/gtest.h +cstddef +- +limits +- +memory +- +ostream +- +type_traits +- +vector +- +gtest/internal/gtest-internal.h +_deps/googletest-src/googletest/include/gtest/gtest/internal/gtest-internal.h +gtest/internal/gtest-string.h +_deps/googletest-src/googletest/include/gtest/gtest/internal/gtest-string.h +gtest/gtest-death-test.h +_deps/googletest-src/googletest/include/gtest/gtest/gtest-death-test.h +gtest/gtest-matchers.h +_deps/googletest-src/googletest/include/gtest/gtest/gtest-matchers.h +gtest/gtest-message.h +_deps/googletest-src/googletest/include/gtest/gtest/gtest-message.h +gtest/gtest-param-test.h +_deps/googletest-src/googletest/include/gtest/gtest/gtest-param-test.h +gtest/gtest-printers.h +_deps/googletest-src/googletest/include/gtest/gtest/gtest-printers.h +gtest/gtest_prod.h +_deps/googletest-src/googletest/include/gtest/gtest/gtest_prod.h +gtest/gtest-test-part.h +_deps/googletest-src/googletest/include/gtest/gtest/gtest-test-part.h +gtest/gtest-typed-test.h +_deps/googletest-src/googletest/include/gtest/gtest/gtest-typed-test.h +gtest/gtest_pred_impl.h +_deps/googletest-src/googletest/include/gtest/gtest/gtest_pred_impl.h + +_deps/googletest-src/googletest/include/gtest/gtest_pred_impl.h +gtest/gtest.h +_deps/googletest-src/googletest/include/gtest/gtest/gtest.h + +_deps/googletest-src/googletest/include/gtest/gtest_prod.h + +_deps/googletest-src/googletest/include/gtest/internal/custom/gtest-port.h + +_deps/googletest-src/googletest/include/gtest/internal/custom/gtest-printers.h + +_deps/googletest-src/googletest/include/gtest/internal/gtest-death-test-internal.h +gtest/gtest-matchers.h +_deps/googletest-src/googletest/include/gtest/internal/gtest/gtest-matchers.h +gtest/internal/gtest-internal.h +_deps/googletest-src/googletest/include/gtest/internal/gtest/internal/gtest-internal.h +stdio.h +- +memory +- + +_deps/googletest-src/googletest/include/gtest/internal/gtest-filepath.h +gtest/internal/gtest-string.h +_deps/googletest-src/googletest/include/gtest/internal/gtest/internal/gtest-string.h + +_deps/googletest-src/googletest/include/gtest/internal/gtest-internal.h +gtest/internal/gtest-port.h +_deps/googletest-src/googletest/include/gtest/internal/gtest/internal/gtest-port.h +stdlib.h +- +sys/types.h +- +sys/wait.h +- +unistd.h +- +stdexcept +- +ctype.h +- +float.h +- +string.h +- +iomanip +- +limits +- +map +- +set +- +string +- +type_traits +- +vector +- +gtest/gtest-message.h +_deps/googletest-src/googletest/include/gtest/internal/gtest/gtest-message.h +gtest/internal/gtest-filepath.h +_deps/googletest-src/googletest/include/gtest/internal/gtest/internal/gtest-filepath.h +gtest/internal/gtest-string.h +_deps/googletest-src/googletest/include/gtest/internal/gtest/internal/gtest-string.h +gtest/internal/gtest-type-util.h +_deps/googletest-src/googletest/include/gtest/internal/gtest/internal/gtest-type-util.h + +_deps/googletest-src/googletest/include/gtest/internal/gtest-param-util.h +ctype.h +- +cassert +- +iterator +- +memory +- +set +- +tuple +- +utility +- +vector +- +gtest/internal/gtest-internal.h +_deps/googletest-src/googletest/include/gtest/internal/gtest/internal/gtest-internal.h +gtest/internal/gtest-port.h +_deps/googletest-src/googletest/include/gtest/internal/gtest/internal/gtest-port.h +gtest/gtest-printers.h +_deps/googletest-src/googletest/include/gtest/internal/gtest/gtest-printers.h + +_deps/googletest-src/googletest/include/gtest/internal/gtest-port-arch.h +winapifamily.h +- + +_deps/googletest-src/googletest/include/gtest/internal/gtest-port.h +ctype.h +- +stddef.h +- +stdio.h +- +stdlib.h +- +string.h +- +memory +- +type_traits +- +sys/types.h +- +sys/stat.h +- +AvailabilityMacros.h +- +TargetConditionals.h +- +algorithm +- +iostream +- +sstream +- +string +- +tuple +- +utility +- +vector +- +gtest/internal/gtest-port-arch.h +_deps/googletest-src/googletest/include/gtest/internal/gtest/internal/gtest-port-arch.h +gtest/internal/custom/gtest-port.h +_deps/googletest-src/googletest/include/gtest/internal/gtest/internal/custom/gtest-port.h +direct.h +- +io.h +- +unistd.h +- +strings.h +- +android/api-level.h +- +regex.h +- +typeinfo +- +pthread.h +- +time.h +- + +_deps/googletest-src/googletest/include/gtest/internal/gtest-string.h +mem.h +- +string.h +- +string +- +gtest/internal/gtest-port.h +_deps/googletest-src/googletest/include/gtest/internal/gtest/internal/gtest-port.h + +_deps/googletest-src/googletest/include/gtest/internal/gtest-type-util.h +gtest/internal/gtest-port.h +_deps/googletest-src/googletest/include/gtest/internal/gtest/internal/gtest-port.h +cxxabi.h +- +acxx_demangle.h +- + diff --git a/build/_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/DependInfo.cmake b/build/_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/DependInfo.cmake new file mode 100644 index 0000000000000000000000000000000000000000..2454fa020d32726b216178f2d718b3dd4327e7fd --- /dev/null +++ b/build/_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/DependInfo.cmake @@ -0,0 +1,29 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + "CXX" + ) +# The set of files for implicit dependencies of each language: +set(CMAKE_DEPENDS_CHECK_CXX + "/home/huchen/FAISS/faiss/build/_deps/googletest-src/googletest/src/gtest_main.cc" "/home/huchen/FAISS/faiss/build/_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o" + ) +set(CMAKE_CXX_COMPILER_ID "Clang") + +# Preprocessor definitions for this target. +set(CMAKE_TARGET_DEFINITIONS_CXX + "GTEST_CREATE_SHARED_LIBRARY=1" + "gtest_main_EXPORTS" + ) + +# The include file search paths: +set(CMAKE_CXX_TARGET_INCLUDE_PATH + "_deps/googletest-src/googletest/include" + "_deps/googletest-src/googletest" + ) + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + "/home/huchen/FAISS/faiss/build/_deps/googletest-build/googletest/CMakeFiles/gtest.dir/DependInfo.cmake" + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/build.make b/build/_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/build.make new file mode 100644 index 0000000000000000000000000000000000000000..d7de917549621b80adae2f6eda8d8b1bfece784c --- /dev/null +++ b/build/_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/build.make @@ -0,0 +1,119 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake3 + +# The command to remove a file. +RM = /usr/bin/cmake3 -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/huchen/FAISS/faiss + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/huchen/FAISS/faiss/build + +# Include any dependencies generated for this target. +include _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/depend.make + +# Include the progress variables for this target. +include _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/progress.make + +# Include the compile flags for this target's objects. +include _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/flags.make + +_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o: _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/flags.make +_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o: _deps/googletest-src/googletest/src/gtest_main.cc + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CXX object _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o" + cd /home/huchen/FAISS/faiss/build/_deps/googletest-build/googletest && /opt/dtk-21.04/bin/hipcc $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/gtest_main.dir/src/gtest_main.cc.o -c /home/huchen/FAISS/faiss/build/_deps/googletest-src/googletest/src/gtest_main.cc + +_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/gtest_main.dir/src/gtest_main.cc.i" + cd /home/huchen/FAISS/faiss/build/_deps/googletest-build/googletest && /opt/dtk-21.04/bin/hipcc $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/huchen/FAISS/faiss/build/_deps/googletest-src/googletest/src/gtest_main.cc > CMakeFiles/gtest_main.dir/src/gtest_main.cc.i + +_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/gtest_main.dir/src/gtest_main.cc.s" + cd /home/huchen/FAISS/faiss/build/_deps/googletest-build/googletest && /opt/dtk-21.04/bin/hipcc $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/huchen/FAISS/faiss/build/_deps/googletest-src/googletest/src/gtest_main.cc -o CMakeFiles/gtest_main.dir/src/gtest_main.cc.s + +# Object files for target gtest_main +gtest_main_OBJECTS = \ +"CMakeFiles/gtest_main.dir/src/gtest_main.cc.o" + +# External object files for target gtest_main +gtest_main_EXTERNAL_OBJECTS = + +lib/libgtest_main.so: _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o +lib/libgtest_main.so: _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/build.make +lib/libgtest_main.so: lib/libgtest.so +lib/libgtest_main.so: _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/home/huchen/FAISS/faiss/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Linking CXX shared library ../../../lib/libgtest_main.so" + cd /home/huchen/FAISS/faiss/build/_deps/googletest-build/googletest && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/gtest_main.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/build: lib/libgtest_main.so + +.PHONY : _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/build + +_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/clean: + cd /home/huchen/FAISS/faiss/build/_deps/googletest-build/googletest && $(CMAKE_COMMAND) -P CMakeFiles/gtest_main.dir/cmake_clean.cmake +.PHONY : _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/clean + +_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/depend: + cd /home/huchen/FAISS/faiss/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/huchen/FAISS/faiss /home/huchen/FAISS/faiss/build/_deps/googletest-src/googletest /home/huchen/FAISS/faiss/build /home/huchen/FAISS/faiss/build/_deps/googletest-build/googletest /home/huchen/FAISS/faiss/build/_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/depend + diff --git a/build/_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/cmake_clean.cmake b/build/_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/cmake_clean.cmake new file mode 100644 index 0000000000000000000000000000000000000000..f7ad543f5563f0c78af4598bd1e6d9fc220edfab --- /dev/null +++ b/build/_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/cmake_clean.cmake @@ -0,0 +1,10 @@ +file(REMOVE_RECURSE + "../../../bin/libgtest_main.pdb" + "../../../lib/libgtest_main.so" + "CMakeFiles/gtest_main.dir/src/gtest_main.cc.o" +) + +# Per-language clean rules from dependency scanning. +foreach(lang CXX) + include(CMakeFiles/gtest_main.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/depend.internal b/build/_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/depend.internal new file mode 100644 index 0000000000000000000000000000000000000000..de900a9bec6b6b7375161fef0e89111ae7b68de5 --- /dev/null +++ b/build/_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/depend.internal @@ -0,0 +1,25 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o + /home/huchen/FAISS/faiss/build/_deps/googletest-src/googletest/src/gtest_main.cc + _deps/googletest-src/googletest/include/gtest/gtest-death-test.h + _deps/googletest-src/googletest/include/gtest/gtest-matchers.h + _deps/googletest-src/googletest/include/gtest/gtest-message.h + _deps/googletest-src/googletest/include/gtest/gtest-param-test.h + _deps/googletest-src/googletest/include/gtest/gtest-printers.h + _deps/googletest-src/googletest/include/gtest/gtest-test-part.h + _deps/googletest-src/googletest/include/gtest/gtest-typed-test.h + _deps/googletest-src/googletest/include/gtest/gtest.h + _deps/googletest-src/googletest/include/gtest/gtest_pred_impl.h + _deps/googletest-src/googletest/include/gtest/gtest_prod.h + _deps/googletest-src/googletest/include/gtest/internal/custom/gtest-port.h + _deps/googletest-src/googletest/include/gtest/internal/custom/gtest-printers.h + _deps/googletest-src/googletest/include/gtest/internal/gtest-death-test-internal.h + _deps/googletest-src/googletest/include/gtest/internal/gtest-filepath.h + _deps/googletest-src/googletest/include/gtest/internal/gtest-internal.h + _deps/googletest-src/googletest/include/gtest/internal/gtest-param-util.h + _deps/googletest-src/googletest/include/gtest/internal/gtest-port-arch.h + _deps/googletest-src/googletest/include/gtest/internal/gtest-port.h + _deps/googletest-src/googletest/include/gtest/internal/gtest-string.h + _deps/googletest-src/googletest/include/gtest/internal/gtest-type-util.h diff --git a/build/_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/depend.make b/build/_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/depend.make new file mode 100644 index 0000000000000000000000000000000000000000..aa29612d321ecabd0cbf9fd2a8513abf70188649 --- /dev/null +++ b/build/_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/depend.make @@ -0,0 +1,25 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o: _deps/googletest-src/googletest/src/gtest_main.cc +_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o: _deps/googletest-src/googletest/include/gtest/gtest-death-test.h +_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o: _deps/googletest-src/googletest/include/gtest/gtest-matchers.h +_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o: _deps/googletest-src/googletest/include/gtest/gtest-message.h +_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o: _deps/googletest-src/googletest/include/gtest/gtest-param-test.h +_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o: _deps/googletest-src/googletest/include/gtest/gtest-printers.h +_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o: _deps/googletest-src/googletest/include/gtest/gtest-test-part.h +_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o: _deps/googletest-src/googletest/include/gtest/gtest-typed-test.h +_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o: _deps/googletest-src/googletest/include/gtest/gtest.h +_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o: _deps/googletest-src/googletest/include/gtest/gtest_pred_impl.h +_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o: _deps/googletest-src/googletest/include/gtest/gtest_prod.h +_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o: _deps/googletest-src/googletest/include/gtest/internal/custom/gtest-port.h +_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o: _deps/googletest-src/googletest/include/gtest/internal/custom/gtest-printers.h +_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o: _deps/googletest-src/googletest/include/gtest/internal/gtest-death-test-internal.h +_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o: _deps/googletest-src/googletest/include/gtest/internal/gtest-filepath.h +_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o: _deps/googletest-src/googletest/include/gtest/internal/gtest-internal.h +_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o: _deps/googletest-src/googletest/include/gtest/internal/gtest-param-util.h +_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o: _deps/googletest-src/googletest/include/gtest/internal/gtest-port-arch.h +_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o: _deps/googletest-src/googletest/include/gtest/internal/gtest-port.h +_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o: _deps/googletest-src/googletest/include/gtest/internal/gtest-string.h +_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o: _deps/googletest-src/googletest/include/gtest/internal/gtest-type-util.h + diff --git a/build/_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/flags.make b/build/_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/flags.make new file mode 100644 index 0000000000000000000000000000000000000000..7e3a05b386aa2e1bf85d25406f38b6a1e82e7519 --- /dev/null +++ b/build/_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# compile CXX with /opt/dtk-21.04/bin/hipcc +CXX_FLAGS = -fPIC -Wall -Wshadow -Werror -Wconversion -DGTEST_HAS_PTHREAD=1 -fexceptions -W -Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch -Wunused-parameter -Wcast-align -Wchar-subscripts -Winline -Wredundant-decls -pthread -std=c++11 + +CXX_DEFINES = -DGTEST_CREATE_SHARED_LIBRARY=1 -Dgtest_main_EXPORTS + +CXX_INCLUDES = -isystem /home/huchen/FAISS/faiss/build/_deps/googletest-src/googletest/include -isystem /home/huchen/FAISS/faiss/build/_deps/googletest-src/googletest + diff --git a/build/_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/link.txt b/build/_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/link.txt new file mode 100644 index 0000000000000000000000000000000000000000..a7f21af68c5d5a5ce9487fb8088afe03dc493716 --- /dev/null +++ b/build/_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/link.txt @@ -0,0 +1 @@ +/opt/dtk-21.04/bin/hipcc -fPIC -Wl,-rpath=/opt/rh/devtoolset-7/root/usr/lib64 -Wl,-rpath=/opt/rh/devtoolset-7/root/usr/lib -shared -Wl,-soname,libgtest_main.so -o ../../../lib/libgtest_main.so CMakeFiles/gtest_main.dir/src/gtest_main.cc.o -Wl,-rpath,/home/huchen/FAISS/faiss/build/lib ../../../lib/libgtest.so -pthread diff --git a/build/_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/progress.make b/build/_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/progress.make new file mode 100644 index 0000000000000000000000000000000000000000..102911a4db1275476fa61d16972289dd890d04cd --- /dev/null +++ b/build/_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/progress.make @@ -0,0 +1,3 @@ +CMAKE_PROGRESS_1 = 98 +CMAKE_PROGRESS_2 = + diff --git a/build/_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o b/build/_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o new file mode 100644 index 0000000000000000000000000000000000000000..1a1583538cba5b98ef26931ca6a332585827a435 Binary files /dev/null and b/build/_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o differ diff --git a/build/_deps/googletest-build/googletest/CMakeFiles/progress.marks b/build/_deps/googletest-build/googletest/CMakeFiles/progress.marks new file mode 100644 index 0000000000000000000000000000000000000000..d00491fd7e5bb6fa28c517a0bb32b8b506539d4d --- /dev/null +++ b/build/_deps/googletest-build/googletest/CMakeFiles/progress.marks @@ -0,0 +1 @@ +1 diff --git a/build/_deps/googletest-build/googletest/CTestTestfile.cmake b/build/_deps/googletest-build/googletest/CTestTestfile.cmake new file mode 100644 index 0000000000000000000000000000000000000000..5643fd969d0e6a6b346116bc3beb9f8057085378 --- /dev/null +++ b/build/_deps/googletest-build/googletest/CTestTestfile.cmake @@ -0,0 +1,6 @@ +# CMake generated Testfile for +# Source directory: /home/huchen/FAISS/faiss/build/_deps/googletest-src/googletest +# Build directory: /home/huchen/FAISS/faiss/build/_deps/googletest-build/googletest +# +# This file includes the relevant testing commands required for +# testing this directory and lists subdirectories to be tested as well. diff --git a/build/_deps/googletest-build/googletest/Makefile b/build/_deps/googletest-build/googletest/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..d497475f1516f97c29953398c77cf9a72e73b6e3 --- /dev/null +++ b/build/_deps/googletest-build/googletest/Makefile @@ -0,0 +1,308 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.17 + +# Default target executed when no arguments are given to make. +default_target: all + +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake3 + +# The command to remove a file. +RM = /usr/bin/cmake3 -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/huchen/FAISS/faiss + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/huchen/FAISS/faiss/build + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake3 -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake3 -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip/fast + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake3 -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake3 -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake3 -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake3 -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Unspecified\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components + +.PHONY : list_install_components/fast + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake cache editor..." + /usr/bin/ccmake3 -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache + +.PHONY : edit_cache/fast + +# Special rule for the target test +test: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running tests..." + /usr/bin/ctest3 --force-new-ctest-process $(ARGS) +.PHONY : test + +# Special rule for the target test +test/fast: test + +.PHONY : test/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake3 --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache + +.PHONY : rebuild_cache/fast + +# The main all target +all: cmake_check_build_system + cd /home/huchen/FAISS/faiss/build && $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles /home/huchen/FAISS/faiss/build/_deps/googletest-build/googletest/CMakeFiles/progress.marks + cd /home/huchen/FAISS/faiss/build && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 _deps/googletest-build/googletest/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/huchen/FAISS/faiss/build/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + cd /home/huchen/FAISS/faiss/build && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 _deps/googletest-build/googletest/clean +.PHONY : clean + +# The main clean target +clean/fast: clean + +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + cd /home/huchen/FAISS/faiss/build && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 _deps/googletest-build/googletest/preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + cd /home/huchen/FAISS/faiss/build && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 _deps/googletest-build/googletest/preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + cd /home/huchen/FAISS/faiss/build && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +# Convenience name for target. +_deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/rule: + cd /home/huchen/FAISS/faiss/build && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/rule +.PHONY : _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/rule + +# Convenience name for target. +gtest_main: _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/rule + +.PHONY : gtest_main + +# fast build rule for target. +gtest_main/fast: + cd /home/huchen/FAISS/faiss/build && $(MAKE) $(MAKESILENT) -f _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/build.make _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/build +.PHONY : gtest_main/fast + +# Convenience name for target. +_deps/googletest-build/googletest/CMakeFiles/gtest.dir/rule: + cd /home/huchen/FAISS/faiss/build && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 _deps/googletest-build/googletest/CMakeFiles/gtest.dir/rule +.PHONY : _deps/googletest-build/googletest/CMakeFiles/gtest.dir/rule + +# Convenience name for target. +gtest: _deps/googletest-build/googletest/CMakeFiles/gtest.dir/rule + +.PHONY : gtest + +# fast build rule for target. +gtest/fast: + cd /home/huchen/FAISS/faiss/build && $(MAKE) $(MAKESILENT) -f _deps/googletest-build/googletest/CMakeFiles/gtest.dir/build.make _deps/googletest-build/googletest/CMakeFiles/gtest.dir/build +.PHONY : gtest/fast + +src/gtest-all.o: src/gtest-all.cc.o + +.PHONY : src/gtest-all.o + +# target to build an object file +src/gtest-all.cc.o: + cd /home/huchen/FAISS/faiss/build && $(MAKE) $(MAKESILENT) -f _deps/googletest-build/googletest/CMakeFiles/gtest.dir/build.make _deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o +.PHONY : src/gtest-all.cc.o + +src/gtest-all.i: src/gtest-all.cc.i + +.PHONY : src/gtest-all.i + +# target to preprocess a source file +src/gtest-all.cc.i: + cd /home/huchen/FAISS/faiss/build && $(MAKE) $(MAKESILENT) -f _deps/googletest-build/googletest/CMakeFiles/gtest.dir/build.make _deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.i +.PHONY : src/gtest-all.cc.i + +src/gtest-all.s: src/gtest-all.cc.s + +.PHONY : src/gtest-all.s + +# target to generate assembly for a file +src/gtest-all.cc.s: + cd /home/huchen/FAISS/faiss/build && $(MAKE) $(MAKESILENT) -f _deps/googletest-build/googletest/CMakeFiles/gtest.dir/build.make _deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.s +.PHONY : src/gtest-all.cc.s + +src/gtest_main.o: src/gtest_main.cc.o + +.PHONY : src/gtest_main.o + +# target to build an object file +src/gtest_main.cc.o: + cd /home/huchen/FAISS/faiss/build && $(MAKE) $(MAKESILENT) -f _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/build.make _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o +.PHONY : src/gtest_main.cc.o + +src/gtest_main.i: src/gtest_main.cc.i + +.PHONY : src/gtest_main.i + +# target to preprocess a source file +src/gtest_main.cc.i: + cd /home/huchen/FAISS/faiss/build && $(MAKE) $(MAKESILENT) -f _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/build.make _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.i +.PHONY : src/gtest_main.cc.i + +src/gtest_main.s: src/gtest_main.cc.s + +.PHONY : src/gtest_main.s + +# target to generate assembly for a file +src/gtest_main.cc.s: + cd /home/huchen/FAISS/faiss/build && $(MAKE) $(MAKESILENT) -f _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/build.make _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.s +.PHONY : src/gtest_main.cc.s + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... edit_cache" + @echo "... install" + @echo "... install/local" + @echo "... install/strip" + @echo "... list_install_components" + @echo "... rebuild_cache" + @echo "... test" + @echo "... gtest" + @echo "... gtest_main" + @echo "... src/gtest-all.o" + @echo "... src/gtest-all.i" + @echo "... src/gtest-all.s" + @echo "... src/gtest_main.o" + @echo "... src/gtest_main.i" + @echo "... src/gtest_main.s" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + cd /home/huchen/FAISS/faiss/build && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/build/_deps/googletest-build/googletest/cmake_install.cmake b/build/_deps/googletest-build/googletest/cmake_install.cmake new file mode 100644 index 0000000000000000000000000000000000000000..203f4cc91ac4086f6e005d63340dbfedaf7a58fa --- /dev/null +++ b/build/_deps/googletest-build/googletest/cmake_install.cmake @@ -0,0 +1,39 @@ +# Install script for directory: /home/huchen/FAISS/faiss/build/_deps/googletest-src/googletest + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "0") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + diff --git a/build/_deps/googletest-src/.clang-format b/build/_deps/googletest-src/.clang-format new file mode 100644 index 0000000000000000000000000000000000000000..5b9bfe6d224232981ada90cee232c716afbdf09d --- /dev/null +++ b/build/_deps/googletest-src/.clang-format @@ -0,0 +1,4 @@ +# Run manually to reformat a file: +# clang-format -i --style=file +Language: Cpp +BasedOnStyle: Google diff --git a/build/_deps/googletest-src/.gitignore b/build/_deps/googletest-src/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..f08cb72a33cd199478f41be1bd487f916330472c --- /dev/null +++ b/build/_deps/googletest-src/.gitignore @@ -0,0 +1,84 @@ +# Ignore CI build directory +build/ +xcuserdata +cmake-build-debug/ +.idea/ +bazel-bin +bazel-genfiles +bazel-googletest +bazel-out +bazel-testlogs +# python +*.pyc + +# Visual Studio files +.vs +*.sdf +*.opensdf +*.VC.opendb +*.suo +*.user +_ReSharper.Caches/ +Win32-Debug/ +Win32-Release/ +x64-Debug/ +x64-Release/ + +# Ignore autoconf / automake files +Makefile.in +aclocal.m4 +configure +build-aux/ +autom4te.cache/ +googletest/m4/libtool.m4 +googletest/m4/ltoptions.m4 +googletest/m4/ltsugar.m4 +googletest/m4/ltversion.m4 +googletest/m4/lt~obsolete.m4 +googlemock/m4 + +# Ignore generated directories. +googlemock/fused-src/ +googletest/fused-src/ + +# macOS files +.DS_Store +googletest/.DS_Store +googletest/xcode/.DS_Store + +# Ignore cmake generated directories and files. +CMakeFiles +CTestTestfile.cmake +Makefile +cmake_install.cmake +googlemock/CMakeFiles +googlemock/CTestTestfile.cmake +googlemock/Makefile +googlemock/cmake_install.cmake +googlemock/gtest +/bin +/googlemock/gmock.dir +/googlemock/gmock_main.dir +/googlemock/RUN_TESTS.vcxproj.filters +/googlemock/RUN_TESTS.vcxproj +/googlemock/INSTALL.vcxproj.filters +/googlemock/INSTALL.vcxproj +/googlemock/gmock_main.vcxproj.filters +/googlemock/gmock_main.vcxproj +/googlemock/gmock.vcxproj.filters +/googlemock/gmock.vcxproj +/googlemock/gmock.sln +/googlemock/ALL_BUILD.vcxproj.filters +/googlemock/ALL_BUILD.vcxproj +/lib +/Win32 +/ZERO_CHECK.vcxproj.filters +/ZERO_CHECK.vcxproj +/RUN_TESTS.vcxproj.filters +/RUN_TESTS.vcxproj +/INSTALL.vcxproj.filters +/INSTALL.vcxproj +/googletest-distribution.sln +/CMakeCache.txt +/ALL_BUILD.vcxproj.filters +/ALL_BUILD.vcxproj diff --git a/build/_deps/googletest-src/.travis.yml b/build/_deps/googletest-src/.travis.yml new file mode 100644 index 0000000000000000000000000000000000000000..04b51ddec9185508843d3530d6ae585cfa7c44b7 --- /dev/null +++ b/build/_deps/googletest-src/.travis.yml @@ -0,0 +1,73 @@ +# Build matrix / environment variable are explained on: +# https://docs.travis-ci.com/user/customizing-the-build/ +# This file can be validated on: +# http://lint.travis-ci.org/ + +language: cpp + +# Define the matrix explicitly, manually expanding the combinations of (os, compiler, env). +# It is more tedious, but grants us far more flexibility. +matrix: + include: + - os: linux + before_install: chmod -R +x ./ci/*platformio.sh + install: ./ci/install-platformio.sh + script: ./ci/build-platformio.sh + - os: linux + dist: xenial + compiler: gcc + install: ./ci/install-linux.sh && ./ci/log-config.sh + script: ./ci/build-linux-bazel.sh + - os: linux + dist: xenial + compiler: clang + install: ./ci/install-linux.sh && ./ci/log-config.sh + script: ./ci/build-linux-bazel.sh + - os: linux + compiler: gcc + env: BUILD_TYPE=Debug VERBOSE=1 CXX_FLAGS=-std=c++11 + - os: linux + compiler: clang + env: BUILD_TYPE=Release VERBOSE=1 CXX_FLAGS=-std=c++11 -Wgnu-zero-variadic-macro-arguments + - os: linux + compiler: clang + env: BUILD_TYPE=Release VERBOSE=1 CXX_FLAGS=-std=c++11 NO_EXCEPTION=ON NO_RTTI=ON COMPILER_IS_GNUCXX=ON + - os: osx + compiler: gcc + env: BUILD_TYPE=Release VERBOSE=1 CXX_FLAGS=-std=c++11 HOMEBREW_LOGS=~/homebrew-logs HOMEBREW_TEMP=~/homebrew-temp + - os: osx + compiler: clang + env: BUILD_TYPE=Release VERBOSE=1 CXX_FLAGS=-std=c++11 HOMEBREW_LOGS=~/homebrew-logs HOMEBREW_TEMP=~/homebrew-temp + +# These are the install and build (script) phases for the most common entries in the matrix. They could be included +# in each entry in the matrix, but that is just repetitive. +install: + - ./ci/install-${TRAVIS_OS_NAME}.sh + - . ./ci/env-${TRAVIS_OS_NAME}.sh + - ./ci/log-config.sh + +script: ./ci/travis.sh + +# This section installs the necessary dependencies. +addons: + apt: + # List of whitelisted in travis packages for ubuntu-precise can be found here: + # https://github.com/travis-ci/apt-package-whitelist/blob/master/ubuntu-precise + # List of whitelisted in travis apt-sources: + # https://github.com/travis-ci/apt-source-whitelist/blob/master/ubuntu.json + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.9 + packages: + - g++-4.9 + - clang-3.9 + update: true + homebrew: + packages: + - ccache + - gcc@4.9 + - llvm@4 + update: true + +notifications: + email: false diff --git a/build/_deps/googletest-src/BUILD.bazel b/build/_deps/googletest-src/BUILD.bazel new file mode 100644 index 0000000000000000000000000000000000000000..9b48aee530811e6744bf40eea40cb48312110847 --- /dev/null +++ b/build/_deps/googletest-src/BUILD.bazel @@ -0,0 +1,179 @@ +# Copyright 2017 Google Inc. +# 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 Google Inc. 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 +# OWNER 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. +# +# Bazel Build for Google C++ Testing Framework(Google Test) + +load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") + +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +config_setting( + name = "windows", + constraint_values = ["@bazel_tools//platforms:windows"], +) + +config_setting( + name = "has_absl", + values = {"define": "absl=1"}, +) + +# Library that defines the FRIEND_TEST macro. +cc_library( + name = "gtest_prod", + hdrs = ["googletest/include/gtest/gtest_prod.h"], + includes = ["googletest/include"], +) + +# Google Test including Google Mock +cc_library( + name = "gtest", + srcs = glob( + include = [ + "googletest/src/*.cc", + "googletest/src/*.h", + "googletest/include/gtest/**/*.h", + "googlemock/src/*.cc", + "googlemock/include/gmock/**/*.h", + ], + exclude = [ + "googletest/src/gtest-all.cc", + "googletest/src/gtest_main.cc", + "googlemock/src/gmock-all.cc", + "googlemock/src/gmock_main.cc", + ], + ), + hdrs = glob([ + "googletest/include/gtest/*.h", + "googlemock/include/gmock/*.h", + ]), + copts = select({ + ":windows": [], + "//conditions:default": ["-pthread"], + }), + defines = select({ + ":has_absl": ["GTEST_HAS_ABSL=1"], + "//conditions:default": [], + }), + features = select({ + ":windows": ["windows_export_all_symbols"], + "//conditions:default": [], + }), + includes = [ + "googlemock", + "googlemock/include", + "googletest", + "googletest/include", + ], + linkopts = select({ + ":windows": [], + "//conditions:default": ["-pthread"], + }), + deps = select({ + ":has_absl": [ + "@com_google_absl//absl/debugging:failure_signal_handler", + "@com_google_absl//absl/debugging:stacktrace", + "@com_google_absl//absl/debugging:symbolize", + "@com_google_absl//absl/strings", + "@com_google_absl//absl/types:optional", + "@com_google_absl//absl/types:variant", + ], + "//conditions:default": [], + }), +) + +cc_library( + name = "gtest_main", + srcs = ["googlemock/src/gmock_main.cc"], + features = select({ + ":windows": ["windows_export_all_symbols"], + "//conditions:default": [], + }), + deps = [":gtest"], +) + +# The following rules build samples of how to use gTest. +cc_library( + name = "gtest_sample_lib", + srcs = [ + "googletest/samples/sample1.cc", + "googletest/samples/sample2.cc", + "googletest/samples/sample4.cc", + ], + hdrs = [ + "googletest/samples/prime_tables.h", + "googletest/samples/sample1.h", + "googletest/samples/sample2.h", + "googletest/samples/sample3-inl.h", + "googletest/samples/sample4.h", + ], + features = select({ + ":windows": ["windows_export_all_symbols"], + "//conditions:default": [], + }), +) + +cc_test( + name = "gtest_samples", + size = "small", + # All Samples except: + # sample9 (main) + # sample10 (main and takes a command line option and needs to be separate) + srcs = [ + "googletest/samples/sample1_unittest.cc", + "googletest/samples/sample2_unittest.cc", + "googletest/samples/sample3_unittest.cc", + "googletest/samples/sample4_unittest.cc", + "googletest/samples/sample5_unittest.cc", + "googletest/samples/sample6_unittest.cc", + "googletest/samples/sample7_unittest.cc", + "googletest/samples/sample8_unittest.cc", + ], + linkstatic = 0, + deps = [ + "gtest_sample_lib", + ":gtest_main", + ], +) + +cc_test( + name = "sample9_unittest", + size = "small", + srcs = ["googletest/samples/sample9_unittest.cc"], + deps = [":gtest"], +) + +cc_test( + name = "sample10_unittest", + size = "small", + srcs = ["googletest/samples/sample10_unittest.cc"], + deps = [":gtest"], +) diff --git a/build/_deps/googletest-src/CMakeLists.txt b/build/_deps/googletest-src/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..f11bbb521e387a19e060be596d8776b94be0d68c --- /dev/null +++ b/build/_deps/googletest-src/CMakeLists.txt @@ -0,0 +1,36 @@ +# Note: CMake support is community-based. The maintainers do not use CMake +# internally. + +cmake_minimum_required(VERSION 2.8.8) + +if (POLICY CMP0048) + cmake_policy(SET CMP0048 NEW) +endif (POLICY CMP0048) + +project(googletest-distribution) +set(GOOGLETEST_VERSION 1.10.0) + +if (CMAKE_VERSION VERSION_LESS "3.1") + add_definitions(-std=c++11) +else() + set(CMAKE_CXX_STANDARD 11) + set(CMAKE_CXX_STANDARD_REQUIRED ON) + if(NOT CYGWIN) + set(CMAKE_CXX_EXTENSIONS OFF) + endif() +endif() + +enable_testing() + +include(CMakeDependentOption) +include(GNUInstallDirs) + +#Note that googlemock target already builds googletest +option(BUILD_GMOCK "Builds the googlemock subproject" ON) +option(INSTALL_GTEST "Enable installation of googletest. (Projects embedding googletest may want to turn this OFF.)" ON) + +if(BUILD_GMOCK) + add_subdirectory( googlemock ) +else() + add_subdirectory( googletest ) +endif() diff --git a/build/_deps/googletest-src/CONTRIBUTING.md b/build/_deps/googletest-src/CONTRIBUTING.md new file mode 100644 index 0000000000000000000000000000000000000000..30c8d8900b6d830839271bbf71c58df0148c7f17 --- /dev/null +++ b/build/_deps/googletest-src/CONTRIBUTING.md @@ -0,0 +1,142 @@ +# How to become a contributor and submit your own code + +## Contributor License Agreements + +We'd love to accept your patches! Before we can take them, we have to jump a +couple of legal hurdles. + +Please fill out either the individual or corporate Contributor License Agreement +(CLA). + +* If you are an individual writing original source code and you're sure you + own the intellectual property, then you'll need to sign an + [individual CLA](https://developers.google.com/open-source/cla/individual). +* If you work for a company that wants to allow you to contribute your work, + then you'll need to sign a + [corporate CLA](https://developers.google.com/open-source/cla/corporate). + +Follow either of the two links above to access the appropriate CLA and +instructions for how to sign and return it. Once we receive it, we'll be able to +accept your pull requests. + +## Are you a Googler? + +If you are a Googler, please make an attempt to submit an internal change rather +than a GitHub Pull Request. If you are not able to submit an internal change a +PR is acceptable as an alternative. + +## Contributing A Patch + +1. Submit an issue describing your proposed change to the + [issue tracker](https://github.com/google/googletest). +2. Please don't mix more than one logical change per submittal, because it + makes the history hard to follow. If you want to make a change that doesn't + have a corresponding issue in the issue tracker, please create one. +3. Also, coordinate with team members that are listed on the issue in question. + This ensures that work isn't being duplicated and communicating your plan + early also generally leads to better patches. +4. If your proposed change is accepted, and you haven't already done so, sign a + Contributor License Agreement (see details above). +5. Fork the desired repo, develop and test your code changes. +6. Ensure that your code adheres to the existing style in the sample to which + you are contributing. +7. Ensure that your code has an appropriate set of unit tests which all pass. +8. Submit a pull request. + +## The Google Test and Google Mock Communities + +The Google Test community exists primarily through the +[discussion group](http://groups.google.com/group/googletestframework) and the +GitHub repository. Likewise, the Google Mock community exists primarily through +their own [discussion group](http://groups.google.com/group/googlemock). You are +definitely encouraged to contribute to the discussion and you can also help us +to keep the effectiveness of the group high by following and promoting the +guidelines listed here. + +### Please Be Friendly + +Showing courtesy and respect to others is a vital part of the Google culture, +and we strongly encourage everyone participating in Google Test development to +join us in accepting nothing less. Of course, being courteous is not the same as +failing to constructively disagree with each other, but it does mean that we +should be respectful of each other when enumerating the 42 technical reasons +that a particular proposal may not be the best choice. There's never a reason to +be antagonistic or dismissive toward anyone who is sincerely trying to +contribute to a discussion. + +Sure, C++ testing is serious business and all that, but it's also a lot of fun. +Let's keep it that way. Let's strive to be one of the friendliest communities in +all of open source. + +As always, discuss Google Test in the official GoogleTest discussion group. You +don't have to actually submit code in order to sign up. Your participation +itself is a valuable contribution. + +## Style + +To keep the source consistent, readable, diffable and easy to merge, we use a +fairly rigid coding style, as defined by the +[google-styleguide](https://github.com/google/styleguide) project. All patches +will be expected to conform to the style outlined +[here](https://google.github.io/styleguide/cppguide.html). Use +[.clang-format](https://github.com/google/googletest/blob/master/.clang-format) +to check your formatting + +## Requirements for Contributors + +If you plan to contribute a patch, you need to build Google Test, Google Mock, +and their own tests from a git checkout, which has further requirements: + +* [Python](https://www.python.org/) v2.3 or newer (for running some of the + tests and re-generating certain source files from templates) +* [CMake](https://cmake.org/) v2.6.4 or newer + +## Developing Google Test and Google Mock + +This section discusses how to make your own changes to the Google Test project. + +### Testing Google Test and Google Mock Themselves + +To make sure your changes work as intended and don't break existing +functionality, you'll want to compile and run Google Test and GoogleMock's own +tests. For that you can use CMake: + + mkdir mybuild + cd mybuild + cmake -Dgtest_build_tests=ON -Dgmock_build_tests=ON ${GTEST_REPO_DIR} + +To choose between building only Google Test or Google Mock, you may modify your +cmake command to be one of each + + cmake -Dgtest_build_tests=ON ${GTEST_DIR} # sets up Google Test tests + cmake -Dgmock_build_tests=ON ${GMOCK_DIR} # sets up Google Mock tests + +Make sure you have Python installed, as some of Google Test's tests are written +in Python. If the cmake command complains about not being able to find Python +(`Could NOT find PythonInterp (missing: PYTHON_EXECUTABLE)`), try telling it +explicitly where your Python executable can be found: + + cmake -DPYTHON_EXECUTABLE=path/to/python ... + +Next, you can build Google Test and / or Google Mock and all desired tests. On +\*nix, this is usually done by + + make + +To run the tests, do + + make test + +All tests should pass. + +### Regenerating Source Files + +Some of Google Test's source files are generated from templates (not in the C++ +sense) using a script. For example, the file +include/gtest/internal/gtest-type-util.h.pump is used to generate +gtest-type-util.h in the same directory. + +You don't need to worry about regenerating the source files unless you need to +modify them. You would then modify the corresponding `.pump` files and run the +'[pump.py](googletest/scripts/pump.py)' generator script. See the +[Pump Manual](googletest/docs/pump_manual.md). diff --git a/build/_deps/googletest-src/LICENSE b/build/_deps/googletest-src/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..1941a11f8ce94389160b458927a29ba217542818 --- /dev/null +++ b/build/_deps/googletest-src/LICENSE @@ -0,0 +1,28 @@ +Copyright 2008, Google Inc. +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 Google Inc. 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 +OWNER 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. diff --git a/build/_deps/googletest-src/README.md b/build/_deps/googletest-src/README.md new file mode 100644 index 0000000000000000000000000000000000000000..5b417fa883fa3564c88c724b702e0069b62a6863 --- /dev/null +++ b/build/_deps/googletest-src/README.md @@ -0,0 +1,134 @@ +# Google Test + +#### OSS Builds Status: + +[![Build Status](https://api.travis-ci.org/google/googletest.svg?branch=master)](https://travis-ci.org/google/googletest) +[![Build status](https://ci.appveyor.com/api/projects/status/4o38plt0xbo1ubc8/branch/master?svg=true)](https://ci.appveyor.com/project/GoogleTestAppVeyor/googletest/branch/master) + +### Future Plans + +#### 1.8.x Release: + +[the 1.8.x](https://github.com/google/googletest/releases/tag/release-1.8.1) is +the last release that works with pre-C++11 compilers. The 1.8.x will not accept +any requests for any new features and any bugfix requests will only be accepted +if proven "critical" + +#### Post 1.8.x: + +On-going work to improve/cleanup/pay technical debt. When this work is completed +there will be a 1.9.x tagged release + +#### Post 1.9.x + +Post 1.9.x googletest will follow +[Abseil Live at Head philosophy](https://abseil.io/about/philosophy) + +## Welcome to **Google Test**, Google's C++ test framework! + +This repository is a merger of the formerly separate GoogleTest and GoogleMock +projects. These were so closely related that it makes sense to maintain and +release them together. + +Please subscribe to the mailing list at googletestframework@googlegroups.com for +questions, discussions, and development. + +### Getting started: + +The information for **Google Test** is available in the +[Google Test Primer](googletest/docs/primer.md) documentation. + +**Google Mock** is an extension to Google Test for writing and using C++ mock +classes. See the separate [Google Mock documentation](googlemock/README.md). + +More detailed documentation for googletest is in its interior +[googletest/README.md](googletest/README.md) file. + +## Features + +* An [xUnit](https://en.wikipedia.org/wiki/XUnit) test framework. +* Test discovery. +* A rich set of assertions. +* User-defined assertions. +* Death tests. +* Fatal and non-fatal failures. +* Value-parameterized tests. +* Type-parameterized tests. +* Various options for running the tests. +* XML test report generation. + +## Platforms + +Google test has been used on a variety of platforms: + +* Linux +* Mac OS X +* Windows +* Cygwin +* MinGW +* Windows Mobile +* Symbian +* PlatformIO + +## Who Is Using Google Test? + +In addition to many internal projects at Google, Google Test is also used by the +following notable projects: + +* The [Chromium projects](http://www.chromium.org/) (behind the Chrome browser + and Chrome OS). +* The [LLVM](http://llvm.org/) compiler. +* [Protocol Buffers](https://github.com/google/protobuf), Google's data + interchange format. +* The [OpenCV](http://opencv.org/) computer vision library. +* [tiny-dnn](https://github.com/tiny-dnn/tiny-dnn): header only, + dependency-free deep learning framework in C++11. + +## Related Open Source Projects + +[GTest Runner](https://github.com/nholthaus/gtest-runner) is a Qt5 based +automated test-runner and Graphical User Interface with powerful features for +Windows and Linux platforms. + +[Google Test UI](https://github.com/ospector/gtest-gbar) is test runner that +runs your test binary, allows you to track its progress via a progress bar, and +displays a list of test failures. Clicking on one shows failure text. Google +Test UI is written in C#. + +[GTest TAP Listener](https://github.com/kinow/gtest-tap-listener) is an event +listener for Google Test that implements the +[TAP protocol](https://en.wikipedia.org/wiki/Test_Anything_Protocol) for test +result output. If your test runner understands TAP, you may find it useful. + +[gtest-parallel](https://github.com/google/gtest-parallel) is a test runner that +runs tests from your binary in parallel to provide significant speed-up. + +[GoogleTest Adapter](https://marketplace.visualstudio.com/items?itemName=DavidSchuldenfrei.gtest-adapter) +is a VS Code extension allowing to view Google Tests in a tree view, and +run/debug your tests. + +## Requirements + +Google Test is designed to have fairly minimal requirements to build and use +with your projects, but there are some. If you notice any problems on your +platform, please notify +[googletestframework@googlegroups.com](https://groups.google.com/forum/#!forum/googletestframework). +Patches for fixing them are welcome! + +### Build Requirements + +These are the base requirements to build and use Google Test from a source +package: + +* [Bazel](https://bazel.build/) or [CMake](https://cmake.org/). NOTE: Bazel is + the build system that googletest is using internally and tests against. + CMake is community-supported. + +* a C++11-standard-compliant compiler + +## Contributing change + +Please read the [`CONTRIBUTING.md`](CONTRIBUTING.md) for details on how to +contribute to this project. + +Happy testing! diff --git a/build/_deps/googletest-src/WORKSPACE b/build/_deps/googletest-src/WORKSPACE new file mode 100644 index 0000000000000000000000000000000000000000..2289bdb7e8f09335055c864fe3f013d786c04d32 --- /dev/null +++ b/build/_deps/googletest-src/WORKSPACE @@ -0,0 +1,23 @@ +workspace(name = "com_google_googletest") + +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") + +# Abseil +http_archive( + name = "com_google_absl", + urls = ["https://github.com/abseil/abseil-cpp/archive/master.zip"], + strip_prefix = "abseil-cpp-master", +) + +http_archive( + name = "rules_cc", + strip_prefix = "rules_cc-master", + urls = ["https://github.com/bazelbuild/rules_cc/archive/master.zip"], +) + +http_archive( + name = "rules_python", + strip_prefix = "rules_python-master", + urls = ["https://github.com/bazelbuild/rules_python/archive/master.zip"], +) + diff --git a/build/_deps/googletest-src/appveyor.yml b/build/_deps/googletest-src/appveyor.yml new file mode 100644 index 0000000000000000000000000000000000000000..a58b7687d70028beaac0154171523466ee84fd56 --- /dev/null +++ b/build/_deps/googletest-src/appveyor.yml @@ -0,0 +1,154 @@ +version: '{build}' + +os: Visual Studio 2015 + +environment: + matrix: + - compiler: msvc-15-seh + generator: "Visual Studio 15 2017" + build_system: cmake + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + + - compiler: msvc-15-seh + generator: "Visual Studio 15 2017 Win64" + build_system: cmake + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + enabled_on_pr: yes + + - compiler: msvc-15-seh + build_system: bazel + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + enabled_on_pr: yes + + - compiler: msvc-14-seh + build_system: cmake + generator: "Visual Studio 14 2015" + enabled_on_pr: yes + + - compiler: msvc-14-seh + build_system: cmake + generator: "Visual Studio 14 2015 Win64" + + - compiler: gcc-6.3.0-posix + build_system: cmake + generator: "MinGW Makefiles" + cxx_path: 'C:\mingw-w64\i686-6.3.0-posix-dwarf-rt_v5-rev1\mingw32\bin' + enabled_on_pr: yes + +configuration: + - Debug + +build: + verbosity: minimal + +install: +- ps: | + Write-Output "Compiler: $env:compiler" + Write-Output "Generator: $env:generator" + Write-Output "Env:Configuation: $env:configuration" + Write-Output "Env: $env" + if (-not (Test-Path env:APPVEYOR_PULL_REQUEST_NUMBER)) { + Write-Output "This is *NOT* a pull request build" + } else { + Write-Output "This is a pull request build" + if (-not (Test-Path env:enabled_on_pr) -or $env:enabled_on_pr -ne "yes") { + Write-Output "PR builds are *NOT* explicitly enabled" + } + } + + # install Bazel + if ($env:build_system -eq "bazel") { + appveyor DownloadFile https://github.com/bazelbuild/bazel/releases/download/0.28.1/bazel-0.28.1-windows-x86_64.exe -FileName bazel.exe + } + + if ($env:build_system -eq "cmake") { + # git bash conflicts with MinGW makefiles + if ($env:generator -eq "MinGW Makefiles") { + $env:path = $env:path.replace("C:\Program Files\Git\usr\bin;", "") + if ($env:cxx_path -ne "") { + $env:path += ";$env:cxx_path" + } + } + } + +before_build: +- ps: | + $env:root=$env:APPVEYOR_BUILD_FOLDER + Write-Output "env:root: $env:root" + +build_script: +- ps: | + # Only enable some builds for pull requests, the AppVeyor queue is too long. + if ((Test-Path env:APPVEYOR_PULL_REQUEST_NUMBER) -And (-not (Test-Path env:enabled_on_pr) -or $env:enabled_on_pr -ne "yes")) { + return + } else { + # special case - build with Bazel + if ($env:build_system -eq "bazel") { + & $env:root\bazel.exe build -c opt //:gtest_samples + if ($LastExitCode -eq 0) { # bazel writes to StdErr and PowerShell interprets it as an error + $host.SetShouldExit(0) + } else { # a real error + throw "Exec: $ErrorMessage" + } + return + } + } + # by default build with CMake + md _build -Force | Out-Null + cd _build + + $conf = if ($env:generator -eq "MinGW Makefiles") {"-DCMAKE_BUILD_TYPE=$env:configuration"} else {"-DCMAKE_CONFIGURATION_TYPES=Debug;Release"} + # Disable test for MinGW (gtest tests fail, gmock tests can not build) + $gtest_build_tests = if ($env:generator -eq "MinGW Makefiles") {"-Dgtest_build_tests=OFF"} else {"-Dgtest_build_tests=ON"} + $gmock_build_tests = if ($env:generator -eq "MinGW Makefiles") {"-Dgmock_build_tests=OFF"} else {"-Dgmock_build_tests=ON"} + & cmake -G "$env:generator" $conf -Dgtest_build_samples=ON $gtest_build_tests $gmock_build_tests .. + if ($LastExitCode -ne 0) { + throw "Exec: $ErrorMessage" + } + $cmake_parallel = if ($env:generator -eq "MinGW Makefiles") {"-j2"} else {"/m"} + & cmake --build . --config $env:configuration -- $cmake_parallel + if ($LastExitCode -ne 0) { + throw "Exec: $ErrorMessage" + } + + +skip_commits: + files: + - '**/*.md' + +test_script: +- ps: | + # Only enable some builds for pull requests, the AppVeyor queue is too long. + if ((Test-Path env:APPVEYOR_PULL_REQUEST_NUMBER) -And (-not (Test-Path env:enabled_on_pr) -or $env:enabled_on_pr -ne "yes")) { + return + } + if ($env:build_system -eq "bazel") { + # special case - testing with Bazel + & $env:root\bazel.exe test //:gtest_samples + if ($LastExitCode -eq 0) { # bazel writes to StdErr and PowerShell interprets it as an error + $host.SetShouldExit(0) + } else { # a real error + throw "Exec: $ErrorMessage" + } + } + if ($env:build_system -eq "cmake") { + # built with CMake - test with CTest + if ($env:generator -eq "MinGW Makefiles") { + return # No test available for MinGW + } + + & ctest -C $env:configuration --timeout 600 --output-on-failure + if ($LastExitCode -ne 0) { + throw "Exec: $ErrorMessage" + } + } + +artifacts: + - path: '_build/CMakeFiles/*.log' + name: logs + - path: '_build/Testing/**/*.xml' + name: test_results + - path: 'bazel-testlogs/**/test.log' + name: test_logs + - path: 'bazel-testlogs/**/test.xml' + name: test_results diff --git a/build/_deps/googletest-src/ci/build-linux-bazel.sh b/build/_deps/googletest-src/ci/build-linux-bazel.sh new file mode 100755 index 0000000000000000000000000000000000000000..ae8fb75816f99be89c0171fb5b287149f52c19be --- /dev/null +++ b/build/_deps/googletest-src/ci/build-linux-bazel.sh @@ -0,0 +1,37 @@ +#!/usr/bin/env bash +# Copyright 2017 Google Inc. +# 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 Google Inc. 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 +# OWNER 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. + +set -e + +bazel version +bazel build --curses=no //...:all +bazel test --curses=no //...:all +bazel test --curses=no //...:all --define absl=1 diff --git a/build/_deps/googletest-src/ci/build-platformio.sh b/build/_deps/googletest-src/ci/build-platformio.sh new file mode 100644 index 0000000000000000000000000000000000000000..1d7658d8738bda68a6c73b5341f39bc7c84d43e1 --- /dev/null +++ b/build/_deps/googletest-src/ci/build-platformio.sh @@ -0,0 +1,2 @@ +# run PlatformIO builds +platformio run diff --git a/build/_deps/googletest-src/ci/env-linux.sh b/build/_deps/googletest-src/ci/env-linux.sh new file mode 100755 index 0000000000000000000000000000000000000000..37800d6a355c507101fa10e6efbb670b0c1dfeb4 --- /dev/null +++ b/build/_deps/googletest-src/ci/env-linux.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash +# Copyright 2017 Google Inc. +# 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 Google Inc. 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 +# OWNER 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 should be sourced, and not executed as a standalone script. +# + +# TODO() - we can check if this is being sourced using $BASH_VERSION and $BASH_SOURCE[0] != ${0}. + +if [ "${TRAVIS_OS_NAME}" = "linux" ]; then + if [ "$CXX" = "g++" ]; then export CXX="g++-4.9" CC="gcc-4.9"; fi + if [ "$CXX" = "clang++" ]; then export CXX="clang++-3.9" CC="clang-3.9"; fi +fi diff --git a/build/_deps/googletest-src/ci/env-osx.sh b/build/_deps/googletest-src/ci/env-osx.sh new file mode 100755 index 0000000000000000000000000000000000000000..9c421e14314c8371f3fd8dee0eaee1b7ec917a8d --- /dev/null +++ b/build/_deps/googletest-src/ci/env-osx.sh @@ -0,0 +1,47 @@ +#!/usr/bin/env bash +# Copyright 2017 Google Inc. +# 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 Google Inc. 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 +# OWNER 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 should be sourced, and not executed as a standalone script. +# + +# TODO() - we can check if this is being sourced using $BASH_VERSION and $BASH_SOURCE[0] != ${0}. +# + +if [ "${TRAVIS_OS_NAME}" = "osx" ]; then + if [ "$CXX" = "clang++" ]; then + # $PATH needs to be adjusted because the llvm tap doesn't install the + # package to /usr/local/bin, etc, like the gcc tap does. + # See: https://github.com/Homebrew/legacy-homebrew/issues/29733 + clang_version=3.9 + export PATH="/usr/local/opt/llvm@${clang_version}/bin:$PATH"; + fi +fi diff --git a/build/_deps/googletest-src/ci/get-nprocessors.sh b/build/_deps/googletest-src/ci/get-nprocessors.sh new file mode 100755 index 0000000000000000000000000000000000000000..43635e761e2d013e905bc1cb95199aaeb03b72f6 --- /dev/null +++ b/build/_deps/googletest-src/ci/get-nprocessors.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env bash +# Copyright 2017 Google Inc. +# 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 Google Inc. 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 +# OWNER 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 typically sourced by another script. +# if possible, ask for the precise number of processors, +# otherwise take 2 processors as reasonable default; see +# https://docs.travis-ci.com/user/speeding-up-the-build/#Makefile-optimization +if [ -x /usr/bin/getconf ]; then + NPROCESSORS=$(/usr/bin/getconf _NPROCESSORS_ONLN) +else + NPROCESSORS=2 +fi + +# as of 2017-09-04 Travis CI reports 32 processors, but GCC build +# crashes if parallelized too much (maybe memory consumption problem), +# so limit to 4 processors for the time being. +if [ $NPROCESSORS -gt 4 ] ; then + echo "$0:Note: Limiting processors to use by make from $NPROCESSORS to 4." + NPROCESSORS=4 +fi diff --git a/build/_deps/googletest-src/ci/install-linux.sh b/build/_deps/googletest-src/ci/install-linux.sh new file mode 100755 index 0000000000000000000000000000000000000000..05e2cb280318864fabfe5951f1209f9a7edd9be2 --- /dev/null +++ b/build/_deps/googletest-src/ci/install-linux.sh @@ -0,0 +1,49 @@ +#!/usr/bin/env bash +# Copyright 2017 Google Inc. +# 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 Google Inc. 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 +# OWNER 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. + +set -eu + +if [ "${TRAVIS_OS_NAME}" != linux ]; then + echo "Not a Linux build; skipping installation" + exit 0 +fi + + +if [ "${TRAVIS_SUDO}" = "true" ]; then + echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | \ + sudo tee /etc/apt/sources.list.d/bazel.list + curl https://bazel.build/bazel-release.pub.gpg | sudo apt-key add - + sudo apt-get update && sudo apt-get install -y bazel gcc-4.9 g++-4.9 clang-3.9 +elif [ "${CXX}" = "clang++" ]; then + # Use ccache, assuming $HOME/bin is in the path, which is true in the Travis build environment. + ln -sf /usr/bin/ccache $HOME/bin/${CXX}; + ln -sf /usr/bin/ccache $HOME/bin/${CC}; +fi diff --git a/build/_deps/googletest-src/ci/install-osx.sh b/build/_deps/googletest-src/ci/install-osx.sh new file mode 100755 index 0000000000000000000000000000000000000000..cc4750829ce5099d338feef14bdf9b603b2e0e97 --- /dev/null +++ b/build/_deps/googletest-src/ci/install-osx.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env bash +# Copyright 2017 Google Inc. +# 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 Google Inc. 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 +# OWNER 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. + +set -eu + +if [ "${TRAVIS_OS_NAME}" != "osx" ]; then + echo "Not a macOS build; skipping installation" + exit 0 +fi + +brew update +brew install ccache gcc@4.9 diff --git a/build/_deps/googletest-src/ci/install-platformio.sh b/build/_deps/googletest-src/ci/install-platformio.sh new file mode 100644 index 0000000000000000000000000000000000000000..4d7860a560c95eb75a4f61ba2985f60e175fae1d --- /dev/null +++ b/build/_deps/googletest-src/ci/install-platformio.sh @@ -0,0 +1,5 @@ +# install PlatformIO +sudo pip install -U platformio + +# update PlatformIO +platformio update diff --git a/build/_deps/googletest-src/ci/log-config.sh b/build/_deps/googletest-src/ci/log-config.sh new file mode 100755 index 0000000000000000000000000000000000000000..5fef11948b18f2f6719850fdac2ea1a775035e0b --- /dev/null +++ b/build/_deps/googletest-src/ci/log-config.sh @@ -0,0 +1,51 @@ +#!/usr/bin/env bash +# Copyright 2017 Google Inc. +# 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 Google Inc. 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 +# OWNER 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. + +set -e + +# ccache on OS X needs installation first +# reset ccache statistics +ccache --zero-stats + +echo PATH=${PATH} + +echo "Compiler configuration:" +echo CXX=${CXX} +echo CC=${CC} +echo CXXFLAGS=${CXXFLAGS} + +echo "C++ compiler version:" +${CXX} --version || echo "${CXX} does not seem to support the --version flag" +${CXX} -v || echo "${CXX} does not seem to support the -v flag" + +echo "C compiler version:" +${CC} --version || echo "${CXX} does not seem to support the --version flag" +${CC} -v || echo "${CXX} does not seem to support the -v flag" diff --git a/build/_deps/googletest-src/ci/travis.sh b/build/_deps/googletest-src/ci/travis.sh new file mode 100755 index 0000000000000000000000000000000000000000..9ff3bad3eebcf2e6da93f58c0033d2ad6aceb4c1 --- /dev/null +++ b/build/_deps/googletest-src/ci/travis.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env sh +set -evx + +. ci/get-nprocessors.sh + +# if possible, ask for the precise number of processors, +# otherwise take 2 processors as reasonable default; see +# https://docs.travis-ci.com/user/speeding-up-the-build/#Makefile-optimization +if [ -x /usr/bin/getconf ]; then + NPROCESSORS=$(/usr/bin/getconf _NPROCESSORS_ONLN) +else + NPROCESSORS=2 +fi +# as of 2017-09-04 Travis CI reports 32 processors, but GCC build +# crashes if parallelized too much (maybe memory consumption problem), +# so limit to 4 processors for the time being. +if [ $NPROCESSORS -gt 4 ] ; then + echo "$0:Note: Limiting processors to use by make from $NPROCESSORS to 4." + NPROCESSORS=4 +fi +# Tell make to use the processors. No preceding '-' required. +MAKEFLAGS="j${NPROCESSORS}" +export MAKEFLAGS + +env | sort + +# Set default values to OFF for these variables if not specified. +: "${NO_EXCEPTION:=OFF}" +: "${NO_RTTI:=OFF}" +: "${COMPILER_IS_GNUCXX:=OFF}" + +mkdir build || true +cd build +cmake -Dgtest_build_samples=ON \ + -Dgtest_build_tests=ON \ + -Dgmock_build_tests=ON \ + -Dcxx_no_exception=$NO_EXCEPTION \ + -Dcxx_no_rtti=$NO_RTTI \ + -DCMAKE_COMPILER_IS_GNUCXX=$COMPILER_IS_GNUCXX \ + -DCMAKE_CXX_FLAGS=$CXX_FLAGS \ + -DCMAKE_BUILD_TYPE=$BUILD_TYPE \ + .. +make +CTEST_OUTPUT_ON_FAILURE=1 make test diff --git a/build/_deps/googletest-src/googlemock/CMakeLists.txt b/build/_deps/googletest-src/googlemock/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..d32b70b5be0e0ae74f5376fb03a2226065ad599a --- /dev/null +++ b/build/_deps/googletest-src/googlemock/CMakeLists.txt @@ -0,0 +1,233 @@ +######################################################################## +# Note: CMake support is community-based. The maintainers do not use CMake +# internally. +# +# CMake build script for Google Mock. +# +# To run the tests for Google Mock itself on Linux, use 'make test' or +# ctest. You can select which tests to run using 'ctest -R regex'. +# For more options, run 'ctest --help'. + +option(gmock_build_tests "Build all of Google Mock's own tests." OFF) + +# A directory to find Google Test sources. +if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/gtest/CMakeLists.txt") + set(gtest_dir gtest) +else() + set(gtest_dir ../googletest) +endif() + +# Defines pre_project_set_up_hermetic_build() and set_up_hermetic_build(). +include("${gtest_dir}/cmake/hermetic_build.cmake" OPTIONAL) + +if (COMMAND pre_project_set_up_hermetic_build) + # Google Test also calls hermetic setup functions from add_subdirectory, + # although its changes will not affect things at the current scope. + pre_project_set_up_hermetic_build() +endif() + +######################################################################## +# +# Project-wide settings + +# Name of the project. +# +# CMake files in this project can refer to the root source directory +# as ${gmock_SOURCE_DIR} and to the root binary directory as +# ${gmock_BINARY_DIR}. +# Language "C" is required for find_package(Threads). +if (CMAKE_VERSION VERSION_LESS 3.0) + project(gmock CXX C) +else() + cmake_policy(SET CMP0048 NEW) + project(gmock VERSION ${GOOGLETEST_VERSION} LANGUAGES CXX C) +endif() +cmake_minimum_required(VERSION 2.6.4) + +if (COMMAND set_up_hermetic_build) + set_up_hermetic_build() +endif() + +# Instructs CMake to process Google Test's CMakeLists.txt and add its +# targets to the current scope. We are placing Google Test's binary +# directory in a subdirectory of our own as VC compilation may break +# if they are the same (the default). +add_subdirectory("${gtest_dir}" "${gmock_BINARY_DIR}/${gtest_dir}") + + +# These commands only run if this is the main project +if(CMAKE_PROJECT_NAME STREQUAL "gmock" OR CMAKE_PROJECT_NAME STREQUAL "googletest-distribution") + # BUILD_SHARED_LIBS is a standard CMake variable, but we declare it here to + # make it prominent in the GUI. + option(BUILD_SHARED_LIBS "Build shared libraries (DLLs)." OFF) +else() + mark_as_advanced(gmock_build_tests) +endif() + +# Although Google Test's CMakeLists.txt calls this function, the +# changes there don't affect the current scope. Therefore we have to +# call it again here. +config_compiler_and_linker() # from ${gtest_dir}/cmake/internal_utils.cmake + +# Adds Google Mock's and Google Test's header directories to the search path. +set(gmock_build_include_dirs + "${gmock_SOURCE_DIR}/include" + "${gmock_SOURCE_DIR}" + "${gtest_SOURCE_DIR}/include" + # This directory is needed to build directly from Google Test sources. + "${gtest_SOURCE_DIR}") +include_directories(${gmock_build_include_dirs}) + +######################################################################## +# +# Defines the gmock & gmock_main libraries. User tests should link +# with one of them. + +# Google Mock libraries. We build them using more strict warnings than what +# are used for other targets, to ensure that Google Mock can be compiled by +# a user aggressive about warnings. +if (MSVC) + cxx_library(gmock + "${cxx_strict}" + "${gtest_dir}/src/gtest-all.cc" + src/gmock-all.cc) + + cxx_library(gmock_main + "${cxx_strict}" + "${gtest_dir}/src/gtest-all.cc" + src/gmock-all.cc + src/gmock_main.cc) +else() + cxx_library(gmock "${cxx_strict}" src/gmock-all.cc) + target_link_libraries(gmock PUBLIC gtest) + cxx_library(gmock_main "${cxx_strict}" src/gmock_main.cc) + target_link_libraries(gmock_main PUBLIC gmock) +endif() +# If the CMake version supports it, attach header directory information +# to the targets for when we are part of a parent build (ie being pulled +# in via add_subdirectory() rather than being a standalone build). +if (DEFINED CMAKE_VERSION AND NOT "${CMAKE_VERSION}" VERSION_LESS "2.8.11") + target_include_directories(gmock SYSTEM INTERFACE + "$" + "$/${CMAKE_INSTALL_INCLUDEDIR}>") + target_include_directories(gmock_main SYSTEM INTERFACE + "$" + "$/${CMAKE_INSTALL_INCLUDEDIR}>") +endif() + +######################################################################## +# +# Install rules +install_project(gmock gmock_main) + +######################################################################## +# +# Google Mock's own tests. +# +# You can skip this section if you aren't interested in testing +# Google Mock itself. +# +# The tests are not built by default. To build them, set the +# gmock_build_tests option to ON. You can do it by running ccmake +# or specifying the -Dgmock_build_tests=ON flag when running cmake. + +if (gmock_build_tests) + # This must be set in the root directory for the tests to be run by + # 'make test' or ctest. + enable_testing() + + if (WIN32) + file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/$/RunTest.ps1" + CONTENT +"$project_bin = \"${CMAKE_BINARY_DIR}/bin/$\" +$env:Path = \"$project_bin;$env:Path\" +& $args") + elseif (MINGW OR CYGWIN) + file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/RunTest.ps1" + CONTENT +"$project_bin = (cygpath --windows ${CMAKE_BINARY_DIR}/bin) +$env:Path = \"$project_bin;$env:Path\" +& $args") + endif() + + if (MINGW OR CYGWIN) + if (CMAKE_VERSION VERSION_LESS "2.8.12") + add_compile_options("-Wa,-mbig-obj") + else() + add_definitions("-Wa,-mbig-obj") + endif() + endif() + + ############################################################ + # C++ tests built with standard compiler flags. + + cxx_test(gmock-actions_test gmock_main) + cxx_test(gmock-cardinalities_test gmock_main) + cxx_test(gmock_ex_test gmock_main) + cxx_test(gmock-function-mocker_test gmock_main) + cxx_test(gmock-generated-actions_test gmock_main) + cxx_test(gmock-generated-function-mockers_test gmock_main) + cxx_test(gmock-generated-matchers_test gmock_main) + cxx_test(gmock-internal-utils_test gmock_main) + cxx_test(gmock-matchers_test gmock_main) + cxx_test(gmock-more-actions_test gmock_main) + cxx_test(gmock-nice-strict_test gmock_main) + cxx_test(gmock-port_test gmock_main) + cxx_test(gmock-spec-builders_test gmock_main) + cxx_test(gmock_link_test gmock_main test/gmock_link2_test.cc) + cxx_test(gmock_test gmock_main) + + if (DEFINED GTEST_HAS_PTHREAD) + cxx_test(gmock_stress_test gmock) + endif() + + # gmock_all_test is commented to save time building and running tests. + # Uncomment if necessary. + # cxx_test(gmock_all_test gmock_main) + + ############################################################ + # C++ tests built with non-standard compiler flags. + + if (MSVC) + cxx_library(gmock_main_no_exception "${cxx_no_exception}" + "${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc) + + cxx_library(gmock_main_no_rtti "${cxx_no_rtti}" + "${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc) + + else() + cxx_library(gmock_main_no_exception "${cxx_no_exception}" src/gmock_main.cc) + target_link_libraries(gmock_main_no_exception PUBLIC gmock) + + cxx_library(gmock_main_no_rtti "${cxx_no_rtti}" src/gmock_main.cc) + target_link_libraries(gmock_main_no_rtti PUBLIC gmock) + endif() + cxx_test_with_flags(gmock-more-actions_no_exception_test "${cxx_no_exception}" + gmock_main_no_exception test/gmock-more-actions_test.cc) + + cxx_test_with_flags(gmock_no_rtti_test "${cxx_no_rtti}" + gmock_main_no_rtti test/gmock-spec-builders_test.cc) + + cxx_shared_library(shared_gmock_main "${cxx_default}" + "${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc) + + # Tests that a binary can be built with Google Mock as a shared library. On + # some system configurations, it may not possible to run the binary without + # knowing more details about the system configurations. We do not try to run + # this binary. To get a more robust shared library coverage, configure with + # -DBUILD_SHARED_LIBS=ON. + cxx_executable_with_flags(shared_gmock_test_ "${cxx_default}" + shared_gmock_main test/gmock-spec-builders_test.cc) + set_target_properties(shared_gmock_test_ + PROPERTIES + COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1") + + ############################################################ + # Python tests. + + cxx_executable(gmock_leak_test_ test gmock_main) + py_test(gmock_leak_test) + + cxx_executable(gmock_output_test_ test gmock) + py_test(gmock_output_test) +endif() diff --git a/build/_deps/googletest-src/googlemock/CONTRIBUTORS b/build/_deps/googletest-src/googlemock/CONTRIBUTORS new file mode 100644 index 0000000000000000000000000000000000000000..6e9ae362b60c384c743cd654903ec287fb6a270c --- /dev/null +++ b/build/_deps/googletest-src/googlemock/CONTRIBUTORS @@ -0,0 +1,40 @@ +# This file contains a list of people who've made non-trivial +# contribution to the Google C++ Mocking Framework project. People +# who commit code to the project are encouraged to add their names +# here. Please keep the list sorted by first names. + +Benoit Sigoure +Bogdan Piloca +Chandler Carruth +Dave MacLachlan +David Anderson +Dean Sturtevant +Gene Volovich +Hal Burch +Jeffrey Yasskin +Jim Keller +Joe Walnes +Jon Wray +Keir Mierle +Keith Ray +Kostya Serebryany +Lev Makhlis +Manuel Klimek +Mario Tanev +Mark Paskin +Markus Heule +Matthew Simmons +Mike Bland +Neal Norwitz +Nermin Ozkiranartli +Owen Carlsen +Paneendra Ba +Paul Menage +Piotr Kaminski +Russ Rufer +Sverre Sundsdal +Takeshi Yoshino +Vadim Berman +Vlad Losev +Wolfgang Klier +Zhanyong Wan diff --git a/build/_deps/googletest-src/googlemock/LICENSE b/build/_deps/googletest-src/googlemock/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..1941a11f8ce94389160b458927a29ba217542818 --- /dev/null +++ b/build/_deps/googletest-src/googlemock/LICENSE @@ -0,0 +1,28 @@ +Copyright 2008, Google Inc. +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 Google Inc. 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 +OWNER 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. diff --git a/build/_deps/googletest-src/googlemock/README.md b/build/_deps/googletest-src/googlemock/README.md new file mode 100644 index 0000000000000000000000000000000000000000..183fdb81d9b6f17b5e57bd9bb6e86066d943a427 --- /dev/null +++ b/build/_deps/googletest-src/googlemock/README.md @@ -0,0 +1,44 @@ +# Googletest Mocking (gMock) Framework + +### Overview + +Google's framework for writing and using C++ mock classes. It can help you +derive better designs of your system and write better tests. + +It is inspired by: + +* [jMock](http://www.jmock.org/), +* [EasyMock](http://www.easymock.org/), and +* [Hamcrest](http://code.google.com/p/hamcrest/), + +and designed with C++'s specifics in mind. + +gMock: + +- provides a declarative syntax for defining mocks, +- can define partial (hybrid) mocks, which are a cross of real and mock + objects, +- handles functions of arbitrary types and overloaded functions, +- comes with a rich set of matchers for validating function arguments, +- uses an intuitive syntax for controlling the behavior of a mock, +- does automatic verification of expectations (no record-and-replay needed), +- allows arbitrary (partial) ordering constraints on function calls to be + expressed, +- lets a user extend it by defining new matchers and actions. +- does not use exceptions, and +- is easy to learn and use. + +Details and examples can be found here: + +* [gMock for Dummies](docs/for_dummies.md) +* [Legacy gMock FAQ](docs/gmock_faq.md) +* [gMock Cookbook](docs/cook_book.md) +* [gMock Cheat Sheet](docs/cheat_sheet.md) + +Please note that code under scripts/generator/ is from the [cppclean +project](http://code.google.com/p/cppclean/) and under the Apache +License, which is different from Google Mock's license. + +Google Mock is a part of +[Google Test C++ testing framework](http://github.com/google/googletest/) and a +subject to the same requirements. diff --git a/build/_deps/googletest-src/googlemock/cmake/gmock.pc.in b/build/_deps/googletest-src/googlemock/cmake/gmock.pc.in new file mode 100644 index 0000000000000000000000000000000000000000..08e0454749ba7d9d33812f610ec2d8d94d58b43e --- /dev/null +++ b/build/_deps/googletest-src/googlemock/cmake/gmock.pc.in @@ -0,0 +1,11 @@ +prefix=${pcfiledir}/../.. +libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ +includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ + +Name: gmock +Description: GoogleMock (without main() function) +Version: @PROJECT_VERSION@ +URL: https://github.com/google/googletest +Requires: gtest +Libs: -L${libdir} -lgmock @CMAKE_THREAD_LIBS_INIT@ +Cflags: -I${includedir} @GTEST_HAS_PTHREAD_MACRO@ @CMAKE_THREAD_LIBS_INIT@ diff --git a/build/_deps/googletest-src/googlemock/cmake/gmock_main.pc.in b/build/_deps/googletest-src/googlemock/cmake/gmock_main.pc.in new file mode 100644 index 0000000000000000000000000000000000000000..b22fe614828393c9c8e7aa690a0cbdc6a97e3c42 --- /dev/null +++ b/build/_deps/googletest-src/googlemock/cmake/gmock_main.pc.in @@ -0,0 +1,11 @@ +prefix=${pcfiledir}/../.. +libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ +includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ + +Name: gmock_main +Description: GoogleMock (with main() function) +Version: @PROJECT_VERSION@ +URL: https://github.com/google/googletest +Requires: gmock +Libs: -L${libdir} -lgmock_main @CMAKE_THREAD_LIBS_INIT@ +Cflags: -I${includedir} @GTEST_HAS_PTHREAD_MACRO@ @CMAKE_THREAD_LIBS_INIT@ diff --git a/build/_deps/googletest-src/googlemock/docs/cheat_sheet.md b/build/_deps/googletest-src/googlemock/docs/cheat_sheet.md new file mode 100644 index 0000000000000000000000000000000000000000..850963af28482ca96fee858aa7932e5d56a82526 --- /dev/null +++ b/build/_deps/googletest-src/googlemock/docs/cheat_sheet.md @@ -0,0 +1,781 @@ +## gMock Cheat Sheet + + + + + +### Defining a Mock Class + +#### Mocking a Normal Class {#MockClass} + +Given + +```cpp +class Foo { + ... + virtual ~Foo(); + virtual int GetSize() const = 0; + virtual string Describe(const char* name) = 0; + virtual string Describe(int type) = 0; + virtual bool Process(Bar elem, int count) = 0; +}; +``` + +(note that `~Foo()` **must** be virtual) we can define its mock as + +```cpp +#include "gmock/gmock.h" + +class MockFoo : public Foo { + ... + MOCK_METHOD(int, GetSize, (), (const, override)); + MOCK_METHOD(string, Describe, (const char* name), (override)); + MOCK_METHOD(string, Describe, (int type), (override)); + MOCK_METHOD(bool, Process, (Bar elem, int count), (override)); +}; +``` + +To create a "nice" mock, which ignores all uninteresting calls, a "naggy" mock, +which warns on all uninteresting calls, or a "strict" mock, which treats them as +failures: + +```cpp +using ::testing::NiceMock; +using ::testing::NaggyMock; +using ::testing::StrictMock; + +NiceMock nice_foo; // The type is a subclass of MockFoo. +NaggyMock naggy_foo; // The type is a subclass of MockFoo. +StrictMock strict_foo; // The type is a subclass of MockFoo. +``` + +**Note:** A mock object is currently naggy by default. We may make it nice by +default in the future. + +#### Mocking a Class Template {#MockTemplate} + +Class templates can be mocked just like any class. + +To mock + +```cpp +template +class StackInterface { + ... + virtual ~StackInterface(); + virtual int GetSize() const = 0; + virtual void Push(const Elem& x) = 0; +}; +``` + +(note that all member functions that are mocked, including `~StackInterface()` +**must** be virtual). + +```cpp +template +class MockStack : public StackInterface { + ... + MOCK_METHOD(int, GetSize, (), (const, override)); + MOCK_METHOD(void, Push, (const Elem& x), (override)); +}; +``` + +#### Specifying Calling Conventions for Mock Functions + +If your mock function doesn't use the default calling convention, you can +specify it by adding `Calltype(convention)` to `MOCK_METHOD`'s 4th parameter. +For example, + +```cpp + MOCK_METHOD(bool, Foo, (int n), (Calltype(STDMETHODCALLTYPE))); + MOCK_METHOD(int, Bar, (double x, double y), + (const, Calltype(STDMETHODCALLTYPE))); +``` + +where `STDMETHODCALLTYPE` is defined by `` on Windows. + +### Using Mocks in Tests {#UsingMocks} + +The typical work flow is: + +1. Import the gMock names you need to use. All gMock symbols are in the + `testing` namespace unless they are macros or otherwise noted. +2. Create the mock objects. +3. Optionally, set the default actions of the mock objects. +4. Set your expectations on the mock objects (How will they be called? What + will they do?). +5. Exercise code that uses the mock objects; if necessary, check the result + using googletest assertions. +6. When a mock object is destructed, gMock automatically verifies that all + expectations on it have been satisfied. + +Here's an example: + +```cpp +using ::testing::Return; // #1 + +TEST(BarTest, DoesThis) { + MockFoo foo; // #2 + + ON_CALL(foo, GetSize()) // #3 + .WillByDefault(Return(1)); + // ... other default actions ... + + EXPECT_CALL(foo, Describe(5)) // #4 + .Times(3) + .WillRepeatedly(Return("Category 5")); + // ... other expectations ... + + EXPECT_EQ("good", MyProductionFunction(&foo)); // #5 +} // #6 +``` + +### Setting Default Actions {#OnCall} + +gMock has a **built-in default action** for any function that returns `void`, +`bool`, a numeric value, or a pointer. In C++11, it will additionally returns +the default-constructed value, if one exists for the given type. + +To customize the default action for functions with return type *`T`*: + +```cpp +using ::testing::DefaultValue; + +// Sets the default value to be returned. T must be CopyConstructible. +DefaultValue::Set(value); +// Sets a factory. Will be invoked on demand. T must be MoveConstructible. +// T MakeT(); +DefaultValue::SetFactory(&MakeT); +// ... use the mocks ... +// Resets the default value. +DefaultValue::Clear(); +``` + +Example usage: + +```cpp + // Sets the default action for return type std::unique_ptr to + // creating a new Buzz every time. + DefaultValue>::SetFactory( + [] { return MakeUnique(AccessLevel::kInternal); }); + + // When this fires, the default action of MakeBuzz() will run, which + // will return a new Buzz object. + EXPECT_CALL(mock_buzzer_, MakeBuzz("hello")).Times(AnyNumber()); + + auto buzz1 = mock_buzzer_.MakeBuzz("hello"); + auto buzz2 = mock_buzzer_.MakeBuzz("hello"); + EXPECT_NE(nullptr, buzz1); + EXPECT_NE(nullptr, buzz2); + EXPECT_NE(buzz1, buzz2); + + // Resets the default action for return type std::unique_ptr, + // to avoid interfere with other tests. + DefaultValue>::Clear(); +``` + +To customize the default action for a particular method of a specific mock +object, use `ON_CALL()`. `ON_CALL()` has a similar syntax to `EXPECT_CALL()`, +but it is used for setting default behaviors (when you do not require that the +mock method is called). See [here](cook_book.md#UseOnCall) for a more detailed +discussion. + +```cpp +ON_CALL(mock-object, method(matchers)) + .With(multi-argument-matcher) ? + .WillByDefault(action); +``` + +### Setting Expectations {#ExpectCall} + +`EXPECT_CALL()` sets **expectations** on a mock method (How will it be called? +What will it do?): + +```cpp +EXPECT_CALL(mock-object, method (matchers)?) + .With(multi-argument-matcher) ? + .Times(cardinality) ? + .InSequence(sequences) * + .After(expectations) * + .WillOnce(action) * + .WillRepeatedly(action) ? + .RetiresOnSaturation(); ? +``` + +For each item above, `?` means it can be used at most once, while `*` means it +can be used any number of times. + +In order to pass, `EXPECT_CALL` must be used before the calls are actually made. + +The `(matchers)` is a comma-separated list of matchers that correspond to each +of the arguments of `method`, and sets the expectation only for calls of +`method` that matches all of the matchers. + +If `(matchers)` is omitted, the expectation is the same as if the matchers were +set to anything matchers (for example, `(_, _, _, _)` for a four-arg method). + +If `Times()` is omitted, the cardinality is assumed to be: + +* `Times(1)` when there is neither `WillOnce()` nor `WillRepeatedly()`; +* `Times(n)` when there are `n` `WillOnce()`s but no `WillRepeatedly()`, where + `n` >= 1; or +* `Times(AtLeast(n))` when there are `n` `WillOnce()`s and a + `WillRepeatedly()`, where `n` >= 0. + +A method with no `EXPECT_CALL()` is free to be invoked *any number of times*, +and the default action will be taken each time. + +### Matchers {#MatcherList} + + + +A **matcher** matches a *single* argument. You can use it inside `ON_CALL()` or +`EXPECT_CALL()`, or use it to validate a value directly using two macros: + + +| Macro | Description | +| :----------------------------------- | :------------------------------------ | +| `EXPECT_THAT(actual_value, matcher)` | Asserts that `actual_value` matches `matcher`. | +| `ASSERT_THAT(actual_value, matcher)` | The same as `EXPECT_THAT(actual_value, matcher)`, except that it generates a **fatal** failure. | + + +Built-in matchers (where `argument` is the function argument, e.g. +`actual_value` in the example above, or when used in the context of +`EXPECT_CALL(mock_object, method(matchers))`, the arguments of `method`) are +divided into several categories: + +#### Wildcard + +Matcher | Description +:-------------------------- | :----------------------------------------------- +`_` | `argument` can be any value of the correct type. +`A()` or `An()` | `argument` can be any value of type `type`. + +#### Generic Comparison + + +| Matcher | Description | +| :--------------------- | :-------------------------------------------------- | +| `Eq(value)` or `value` | `argument == value` | +| `Ge(value)` | `argument >= value` | +| `Gt(value)` | `argument > value` | +| `Le(value)` | `argument <= value` | +| `Lt(value)` | `argument < value` | +| `Ne(value)` | `argument != value` | +| `IsFalse()` | `argument` evaluates to `false` in a Boolean context. | +| `IsTrue()` | `argument` evaluates to `true` in a Boolean context. | +| `IsNull()` | `argument` is a `NULL` pointer (raw or smart). | +| `NotNull()` | `argument` is a non-null pointer (raw or smart). | +| `Optional(m)` | `argument` is `optional<>` that contains a value matching `m`. | +| `VariantWith(m)` | `argument` is `variant<>` that holds the alternative of type T with a value matching `m`. | +| `Ref(variable)` | `argument` is a reference to `variable`. | +| `TypedEq(value)` | `argument` has type `type` and is equal to `value`. You may need to use this instead of `Eq(value)` when the mock function is overloaded. | + + +Except `Ref()`, these matchers make a *copy* of `value` in case it's modified or +destructed later. If the compiler complains that `value` doesn't have a public +copy constructor, try wrap it in `ByRef()`, e.g. +`Eq(ByRef(non_copyable_value))`. If you do that, make sure `non_copyable_value` +is not changed afterwards, or the meaning of your matcher will be changed. + +#### Floating-Point Matchers {#FpMatchers} + + +| Matcher | Description | +| :------------------------------- | :--------------------------------- | +| `DoubleEq(a_double)` | `argument` is a `double` value approximately equal to `a_double`, treating two NaNs as unequal. | +| `FloatEq(a_float)` | `argument` is a `float` value approximately equal to `a_float`, treating two NaNs as unequal. | +| `NanSensitiveDoubleEq(a_double)` | `argument` is a `double` value approximately equal to `a_double`, treating two NaNs as equal. | +| `NanSensitiveFloatEq(a_float)` | `argument` is a `float` value approximately equal to `a_float`, treating two NaNs as equal. | + + +The above matchers use ULP-based comparison (the same as used in googletest). +They automatically pick a reasonable error bound based on the absolute value of +the expected value. `DoubleEq()` and `FloatEq()` conform to the IEEE standard, +which requires comparing two NaNs for equality to return false. The +`NanSensitive*` version instead treats two NaNs as equal, which is often what a +user wants. + + +| Matcher | Description | +| :------------------------------------------------ | :----------------------- | +| `DoubleNear(a_double, max_abs_error)` | `argument` is a `double` value close to `a_double` (absolute error <= `max_abs_error`), treating two NaNs as unequal. | +| `FloatNear(a_float, max_abs_error)` | `argument` is a `float` value close to `a_float` (absolute error <= `max_abs_error`), treating two NaNs as unequal. | +| `NanSensitiveDoubleNear(a_double, max_abs_error)` | `argument` is a `double` value close to `a_double` (absolute error <= `max_abs_error`), treating two NaNs as equal. | +| `NanSensitiveFloatNear(a_float, max_abs_error)` | `argument` is a `float` value close to `a_float` (absolute error <= `max_abs_error`), treating two NaNs as equal. | + + +#### String Matchers + +The `argument` can be either a C string or a C++ string object: + + +| Matcher | Description | +| :---------------------- | :------------------------------------------------- | +| `ContainsRegex(string)` | `argument` matches the given regular expression. | +| `EndsWith(suffix)` | `argument` ends with string `suffix`. | +| `HasSubstr(string)` | `argument` contains `string` as a sub-string. | +| `MatchesRegex(string)` | `argument` matches the given regular expression with the match starting at the first character and ending at the last character. | +| `StartsWith(prefix)` | `argument` starts with string `prefix`. | +| `StrCaseEq(string)` | `argument` is equal to `string`, ignoring case. | +| `StrCaseNe(string)` | `argument` is not equal to `string`, ignoring case. | +| `StrEq(string)` | `argument` is equal to `string`. | +| `StrNe(string)` | `argument` is not equal to `string`. | + + +`ContainsRegex()` and `MatchesRegex()` take ownership of the `RE` object. They +use the regular expression syntax defined +[here](../../googletest/docs/advanced.md#regular-expression-syntax). +`StrCaseEq()`, `StrCaseNe()`, `StrEq()`, and `StrNe()` work for wide strings as +well. + +#### Container Matchers + +Most STL-style containers support `==`, so you can use `Eq(expected_container)` +or simply `expected_container` to match a container exactly. If you want to +write the elements in-line, match them more flexibly, or get more informative +messages, you can use: + + +| Matcher | Description | +| :---------------------------------------- | :------------------------------- | +| `BeginEndDistanceIs(m)` | `argument` is a container whose `begin()` and `end()` iterators are separated by a number of increments matching `m`. E.g. `BeginEndDistanceIs(2)` or `BeginEndDistanceIs(Lt(2))`. For containers that define a `size()` method, `SizeIs(m)` may be more efficient. | +| `ContainerEq(container)` | The same as `Eq(container)` except that the failure message also includes which elements are in one container but not the other. | +| `Contains(e)` | `argument` contains an element that matches `e`, which can be either a value or a matcher. | +| `Each(e)` | `argument` is a container where *every* element matches `e`, which can be either a value or a matcher. | +| `ElementsAre(e0, e1, ..., en)` | `argument` has `n + 1` elements, where the *i*-th element matches `ei`, which can be a value or a matcher. | +| `ElementsAreArray({e0, e1, ..., en})`, `ElementsAreArray(a_container)`, `ElementsAreArray(begin, end)`, `ElementsAreArray(array)`, or `ElementsAreArray(array, count)` | The same as `ElementsAre()` except that the expected element values/matchers come from an initializer list, STL-style container, iterator range, or C-style array. | +| `IsEmpty()` | `argument` is an empty container (`container.empty()`). | +| `IsSubsetOf({e0, e1, ..., en})`, `IsSubsetOf(a_container)`, `IsSubsetOf(begin, end)`, `IsSubsetOf(array)`, or `IsSubsetOf(array, count)` | `argument` matches `UnorderedElementsAre(x0, x1, ..., xk)` for some subset `{x0, x1, ..., xk}` of the expected matchers. | +| `IsSupersetOf({e0, e1, ..., en})`, `IsSupersetOf(a_container)`, `IsSupersetOf(begin, end)`, `IsSupersetOf(array)`, or `IsSupersetOf(array, count)` | Some subset of `argument` matches `UnorderedElementsAre(`expected matchers`)`. | +| `Pointwise(m, container)`, `Pointwise(m, {e0, e1, ..., en})` | `argument` contains the same number of elements as in `container`, and for all i, (the i-th element in `argument`, the i-th element in `container`) match `m`, which is a matcher on 2-tuples. E.g. `Pointwise(Le(), upper_bounds)` verifies that each element in `argument` doesn't exceed the corresponding element in `upper_bounds`. See more detail below. | +| `SizeIs(m)` | `argument` is a container whose size matches `m`. E.g. `SizeIs(2)` or `SizeIs(Lt(2))`. | +| `UnorderedElementsAre(e0, e1, ..., en)` | `argument` has `n + 1` elements, and under *some* permutation of the elements, each element matches an `ei` (for a different `i`), which can be a value or a matcher. | +| `UnorderedElementsAreArray({e0, e1, ..., en})`, `UnorderedElementsAreArray(a_container)`, `UnorderedElementsAreArray(begin, end)`, `UnorderedElementsAreArray(array)`, or `UnorderedElementsAreArray(array, count)` | The same as `UnorderedElementsAre()` except that the expected element values/matchers come from an initializer list, STL-style container, iterator range, or C-style array. | +| `UnorderedPointwise(m, container)`, `UnorderedPointwise(m, {e0, e1, ..., en})` | Like `Pointwise(m, container)`, but ignores the order of elements. | +| `WhenSorted(m)` | When `argument` is sorted using the `<` operator, it matches container matcher `m`. E.g. `WhenSorted(ElementsAre(1, 2, 3))` verifies that `argument` contains elements 1, 2, and 3, ignoring order. | +| `WhenSortedBy(comparator, m)` | The same as `WhenSorted(m)`, except that the given comparator instead of `<` is used to sort `argument`. E.g. `WhenSortedBy(std::greater(), ElementsAre(3, 2, 1))`. | + + +**Notes:** + +* These matchers can also match: + 1. a native array passed by reference (e.g. in `Foo(const int (&a)[5])`), + and + 2. an array passed as a pointer and a count (e.g. in `Bar(const T* buffer, + int len)` -- see [Multi-argument Matchers](#MultiArgMatchers)). +* The array being matched may be multi-dimensional (i.e. its elements can be + arrays). +* `m` in `Pointwise(m, ...)` should be a matcher for `::std::tuple` + where `T` and `U` are the element type of the actual container and the + expected container, respectively. For example, to compare two `Foo` + containers where `Foo` doesn't support `operator==`, one might write: + + ```cpp + using ::std::get; + MATCHER(FooEq, "") { + return std::get<0>(arg).Equals(std::get<1>(arg)); + } + ... + EXPECT_THAT(actual_foos, Pointwise(FooEq(), expected_foos)); + ``` + +#### Member Matchers + + +| Matcher | Description | +| :------------------------------ | :----------------------------------------- | +| `Field(&class::field, m)` | `argument.field` (or `argument->field` when `argument` is a plain pointer) matches matcher `m`, where `argument` is an object of type _class_. | +| `Key(e)` | `argument.first` matches `e`, which can be either a value or a matcher. E.g. `Contains(Key(Le(5)))` can verify that a `map` contains a key `<= 5`. | +| `Pair(m1, m2)` | `argument` is an `std::pair` whose `first` field matches `m1` and `second` field matches `m2`. | +| `Property(&class::property, m)` | `argument.property()` (or `argument->property()` when `argument` is a plain pointer) matches matcher `m`, where `argument` is an object of type _class_. | + + +#### Matching the Result of a Function, Functor, or Callback + + +| Matcher | Description | +| :--------------- | :------------------------------------------------ | +| `ResultOf(f, m)` | `f(argument)` matches matcher `m`, where `f` is a function or functor. | + + +#### Pointer Matchers + + +| Matcher | Description | +| :------------------------ | :---------------------------------------------- | +| `Pointee(m)` | `argument` (either a smart pointer or a raw pointer) points to a value that matches matcher `m`. | +| `WhenDynamicCastTo(m)` | when `argument` is passed through `dynamic_cast()`, it matches matcher `m`. | + + + + + + +#### Multi-argument Matchers {#MultiArgMatchers} + +Technically, all matchers match a *single* value. A "multi-argument" matcher is +just one that matches a *tuple*. The following matchers can be used to match a +tuple `(x, y)`: + +Matcher | Description +:------ | :---------- +`Eq()` | `x == y` +`Ge()` | `x >= y` +`Gt()` | `x > y` +`Le()` | `x <= y` +`Lt()` | `x < y` +`Ne()` | `x != y` + +You can use the following selectors to pick a subset of the arguments (or +reorder them) to participate in the matching: + + +| Matcher | Description | +| :------------------------- | :---------------------------------------------- | +| `AllArgs(m)` | Equivalent to `m`. Useful as syntactic sugar in `.With(AllArgs(m))`. | +| `Args(m)` | The tuple of the `k` selected (using 0-based indices) arguments matches `m`, e.g. `Args<1, 2>(Eq())`. | + + +#### Composite Matchers + +You can make a matcher from one or more other matchers: + + +| Matcher | Description | +| :------------------------------- | :-------------------------------------- | +| `AllOf(m1, m2, ..., mn)` | `argument` matches all of the matchers `m1` to `mn`. | +| `AllOfArray({m0, m1, ..., mn})`, `AllOfArray(a_container)`, `AllOfArray(begin, end)`, `AllOfArray(array)`, or `AllOfArray(array, count)` | The same as `AllOf()` except that the matchers come from an initializer list, STL-style container, iterator range, or C-style array. | +| `AnyOf(m1, m2, ..., mn)` | `argument` matches at least one of the matchers `m1` to `mn`. | +| `AnyOfArray({m0, m1, ..., mn})`, `AnyOfArray(a_container)`, `AnyOfArray(begin, end)`, `AnyOfArray(array)`, or `AnyOfArray(array, count)` | The same as `AnyOf()` except that the matchers come from an initializer list, STL-style container, iterator range, or C-style array. | +| `Not(m)` | `argument` doesn't match matcher `m`. | + + + + +#### Adapters for Matchers + + +| Matcher | Description | +| :---------------------- | :------------------------------------ | +| `MatcherCast(m)` | casts matcher `m` to type `Matcher`. | +| `SafeMatcherCast(m)` | [safely casts](cook_book.md#casting-matchers) matcher `m` to type `Matcher`. | +| `Truly(predicate)` | `predicate(argument)` returns something considered by C++ to be true, where `predicate` is a function or functor. | + + +`AddressSatisfies(callback)` and `Truly(callback)` take ownership of `callback`, +which must be a permanent callback. + +#### Using Matchers as Predicates {#MatchersAsPredicatesCheat} + + +| Matcher | Description | +| :---------------------------- | :------------------------------------------ | +| `Matches(m)(value)` | evaluates to `true` if `value` matches `m`. You can use `Matches(m)` alone as a unary functor. | +| `ExplainMatchResult(m, value, result_listener)` | evaluates to `true` if `value` matches `m`, explaining the result to `result_listener`. | +| `Value(value, m)` | evaluates to `true` if `value` matches `m`. | + + +#### Defining Matchers + + +| Matcher | Description | +| :----------------------------------- | :------------------------------------ | +| `MATCHER(IsEven, "") { return (arg % 2) == 0; }` | Defines a matcher `IsEven()` to match an even number. | +| `MATCHER_P(IsDivisibleBy, n, "") { *result_listener << "where the remainder is " << (arg % n); return (arg % n) == 0; }` | Defines a macher `IsDivisibleBy(n)` to match a number divisible by `n`. | +| `MATCHER_P2(IsBetween, a, b, std::string(negation ? "isn't" : "is") + " between " + PrintToString(a) + " and " + PrintToString(b)) { return a <= arg && arg <= b; }` | Defines a matcher `IsBetween(a, b)` to match a value in the range [`a`, `b`]. | + + +**Notes:** + +1. The `MATCHER*` macros cannot be used inside a function or class. +2. The matcher body must be *purely functional* (i.e. it cannot have any side + effect, and the result must not depend on anything other than the value + being matched and the matcher parameters). +3. You can use `PrintToString(x)` to convert a value `x` of any type to a + string. + +### Actions {#ActionList} + +**Actions** specify what a mock function should do when invoked. + +#### Returning a Value + + +| | | +| :-------------------------- | :-------------------------------------------- | +| `Return()` | Return from a `void` mock function. | +| `Return(value)` | Return `value`. If the type of `value` is different to the mock function's return type, `value` is converted to the latter type at the time the expectation is set, not when the action is executed. | +| `ReturnArg()` | Return the `N`-th (0-based) argument. | +| `ReturnNew(a1, ..., ak)` | Return `new T(a1, ..., ak)`; a different object is created each time. | +| `ReturnNull()` | Return a null pointer. | +| `ReturnPointee(ptr)` | Return the value pointed to by `ptr`. | +| `ReturnRef(variable)` | Return a reference to `variable`. | +| `ReturnRefOfCopy(value)` | Return a reference to a copy of `value`; the copy lives as long as the action. | + + +#### Side Effects + + +| | | +| :--------------------------------- | :-------------------------------------- | +| `Assign(&variable, value)` | Assign `value` to variable. | +| `DeleteArg()` | Delete the `N`-th (0-based) argument, which must be a pointer. | +| `SaveArg(pointer)` | Save the `N`-th (0-based) argument to `*pointer`. | +| `SaveArgPointee(pointer)` | Save the value pointed to by the `N`-th (0-based) argument to `*pointer`. | +| `SetArgReferee(value)` | Assign value to the variable referenced by the `N`-th (0-based) argument. | +| `SetArgPointee(value)` | Assign `value` to the variable pointed by the `N`-th (0-based) argument. | +| `SetArgumentPointee(value)` | Same as `SetArgPointee(value)`. Deprecated. Will be removed in v1.7.0. | +| `SetArrayArgument(first, last)` | Copies the elements in source range [`first`, `last`) to the array pointed to by the `N`-th (0-based) argument, which can be either a pointer or an iterator. The action does not take ownership of the elements in the source range. | +| `SetErrnoAndReturn(error, value)` | Set `errno` to `error` and return `value`. | +| `Throw(exception)` | Throws the given exception, which can be any copyable value. Available since v1.1.0. | + + +#### Using a Function, Functor, or Lambda as an Action + +In the following, by "callable" we mean a free function, `std::function`, +functor, or lambda. + + +| | | +| :---------------------------------- | :------------------------------------- | +| `f` | Invoke f with the arguments passed to the mock function, where f is a callable. | +| `Invoke(f)` | Invoke `f` with the arguments passed to the mock function, where `f` can be a global/static function or a functor. | +| `Invoke(object_pointer, &class::method)` | Invoke the method on the object with the arguments passed to the mock function. | +| `InvokeWithoutArgs(f)` | Invoke `f`, which can be a global/static function or a functor. `f` must take no arguments. | +| `InvokeWithoutArgs(object_pointer, &class::method)` | Invoke the method on the object, which takes no arguments. | +| `InvokeArgument(arg1, arg2, ..., argk)` | Invoke the mock function's `N`-th (0-based) argument, which must be a function or a functor, with the `k` arguments. | + + +The return value of the invoked function is used as the return value of the +action. + +When defining a callable to be used with `Invoke*()`, you can declare any unused +parameters as `Unused`: + +```cpp +using ::testing::Invoke; +double Distance(Unused, double x, double y) { return sqrt(x*x + y*y); } +... +EXPECT_CALL(mock, Foo("Hi", _, _)).WillOnce(Invoke(Distance)); +``` + +`Invoke(callback)` and `InvokeWithoutArgs(callback)` take ownership of +`callback`, which must be permanent. The type of `callback` must be a base +callback type instead of a derived one, e.g. + +```cpp + BlockingClosure* done = new BlockingClosure; + ... Invoke(done) ...; // This won't compile! + + Closure* done2 = new BlockingClosure; + ... Invoke(done2) ...; // This works. +``` + +In `InvokeArgument(...)`, if an argument needs to be passed by reference, +wrap it inside `ByRef()`. For example, + +```cpp +using ::testing::ByRef; +using ::testing::InvokeArgument; +... +InvokeArgument<2>(5, string("Hi"), ByRef(foo)) +``` + +calls the mock function's #2 argument, passing to it `5` and `string("Hi")` by +value, and `foo` by reference. + +#### Default Action + + +| Matcher | Description | +| :------------ | :----------------------------------------------------- | +| `DoDefault()` | Do the default action (specified by `ON_CALL()` or the built-in one). | + + +**Note:** due to technical reasons, `DoDefault()` cannot be used inside a +composite action - trying to do so will result in a run-time error. + + + +#### Composite Actions + + +| | | +| :----------------------------- | :------------------------------------------ | +| `DoAll(a1, a2, ..., an)` | Do all actions `a1` to `an` and return the result of `an` in each invocation. The first `n - 1` sub-actions must return void. | +| `IgnoreResult(a)` | Perform action `a` and ignore its result. `a` must not return void. | +| `WithArg(a)` | Pass the `N`-th (0-based) argument of the mock function to action `a` and perform it. | +| `WithArgs(a)` | Pass the selected (0-based) arguments of the mock function to action `a` and perform it. | +| `WithoutArgs(a)` | Perform action `a` without any arguments. | + + +#### Defining Actions + + + + + + + +
`struct SumAction {`
+  `template `
+  `T operator()(T x, Ty) { return x + y; }`
+ `};` +
Defines a generic functor that can be used as an action summing its + arguments.
+ + +| | | +| :--------------------------------- | :-------------------------------------- | +| `ACTION(Sum) { return arg0 + arg1; }` | Defines an action `Sum()` to return the sum of the mock function's argument #0 and #1. | +| `ACTION_P(Plus, n) { return arg0 + n; }` | Defines an action `Plus(n)` to return the sum of the mock function's argument #0 and `n`. | +| `ACTION_Pk(Foo, p1, ..., pk) { statements; }` | Defines a parameterized action `Foo(p1, ..., pk)` to execute the given `statements`. | + + +The `ACTION*` macros cannot be used inside a function or class. + +### Cardinalities {#CardinalityList} + +These are used in `Times()` to specify how many times a mock function will be +called: + + +| | | +| :---------------- | :----------------------------------------------------- | +| `AnyNumber()` | The function can be called any number of times. | +| `AtLeast(n)` | The call is expected at least `n` times. | +| `AtMost(n)` | The call is expected at most `n` times. | +| `Between(m, n)` | The call is expected between `m` and `n` (inclusive) times. | +| `Exactly(n) or n` | The call is expected exactly `n` times. In particular, the call should never happen when `n` is 0. | + + +### Expectation Order + +By default, the expectations can be matched in *any* order. If some or all +expectations must be matched in a given order, there are two ways to specify it. +They can be used either independently or together. + +#### The After Clause {#AfterClause} + +```cpp +using ::testing::Expectation; +... +Expectation init_x = EXPECT_CALL(foo, InitX()); +Expectation init_y = EXPECT_CALL(foo, InitY()); +EXPECT_CALL(foo, Bar()) + .After(init_x, init_y); +``` + +says that `Bar()` can be called only after both `InitX()` and `InitY()` have +been called. + +If you don't know how many pre-requisites an expectation has when you write it, +you can use an `ExpectationSet` to collect them: + +```cpp +using ::testing::ExpectationSet; +... +ExpectationSet all_inits; +for (int i = 0; i < element_count; i++) { + all_inits += EXPECT_CALL(foo, InitElement(i)); +} +EXPECT_CALL(foo, Bar()) + .After(all_inits); +``` + +says that `Bar()` can be called only after all elements have been initialized +(but we don't care about which elements get initialized before the others). + +Modifying an `ExpectationSet` after using it in an `.After()` doesn't affect the +meaning of the `.After()`. + +#### Sequences {#UsingSequences} + +When you have a long chain of sequential expectations, it's easier to specify +the order using **sequences**, which don't require you to given each expectation +in the chain a different name. *All expected calls* in the same sequence must +occur in the order they are specified. + +```cpp +using ::testing::Return; +using ::testing::Sequence; +Sequence s1, s2; +... +EXPECT_CALL(foo, Reset()) + .InSequence(s1, s2) + .WillOnce(Return(true)); +EXPECT_CALL(foo, GetSize()) + .InSequence(s1) + .WillOnce(Return(1)); +EXPECT_CALL(foo, Describe(A())) + .InSequence(s2) + .WillOnce(Return("dummy")); +``` + +says that `Reset()` must be called before *both* `GetSize()` *and* `Describe()`, +and the latter two can occur in any order. + +To put many expectations in a sequence conveniently: + +```cpp +using ::testing::InSequence; +{ + InSequence seq; + + EXPECT_CALL(...)...; + EXPECT_CALL(...)...; + ... + EXPECT_CALL(...)...; +} +``` + +says that all expected calls in the scope of `seq` must occur in strict order. +The name `seq` is irrelevant. + +### Verifying and Resetting a Mock + +gMock will verify the expectations on a mock object when it is destructed, or +you can do it earlier: + +```cpp +using ::testing::Mock; +... +// Verifies and removes the expectations on mock_obj; +// returns true if and only if successful. +Mock::VerifyAndClearExpectations(&mock_obj); +... +// Verifies and removes the expectations on mock_obj; +// also removes the default actions set by ON_CALL(); +// returns true if and only if successful. +Mock::VerifyAndClear(&mock_obj); +``` + +You can also tell gMock that a mock object can be leaked and doesn't need to be +verified: + +```cpp +Mock::AllowLeak(&mock_obj); +``` + +### Mock Classes + +gMock defines a convenient mock class template + +```cpp +class MockFunction { + public: + MOCK_METHOD(R, Call, (A1, ..., An)); +}; +``` + +See this [recipe](cook_book.md#using-check-points) for one application of it. + +### Flags + + +| Flag | Description | +| :----------------------------- | :---------------------------------------- | +| `--gmock_catch_leaked_mocks=0` | Don't report leaked mock objects as failures. | +| `--gmock_verbose=LEVEL` | Sets the default verbosity level (`info`, `warning`, or `error`) of Google Mock messages. | + diff --git a/build/_deps/googletest-src/googlemock/docs/cook_book.md b/build/_deps/googletest-src/googlemock/docs/cook_book.md new file mode 100644 index 0000000000000000000000000000000000000000..ea55ab3583b5569dd843da4abbf2a3a20eabd2d1 --- /dev/null +++ b/build/_deps/googletest-src/googlemock/docs/cook_book.md @@ -0,0 +1,4270 @@ +# gMock Cookbook + + + +You can find recipes for using gMock here. If you haven't yet, please read +[this](for_dummies.md) first to make sure you understand the basics. + +**Note:** gMock lives in the `testing` name space. For readability, it is +recommended to write `using ::testing::Foo;` once in your file before using the +name `Foo` defined by gMock. We omit such `using` statements in this section for +brevity, but you should do it in your own code. + +## Creating Mock Classes + +Mock classes are defined as normal classes, using the `MOCK_METHOD` macro to +generate mocked methods. The macro gets 3 or 4 parameters: + +```cpp +class MyMock { + public: + MOCK_METHOD(ReturnType, MethodName, (Args...)); + MOCK_METHOD(ReturnType, MethodName, (Args...), (Specs...)); +}; +``` + +The first 3 parameters are simply the method declaration, split into 3 parts. +The 4th parameter accepts a closed list of qualifiers, which affect the +generated method: + +* **`const`** - Makes the mocked method a `const` method. Required if + overriding a `const` method. +* **`override`** - Marks the method with `override`. Recommended if overriding + a `virtual` method. +* **`noexcept`** - Marks the method with `noexcept`. Required if overriding a + `noexcept` method. +* **`Calltype(...)`** - Sets the call type for the method (e.g. to + `STDMETHODCALLTYPE`), useful in Windows. + +### Dealing with unprotected commas + +Unprotected commas, i.e. commas which are not surrounded by parentheses, prevent +`MOCK_METHOD` from parsing its arguments correctly: + +```cpp {.bad} +class MockFoo { + public: + MOCK_METHOD(std::pair, GetPair, ()); // Won't compile! + MOCK_METHOD(bool, CheckMap, (std::map, bool)); // Won't compile! +}; +``` + +Solution 1 - wrap with parentheses: + +```cpp {.good} +class MockFoo { + public: + MOCK_METHOD((std::pair), GetPair, ()); + MOCK_METHOD(bool, CheckMap, ((std::map), bool)); +}; +``` + +Note that wrapping a return or argument type with parentheses is, in general, +invalid C++. `MOCK_METHOD` removes the parentheses. + +Solution 2 - define an alias: + +```cpp {.good} +class MockFoo { + public: + using BoolAndInt = std::pair; + MOCK_METHOD(BoolAndInt, GetPair, ()); + using MapIntDouble = std::map; + MOCK_METHOD(bool, CheckMap, (MapIntDouble, bool)); +}; +``` + +### Mocking Private or Protected Methods + +You must always put a mock method definition (`MOCK_METHOD`) in a `public:` +section of the mock class, regardless of the method being mocked being `public`, +`protected`, or `private` in the base class. This allows `ON_CALL` and +`EXPECT_CALL` to reference the mock function from outside of the mock class. +(Yes, C++ allows a subclass to change the access level of a virtual function in +the base class.) Example: + +```cpp +class Foo { + public: + ... + virtual bool Transform(Gadget* g) = 0; + + protected: + virtual void Resume(); + + private: + virtual int GetTimeOut(); +}; + +class MockFoo : public Foo { + public: + ... + MOCK_METHOD(bool, Transform, (Gadget* g), (override)); + + // The following must be in the public section, even though the + // methods are protected or private in the base class. + MOCK_METHOD(void, Resume, (), (override)); + MOCK_METHOD(int, GetTimeOut, (), (override)); +}; +``` + +### Mocking Overloaded Methods + +You can mock overloaded functions as usual. No special attention is required: + +```cpp +class Foo { + ... + + // Must be virtual as we'll inherit from Foo. + virtual ~Foo(); + + // Overloaded on the types and/or numbers of arguments. + virtual int Add(Element x); + virtual int Add(int times, Element x); + + // Overloaded on the const-ness of this object. + virtual Bar& GetBar(); + virtual const Bar& GetBar() const; +}; + +class MockFoo : public Foo { + ... + MOCK_METHOD(int, Add, (Element x), (override)); + MOCK_METHOD(int, Add, (int times, Element x), (override)); + + MOCK_METHOD(Bar&, GetBar, (), (override)); + MOCK_METHOD(const Bar&, GetBar, (), (const, override)); +}; +``` + +**Note:** if you don't mock all versions of the overloaded method, the compiler +will give you a warning about some methods in the base class being hidden. To +fix that, use `using` to bring them in scope: + +```cpp +class MockFoo : public Foo { + ... + using Foo::Add; + MOCK_METHOD(int, Add, (Element x), (override)); + // We don't want to mock int Add(int times, Element x); + ... +}; +``` + +### Mocking Class Templates + +You can mock class templates just like any class. + +```cpp +template +class StackInterface { + ... + // Must be virtual as we'll inherit from StackInterface. + virtual ~StackInterface(); + + virtual int GetSize() const = 0; + virtual void Push(const Elem& x) = 0; +}; + +template +class MockStack : public StackInterface { + ... + MOCK_METHOD(int, GetSize, (), (override)); + MOCK_METHOD(void, Push, (const Elem& x), (override)); +}; +``` + +### Mocking Non-virtual Methods {#MockingNonVirtualMethods} + +gMock can mock non-virtual functions to be used in Hi-perf dependency +injection. + +In this case, instead of sharing a common base class with the real class, your +mock class will be *unrelated* to the real class, but contain methods with the +same signatures. The syntax for mocking non-virtual methods is the *same* as +mocking virtual methods (just don't add `override`): + +```cpp +// A simple packet stream class. None of its members is virtual. +class ConcretePacketStream { + public: + void AppendPacket(Packet* new_packet); + const Packet* GetPacket(size_t packet_number) const; + size_t NumberOfPackets() const; + ... +}; + +// A mock packet stream class. It inherits from no other, but defines +// GetPacket() and NumberOfPackets(). +class MockPacketStream { + public: + MOCK_METHOD(const Packet*, GetPacket, (size_t packet_number), (const)); + MOCK_METHOD(size_t, NumberOfPackets, (), (const)); + ... +}; +``` + +Note that the mock class doesn't define `AppendPacket()`, unlike the real class. +That's fine as long as the test doesn't need to call it. + +Next, you need a way to say that you want to use `ConcretePacketStream` in +production code, and use `MockPacketStream` in tests. Since the functions are +not virtual and the two classes are unrelated, you must specify your choice at +*compile time* (as opposed to run time). + +One way to do it is to templatize your code that needs to use a packet stream. +More specifically, you will give your code a template type argument for the type +of the packet stream. In production, you will instantiate your template with +`ConcretePacketStream` as the type argument. In tests, you will instantiate the +same template with `MockPacketStream`. For example, you may write: + +```cpp +template +void CreateConnection(PacketStream* stream) { ... } + +template +class PacketReader { + public: + void ReadPackets(PacketStream* stream, size_t packet_num); +}; +``` + +Then you can use `CreateConnection()` and +`PacketReader` in production code, and use +`CreateConnection()` and `PacketReader` in +tests. + +```cpp + MockPacketStream mock_stream; + EXPECT_CALL(mock_stream, ...)...; + .. set more expectations on mock_stream ... + PacketReader reader(&mock_stream); + ... exercise reader ... +``` + +### Mocking Free Functions + +It's possible to use gMock to mock a free function (i.e. a C-style function or a +static method). You just need to rewrite your code to use an interface (abstract +class). + +Instead of calling a free function (say, `OpenFile`) directly, introduce an +interface for it and have a concrete subclass that calls the free function: + +```cpp +class FileInterface { + public: + ... + virtual bool Open(const char* path, const char* mode) = 0; +}; + +class File : public FileInterface { + public: + ... + virtual bool Open(const char* path, const char* mode) { + return OpenFile(path, mode); + } +}; +``` + +Your code should talk to `FileInterface` to open a file. Now it's easy to mock +out the function. + +This may seem like a lot of hassle, but in practice you often have multiple +related functions that you can put in the same interface, so the per-function +syntactic overhead will be much lower. + +If you are concerned about the performance overhead incurred by virtual +functions, and profiling confirms your concern, you can combine this with the +recipe for [mocking non-virtual methods](#MockingNonVirtualMethods). + +### Old-Style `MOCK_METHODn` Macros + +Before the generic `MOCK_METHOD` macro was introduced, mocks where created using +a family of macros collectively called `MOCK_METHODn`. These macros are still +supported, though migration to the new `MOCK_METHOD` is recommended. + +The macros in the `MOCK_METHODn` family differ from `MOCK_METHOD`: + +* The general structure is `MOCK_METHODn(MethodName, ReturnType(Args))`, + instead of `MOCK_METHOD(ReturnType, MethodName, (Args))`. +* The number `n` must equal the number of arguments. +* When mocking a const method, one must use `MOCK_CONST_METHODn`. +* When mocking a class template, the macro name must be suffixed with `_T`. +* In order to specify the call type, the macro name must be suffixed with + `_WITH_CALLTYPE`, and the call type is the first macro argument. + +Old macros and their new equivalents: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Simple
Old `MOCK_METHOD1(Foo, bool(int))`
New `MOCK_METHOD(bool, Foo, (int))`
Const Method
Old +`MOCK_CONST_METHOD1(Foo, bool(int))`
New +`MOCK_METHOD(bool, Foo, (int), (const))`
Method in a Class Template
Old `MOCK_METHOD1_T(Foo, bool(int))`
New +`MOCK_METHOD(bool, Foo, (int))`
Const Method in a Class Template
Old + `MOCK_CONST_METHOD1_T(Foo, bool(int))`
New + `MOCK_METHOD(bool, Foo, (int), (const))`
Method with Call Type
Old +`MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE, Foo, bool(int))`
New `MOCK_METHOD(bool, Foo, (int), +(Calltype(STDMETHODCALLTYPE)))`
Const Method with Call Type
Old `MOCK_CONST_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE, Foo, bool(int))`
New `MOCK_METHOD(bool, Foo, (int), (const, +Calltype(STDMETHODCALLTYPE)))`
Method with Call Type in a Class Template
Old `MOCK_METHOD1_T_WITH_CALLTYPE(STDMETHODCALLTYPE, Foo, +bool(int))`
New `MOCK_METHOD(bool, Foo, (int), +(Calltype(STDMETHODCALLTYPE)))`
Const Method with Call Type in a Class Template
Old `MOCK_CONST_METHOD1_T_WITH_CALLTYPE(STDMETHODCALLTYPE, +Foo, bool(int))`
New `MOCK_METHOD(bool, Foo, +(int), (const, Calltype(STDMETHODCALLTYPE)))`
+ +### The Nice, the Strict, and the Naggy {#NiceStrictNaggy} + +If a mock method has no `EXPECT_CALL` spec but is called, we say that it's an +"uninteresting call", and the default action (which can be specified using +`ON_CALL()`) of the method will be taken. Currently, an uninteresting call will +also by default cause gMock to print a warning. (In the future, we might remove +this warning by default.) + +However, sometimes you may want to ignore these uninteresting calls, and +sometimes you may want to treat them as errors. gMock lets you make the decision +on a per-mock-object basis. + +Suppose your test uses a mock class `MockFoo`: + +```cpp +TEST(...) { + MockFoo mock_foo; + EXPECT_CALL(mock_foo, DoThis()); + ... code that uses mock_foo ... +} +``` + +If a method of `mock_foo` other than `DoThis()` is called, you will get a +warning. However, if you rewrite your test to use `NiceMock` instead, +you can suppress the warning: + +```cpp +using ::testing::NiceMock; + +TEST(...) { + NiceMock mock_foo; + EXPECT_CALL(mock_foo, DoThis()); + ... code that uses mock_foo ... +} +``` + +`NiceMock` is a subclass of `MockFoo`, so it can be used wherever +`MockFoo` is accepted. + +It also works if `MockFoo`'s constructor takes some arguments, as +`NiceMock` "inherits" `MockFoo`'s constructors: + +```cpp +using ::testing::NiceMock; + +TEST(...) { + NiceMock mock_foo(5, "hi"); // Calls MockFoo(5, "hi"). + EXPECT_CALL(mock_foo, DoThis()); + ... code that uses mock_foo ... +} +``` + +The usage of `StrictMock` is similar, except that it makes all uninteresting +calls failures: + +```cpp +using ::testing::StrictMock; + +TEST(...) { + StrictMock mock_foo; + EXPECT_CALL(mock_foo, DoThis()); + ... code that uses mock_foo ... + + // The test will fail if a method of mock_foo other than DoThis() + // is called. +} +``` + +NOTE: `NiceMock` and `StrictMock` only affects *uninteresting* calls (calls of +*methods* with no expectations); they do not affect *unexpected* calls (calls of +methods with expectations, but they don't match). See +[Understanding Uninteresting vs Unexpected Calls](#uninteresting-vs-unexpected). + +There are some caveats though (I dislike them just as much as the next guy, but +sadly they are side effects of C++'s limitations): + +1. `NiceMock` and `StrictMock` only work for mock methods + defined using the `MOCK_METHOD` macro **directly** in the `MockFoo` class. + If a mock method is defined in a **base class** of `MockFoo`, the "nice" or + "strict" modifier may not affect it, depending on the compiler. In + particular, nesting `NiceMock` and `StrictMock` (e.g. + `NiceMock >`) is **not** supported. +2. `NiceMock` and `StrictMock` may not work correctly if the + destructor of `MockFoo` is not virtual. We would like to fix this, but it + requires cleaning up existing tests. http://b/28934720 tracks the issue. +3. During the constructor or destructor of `MockFoo`, the mock object is *not* + nice or strict. This may cause surprises if the constructor or destructor + calls a mock method on `this` object. (This behavior, however, is consistent + with C++'s general rule: if a constructor or destructor calls a virtual + method of `this` object, that method is treated as non-virtual. In other + words, to the base class's constructor or destructor, `this` object behaves + like an instance of the base class, not the derived class. This rule is + required for safety. Otherwise a base constructor may use members of a + derived class before they are initialized, or a base destructor may use + members of a derived class after they have been destroyed.) + +Finally, you should be **very cautious** about when to use naggy or strict +mocks, as they tend to make tests more brittle and harder to maintain. When you +refactor your code without changing its externally visible behavior, ideally you +shouldn't need to update any tests. If your code interacts with a naggy mock, +however, you may start to get spammed with warnings as the result of your +change. Worse, if your code interacts with a strict mock, your tests may start +to fail and you'll be forced to fix them. Our general recommendation is to use +nice mocks (not yet the default) most of the time, use naggy mocks (the current +default) when developing or debugging tests, and use strict mocks only as the +last resort. + +### Simplifying the Interface without Breaking Existing Code {#SimplerInterfaces} + +Sometimes a method has a long list of arguments that is mostly uninteresting. +For example: + +```cpp +class LogSink { + public: + ... + virtual void send(LogSeverity severity, const char* full_filename, + const char* base_filename, int line, + const struct tm* tm_time, + const char* message, size_t message_len) = 0; +}; +``` + +This method's argument list is lengthy and hard to work with (the `message` +argument is not even 0-terminated). If we mock it as is, using the mock will be +awkward. If, however, we try to simplify this interface, we'll need to fix all +clients depending on it, which is often infeasible. + +The trick is to redispatch the method in the mock class: + +```cpp +class ScopedMockLog : public LogSink { + public: + ... + virtual void send(LogSeverity severity, const char* full_filename, + const char* base_filename, int line, const tm* tm_time, + const char* message, size_t message_len) { + // We are only interested in the log severity, full file name, and + // log message. + Log(severity, full_filename, std::string(message, message_len)); + } + + // Implements the mock method: + // + // void Log(LogSeverity severity, + // const string& file_path, + // const string& message); + MOCK_METHOD(void, Log, + (LogSeverity severity, const string& file_path, + const string& message)); +}; +``` + +By defining a new mock method with a trimmed argument list, we make the mock +class more user-friendly. + +This technique may also be applied to make overloaded methods more amenable to +mocking. For example, when overloads have been used to implement default +arguments: + +```cpp +class MockTurtleFactory : public TurtleFactory { + public: + Turtle* MakeTurtle(int length, int weight) override { ... } + Turtle* MakeTurtle(int length, int weight, int speed) override { ... } + + // the above methods delegate to this one: + MOCK_METHOD(Turtle*, DoMakeTurtle, ()); +}; +``` + +This allows tests that don't care which overload was invoked to avoid specifying +argument matchers: + +```cpp +ON_CALL(factory, DoMakeTurtle) + .WillByDefault(MakeMockTurtle()); +``` + +### Alternative to Mocking Concrete Classes + +Often you may find yourself using classes that don't implement interfaces. In +order to test your code that uses such a class (let's call it `Concrete`), you +may be tempted to make the methods of `Concrete` virtual and then mock it. + +Try not to do that. + +Making a non-virtual function virtual is a big decision. It creates an extension +point where subclasses can tweak your class' behavior. This weakens your control +on the class because now it's harder to maintain the class invariants. You +should make a function virtual only when there is a valid reason for a subclass +to override it. + +Mocking concrete classes directly is problematic as it creates a tight coupling +between the class and the tests - any small change in the class may invalidate +your tests and make test maintenance a pain. + +To avoid such problems, many programmers have been practicing "coding to +interfaces": instead of talking to the `Concrete` class, your code would define +an interface and talk to it. Then you implement that interface as an adaptor on +top of `Concrete`. In tests, you can easily mock that interface to observe how +your code is doing. + +This technique incurs some overhead: + +* You pay the cost of virtual function calls (usually not a problem). +* There is more abstraction for the programmers to learn. + +However, it can also bring significant benefits in addition to better +testability: + +* `Concrete`'s API may not fit your problem domain very well, as you may not + be the only client it tries to serve. By designing your own interface, you + have a chance to tailor it to your need - you may add higher-level + functionalities, rename stuff, etc instead of just trimming the class. This + allows you to write your code (user of the interface) in a more natural way, + which means it will be more readable, more maintainable, and you'll be more + productive. +* If `Concrete`'s implementation ever has to change, you don't have to rewrite + everywhere it is used. Instead, you can absorb the change in your + implementation of the interface, and your other code and tests will be + insulated from this change. + +Some people worry that if everyone is practicing this technique, they will end +up writing lots of redundant code. This concern is totally understandable. +However, there are two reasons why it may not be the case: + +* Different projects may need to use `Concrete` in different ways, so the best + interfaces for them will be different. Therefore, each of them will have its + own domain-specific interface on top of `Concrete`, and they will not be the + same code. +* If enough projects want to use the same interface, they can always share it, + just like they have been sharing `Concrete`. You can check in the interface + and the adaptor somewhere near `Concrete` (perhaps in a `contrib` + sub-directory) and let many projects use it. + +You need to weigh the pros and cons carefully for your particular problem, but +I'd like to assure you that the Java community has been practicing this for a +long time and it's a proven effective technique applicable in a wide variety of +situations. :-) + +### Delegating Calls to a Fake {#DelegatingToFake} + +Some times you have a non-trivial fake implementation of an interface. For +example: + +```cpp +class Foo { + public: + virtual ~Foo() {} + virtual char DoThis(int n) = 0; + virtual void DoThat(const char* s, int* p) = 0; +}; + +class FakeFoo : public Foo { + public: + char DoThis(int n) override { + return (n > 0) ? '+' : + (n < 0) ? '-' : '0'; + } + + void DoThat(const char* s, int* p) override { + *p = strlen(s); + } +}; +``` + +Now you want to mock this interface such that you can set expectations on it. +However, you also want to use `FakeFoo` for the default behavior, as duplicating +it in the mock object is, well, a lot of work. + +When you define the mock class using gMock, you can have it delegate its default +action to a fake class you already have, using this pattern: + +```cpp +class MockFoo : public Foo { + public: + // Normal mock method definitions using gMock. + MOCK_METHOD(char, DoThis, (int n), (override)); + MOCK_METHOD(void, DoThat, (const char* s, int* p), (override)); + + // Delegates the default actions of the methods to a FakeFoo object. + // This must be called *before* the custom ON_CALL() statements. + void DelegateToFake() { + ON_CALL(*this, DoThis).WillByDefault([this](int n) { + return fake_.DoThis(n); + }); + ON_CALL(*this, DoThat).WillByDefault([this](const char* s, int* p) { + fake_.DoThat(s, p); + }); + } + + private: + FakeFoo fake_; // Keeps an instance of the fake in the mock. +}; +``` + +With that, you can use `MockFoo` in your tests as usual. Just remember that if +you don't explicitly set an action in an `ON_CALL()` or `EXPECT_CALL()`, the +fake will be called upon to do it.: + +```cpp +using ::testing::_; + +TEST(AbcTest, Xyz) { + MockFoo foo; + + foo.DelegateToFake(); // Enables the fake for delegation. + + // Put your ON_CALL(foo, ...)s here, if any. + + // No action specified, meaning to use the default action. + EXPECT_CALL(foo, DoThis(5)); + EXPECT_CALL(foo, DoThat(_, _)); + + int n = 0; + EXPECT_EQ('+', foo.DoThis(5)); // FakeFoo::DoThis() is invoked. + foo.DoThat("Hi", &n); // FakeFoo::DoThat() is invoked. + EXPECT_EQ(2, n); +} +``` + +**Some tips:** + +* If you want, you can still override the default action by providing your own + `ON_CALL()` or using `.WillOnce()` / `.WillRepeatedly()` in `EXPECT_CALL()`. +* In `DelegateToFake()`, you only need to delegate the methods whose fake + implementation you intend to use. + +* The general technique discussed here works for overloaded methods, but + you'll need to tell the compiler which version you mean. To disambiguate a + mock function (the one you specify inside the parentheses of `ON_CALL()`), + use [this technique](#SelectOverload); to disambiguate a fake function (the + one you place inside `Invoke()`), use a `static_cast` to specify the + function's type. For instance, if class `Foo` has methods `char DoThis(int + n)` and `bool DoThis(double x) const`, and you want to invoke the latter, + you need to write `Invoke(&fake_, static_cast(&FakeFoo::DoThis))` instead of `Invoke(&fake_, &FakeFoo::DoThis)` + (The strange-looking thing inside the angled brackets of `static_cast` is + the type of a function pointer to the second `DoThis()` method.). + +* Having to mix a mock and a fake is often a sign of something gone wrong. + Perhaps you haven't got used to the interaction-based way of testing yet. Or + perhaps your interface is taking on too many roles and should be split up. + Therefore, **don't abuse this**. We would only recommend to do it as an + intermediate step when you are refactoring your code. + +Regarding the tip on mixing a mock and a fake, here's an example on why it may +be a bad sign: Suppose you have a class `System` for low-level system +operations. In particular, it does file and I/O operations. And suppose you want +to test how your code uses `System` to do I/O, and you just want the file +operations to work normally. If you mock out the entire `System` class, you'll +have to provide a fake implementation for the file operation part, which +suggests that `System` is taking on too many roles. + +Instead, you can define a `FileOps` interface and an `IOOps` interface and split +`System`'s functionalities into the two. Then you can mock `IOOps` without +mocking `FileOps`. + +### Delegating Calls to a Real Object + +When using testing doubles (mocks, fakes, stubs, and etc), sometimes their +behaviors will differ from those of the real objects. This difference could be +either intentional (as in simulating an error such that you can test the error +handling code) or unintentional. If your mocks have different behaviors than the +real objects by mistake, you could end up with code that passes the tests but +fails in production. + +You can use the *delegating-to-real* technique to ensure that your mock has the +same behavior as the real object while retaining the ability to validate calls. +This technique is very similar to the [delegating-to-fake](#DelegatingToFake) +technique, the difference being that we use a real object instead of a fake. +Here's an example: + +```cpp +using ::testing::AtLeast; + +class MockFoo : public Foo { + public: + MockFoo() { + // By default, all calls are delegated to the real object. + ON_CALL(*this, DoThis).WillByDefault([this](int n) { + return real_.DoThis(n); + }); + ON_CALL(*this, DoThat).WillByDefault([this](const char* s, int* p) { + real_.DoThat(s, p); + }); + ... + } + MOCK_METHOD(char, DoThis, ...); + MOCK_METHOD(void, DoThat, ...); + ... + private: + Foo real_; +}; + +... + MockFoo mock; + EXPECT_CALL(mock, DoThis()) + .Times(3); + EXPECT_CALL(mock, DoThat("Hi")) + .Times(AtLeast(1)); + ... use mock in test ... +``` + +With this, gMock will verify that your code made the right calls (with the right +arguments, in the right order, called the right number of times, etc), and a +real object will answer the calls (so the behavior will be the same as in +production). This gives you the best of both worlds. + +### Delegating Calls to a Parent Class + +Ideally, you should code to interfaces, whose methods are all pure virtual. In +reality, sometimes you do need to mock a virtual method that is not pure (i.e, +it already has an implementation). For example: + +```cpp +class Foo { + public: + virtual ~Foo(); + + virtual void Pure(int n) = 0; + virtual int Concrete(const char* str) { ... } +}; + +class MockFoo : public Foo { + public: + // Mocking a pure method. + MOCK_METHOD(void, Pure, (int n), (override)); + // Mocking a concrete method. Foo::Concrete() is shadowed. + MOCK_METHOD(int, Concrete, (const char* str), (override)); +}; +``` + +Sometimes you may want to call `Foo::Concrete()` instead of +`MockFoo::Concrete()`. Perhaps you want to do it as part of a stub action, or +perhaps your test doesn't need to mock `Concrete()` at all (but it would be +oh-so painful to have to define a new mock class whenever you don't need to mock +one of its methods). + +The trick is to leave a back door in your mock class for accessing the real +methods in the base class: + +```cpp +class MockFoo : public Foo { + public: + // Mocking a pure method. + MOCK_METHOD(void, Pure, (int n), (override)); + // Mocking a concrete method. Foo::Concrete() is shadowed. + MOCK_METHOD(int, Concrete, (const char* str), (override)); + + // Use this to call Concrete() defined in Foo. + int FooConcrete(const char* str) { return Foo::Concrete(str); } +}; +``` + +Now, you can call `Foo::Concrete()` inside an action by: + +```cpp +... + EXPECT_CALL(foo, Concrete).WillOnce([&foo](const char* str) { + return foo.FooConcrete(str); + }); +``` + +or tell the mock object that you don't want to mock `Concrete()`: + +```cpp +... + ON_CALL(foo, Concrete).WillByDefault([&foo](const char* str) { + return foo.FooConcrete(str); + }); +``` + +(Why don't we just write `{ return foo.Concrete(str); }`? If you do that, +`MockFoo::Concrete()` will be called (and cause an infinite recursion) since +`Foo::Concrete()` is virtual. That's just how C++ works.) + +## Using Matchers + +### Matching Argument Values Exactly + +You can specify exactly which arguments a mock method is expecting: + +```cpp +using ::testing::Return; +... + EXPECT_CALL(foo, DoThis(5)) + .WillOnce(Return('a')); + EXPECT_CALL(foo, DoThat("Hello", bar)); +``` + +### Using Simple Matchers + +You can use matchers to match arguments that have a certain property: + +```cpp +using ::testing::NotNull; +using ::testing::Return; +... + EXPECT_CALL(foo, DoThis(Ge(5))) // The argument must be >= 5. + .WillOnce(Return('a')); + EXPECT_CALL(foo, DoThat("Hello", NotNull())); + // The second argument must not be NULL. +``` + +A frequently used matcher is `_`, which matches anything: + +```cpp + EXPECT_CALL(foo, DoThat(_, NotNull())); +``` + + +### Combining Matchers {#CombiningMatchers} + +You can build complex matchers from existing ones using `AllOf()`, +`AllOfArray()`, `AnyOf()`, `AnyOfArray()` and `Not()`: + +```cpp +using ::testing::AllOf; +using ::testing::Gt; +using ::testing::HasSubstr; +using ::testing::Ne; +using ::testing::Not; +... + // The argument must be > 5 and != 10. + EXPECT_CALL(foo, DoThis(AllOf(Gt(5), + Ne(10)))); + + // The first argument must not contain sub-string "blah". + EXPECT_CALL(foo, DoThat(Not(HasSubstr("blah")), + NULL)); +``` + +### Casting Matchers {#SafeMatcherCast} + +gMock matchers are statically typed, meaning that the compiler can catch your +mistake if you use a matcher of the wrong type (for example, if you use `Eq(5)` +to match a `string` argument). Good for you! + +Sometimes, however, you know what you're doing and want the compiler to give you +some slack. One example is that you have a matcher for `long` and the argument +you want to match is `int`. While the two types aren't exactly the same, there +is nothing really wrong with using a `Matcher` to match an `int` - after +all, we can first convert the `int` argument to a `long` losslessly before +giving it to the matcher. + +To support this need, gMock gives you the `SafeMatcherCast(m)` function. It +casts a matcher `m` to type `Matcher`. To ensure safety, gMock checks that +(let `U` be the type `m` accepts : + +1. Type `T` can be *implicitly* cast to type `U`; +2. When both `T` and `U` are built-in arithmetic types (`bool`, integers, and + floating-point numbers), the conversion from `T` to `U` is not lossy (in + other words, any value representable by `T` can also be represented by `U`); + and +3. When `U` is a reference, `T` must also be a reference (as the underlying + matcher may be interested in the address of the `U` value). + +The code won't compile if any of these conditions isn't met. + +Here's one example: + +```cpp +using ::testing::SafeMatcherCast; + +// A base class and a child class. +class Base { ... }; +class Derived : public Base { ... }; + +class MockFoo : public Foo { + public: + MOCK_METHOD(void, DoThis, (Derived* derived), (override)); +}; + +... + MockFoo foo; + // m is a Matcher we got from somewhere. + EXPECT_CALL(foo, DoThis(SafeMatcherCast(m))); +``` + +If you find `SafeMatcherCast(m)` too limiting, you can use a similar function +`MatcherCast(m)`. The difference is that `MatcherCast` works as long as you +can `static_cast` type `T` to type `U`. + +`MatcherCast` essentially lets you bypass C++'s type system (`static_cast` isn't +always safe as it could throw away information, for example), so be careful not +to misuse/abuse it. + +### Selecting Between Overloaded Functions {#SelectOverload} + +If you expect an overloaded function to be called, the compiler may need some +help on which overloaded version it is. + +To disambiguate functions overloaded on the const-ness of this object, use the +`Const()` argument wrapper. + +```cpp +using ::testing::ReturnRef; + +class MockFoo : public Foo { + ... + MOCK_METHOD(Bar&, GetBar, (), (override)); + MOCK_METHOD(const Bar&, GetBar, (), (const, override)); +}; + +... + MockFoo foo; + Bar bar1, bar2; + EXPECT_CALL(foo, GetBar()) // The non-const GetBar(). + .WillOnce(ReturnRef(bar1)); + EXPECT_CALL(Const(foo), GetBar()) // The const GetBar(). + .WillOnce(ReturnRef(bar2)); +``` + +(`Const()` is defined by gMock and returns a `const` reference to its argument.) + +To disambiguate overloaded functions with the same number of arguments but +different argument types, you may need to specify the exact type of a matcher, +either by wrapping your matcher in `Matcher()`, or using a matcher whose +type is fixed (`TypedEq`, `An()`, etc): + +```cpp +using ::testing::An; +using ::testing::Matcher; +using ::testing::TypedEq; + +class MockPrinter : public Printer { + public: + MOCK_METHOD(void, Print, (int n), (override)); + MOCK_METHOD(void, Print, (char c), (override)); +}; + +TEST(PrinterTest, Print) { + MockPrinter printer; + + EXPECT_CALL(printer, Print(An())); // void Print(int); + EXPECT_CALL(printer, Print(Matcher(Lt(5)))); // void Print(int); + EXPECT_CALL(printer, Print(TypedEq('a'))); // void Print(char); + + printer.Print(3); + printer.Print(6); + printer.Print('a'); +} +``` + +### Performing Different Actions Based on the Arguments + +When a mock method is called, the *last* matching expectation that's still +active will be selected (think "newer overrides older"). So, you can make a +method do different things depending on its argument values like this: + +```cpp +using ::testing::_; +using ::testing::Lt; +using ::testing::Return; +... + // The default case. + EXPECT_CALL(foo, DoThis(_)) + .WillRepeatedly(Return('b')); + // The more specific case. + EXPECT_CALL(foo, DoThis(Lt(5))) + .WillRepeatedly(Return('a')); +``` + +Now, if `foo.DoThis()` is called with a value less than 5, `'a'` will be +returned; otherwise `'b'` will be returned. + +### Matching Multiple Arguments as a Whole + +Sometimes it's not enough to match the arguments individually. For example, we +may want to say that the first argument must be less than the second argument. +The `With()` clause allows us to match all arguments of a mock function as a +whole. For example, + +```cpp +using ::testing::_; +using ::testing::Ne; +using ::testing::Lt; +... + EXPECT_CALL(foo, InRange(Ne(0), _)) + .With(Lt()); +``` + +says that the first argument of `InRange()` must not be 0, and must be less than +the second argument. + +The expression inside `With()` must be a matcher of type +`Matcher< ::std::tuple >`, where `A1`, ..., `An` are the types of +the function arguments. + +You can also write `AllArgs(m)` instead of `m` inside `.With()`. The two forms +are equivalent, but `.With(AllArgs(Lt()))` is more readable than `.With(Lt())`. + +You can use `Args(m)` to match the `n` selected arguments (as a +tuple) against `m`. For example, + +```cpp +using ::testing::_; +using ::testing::AllOf; +using ::testing::Args; +using ::testing::Lt; +... + EXPECT_CALL(foo, Blah) + .With(AllOf(Args<0, 1>(Lt()), Args<1, 2>(Lt()))); +``` + +says that `Blah` will be called with arguments `x`, `y`, and `z` where `x < y < +z`. Note that in this example, it wasn't necessary specify the positional +matchers. + +As a convenience and example, gMock provides some matchers for 2-tuples, +including the `Lt()` matcher above. See [here](#MultiArgMatchers) for the +complete list. + +Note that if you want to pass the arguments to a predicate of your own (e.g. +`.With(Args<0, 1>(Truly(&MyPredicate)))`), that predicate MUST be written to +take a `::std::tuple` as its argument; gMock will pass the `n` selected +arguments as *one* single tuple to the predicate. + +### Using Matchers as Predicates + +Have you noticed that a matcher is just a fancy predicate that also knows how to +describe itself? Many existing algorithms take predicates as arguments (e.g. +those defined in STL's `` header), and it would be a shame if gMock +matchers were not allowed to participate. + +Luckily, you can use a matcher where a unary predicate functor is expected by +wrapping it inside the `Matches()` function. For example, + +```cpp +#include +#include + +using ::testing::Matches; +using ::testing::Ge; + +vector v; +... +// How many elements in v are >= 10? +const int count = count_if(v.begin(), v.end(), Matches(Ge(10))); +``` + +Since you can build complex matchers from simpler ones easily using gMock, this +gives you a way to conveniently construct composite predicates (doing the same +using STL's `` header is just painful). For example, here's a +predicate that's satisfied by any number that is >= 0, <= 100, and != 50: + +```cpp +using testing::AllOf; +using testing::Ge; +using testing::Le; +using testing::Matches; +using testing::Ne; +... +Matches(AllOf(Ge(0), Le(100), Ne(50))) +``` + +### Using Matchers in googletest Assertions + +Since matchers are basically predicates that also know how to describe +themselves, there is a way to take advantage of them in googletest assertions. +It's called `ASSERT_THAT` and `EXPECT_THAT`: + +```cpp + ASSERT_THAT(value, matcher); // Asserts that value matches matcher. + EXPECT_THAT(value, matcher); // The non-fatal version. +``` + +For example, in a googletest test you can write: + +```cpp +#include "gmock/gmock.h" + +using ::testing::AllOf; +using ::testing::Ge; +using ::testing::Le; +using ::testing::MatchesRegex; +using ::testing::StartsWith; + +... + EXPECT_THAT(Foo(), StartsWith("Hello")); + EXPECT_THAT(Bar(), MatchesRegex("Line \\d+")); + ASSERT_THAT(Baz(), AllOf(Ge(5), Le(10))); +``` + +which (as you can probably guess) executes `Foo()`, `Bar()`, and `Baz()`, and +verifies that: + +* `Foo()` returns a string that starts with `"Hello"`. +* `Bar()` returns a string that matches regular expression `"Line \\d+"`. +* `Baz()` returns a number in the range [5, 10]. + +The nice thing about these macros is that *they read like English*. They +generate informative messages too. For example, if the first `EXPECT_THAT()` +above fails, the message will be something like: + +```cpp +Value of: Foo() + Actual: "Hi, world!" +Expected: starts with "Hello" +``` + +**Credit:** The idea of `(ASSERT|EXPECT)_THAT` was borrowed from Joe Walnes' +Hamcrest project, which adds `assertThat()` to JUnit. + +### Using Predicates as Matchers + +gMock provides a [built-in set](#MatcherList) of matchers. In case you find them +lacking, you can use an arbitrary unary predicate function or functor as a +matcher - as long as the predicate accepts a value of the type you want. You do +this by wrapping the predicate inside the `Truly()` function, for example: + +```cpp +using ::testing::Truly; + +int IsEven(int n) { return (n % 2) == 0 ? 1 : 0; } +... + // Bar() must be called with an even number. + EXPECT_CALL(foo, Bar(Truly(IsEven))); +``` + +Note that the predicate function / functor doesn't have to return `bool`. It +works as long as the return value can be used as the condition in in statement +`if (condition) ...`. + + + +### Matching Arguments that Are Not Copyable + +When you do an `EXPECT_CALL(mock_obj, Foo(bar))`, gMock saves away a copy of +`bar`. When `Foo()` is called later, gMock compares the argument to `Foo()` with +the saved copy of `bar`. This way, you don't need to worry about `bar` being +modified or destroyed after the `EXPECT_CALL()` is executed. The same is true +when you use matchers like `Eq(bar)`, `Le(bar)`, and so on. + +But what if `bar` cannot be copied (i.e. has no copy constructor)? You could +define your own matcher function or callback and use it with `Truly()`, as the +previous couple of recipes have shown. Or, you may be able to get away from it +if you can guarantee that `bar` won't be changed after the `EXPECT_CALL()` is +executed. Just tell gMock that it should save a reference to `bar`, instead of a +copy of it. Here's how: + +```cpp +using ::testing::ByRef; +using ::testing::Eq; +using ::testing::Lt; +... + // Expects that Foo()'s argument == bar. + EXPECT_CALL(mock_obj, Foo(Eq(ByRef(bar)))); + + // Expects that Foo()'s argument < bar. + EXPECT_CALL(mock_obj, Foo(Lt(ByRef(bar)))); +``` + +Remember: if you do this, don't change `bar` after the `EXPECT_CALL()`, or the +result is undefined. + +### Validating a Member of an Object + +Often a mock function takes a reference to object as an argument. When matching +the argument, you may not want to compare the entire object against a fixed +object, as that may be over-specification. Instead, you may need to validate a +certain member variable or the result of a certain getter method of the object. +You can do this with `Field()` and `Property()`. More specifically, + +```cpp +Field(&Foo::bar, m) +``` + +is a matcher that matches a `Foo` object whose `bar` member variable satisfies +matcher `m`. + +```cpp +Property(&Foo::baz, m) +``` + +is a matcher that matches a `Foo` object whose `baz()` method returns a value +that satisfies matcher `m`. + +For example: + + +| Expression | Description | +| :--------------------------- | :--------------------------------------- | +| `Field(&Foo::number, Ge(3))` | Matches `x` where `x.number >= 3`. | +| `Property(&Foo::name, StartsWith("John "))` | Matches `x` where `x.name()` starts with `"John "`. | + + +Note that in `Property(&Foo::baz, ...)`, method `baz()` must take no argument +and be declared as `const`. + +BTW, `Field()` and `Property()` can also match plain pointers to objects. For +instance, + +```cpp +using ::testing::Field; +using ::testing::Ge; +... +Field(&Foo::number, Ge(3)) +``` + +matches a plain pointer `p` where `p->number >= 3`. If `p` is `NULL`, the match +will always fail regardless of the inner matcher. + +What if you want to validate more than one members at the same time? Remember +that there are [`AllOf()` and `AllOfArray()`](#CombiningMatchers). + +Finally `Field()` and `Property()` provide overloads that take the field or +property names as the first argument to include it in the error message. This +can be useful when creating combined matchers. + +```cpp +using ::testing::AllOf; +using ::testing::Field; +using ::testing::Matcher; +using ::testing::SafeMatcherCast; + +Matcher IsFoo(const Foo& foo) { + return AllOf(Field("some_field", &Foo::some_field, foo.some_field), + Field("other_field", &Foo::other_field, foo.other_field), + Field("last_field", &Foo::last_field, foo.last_field)); +} +``` + +### Validating the Value Pointed to by a Pointer Argument + +C++ functions often take pointers as arguments. You can use matchers like +`IsNull()`, `NotNull()`, and other comparison matchers to match a pointer, but +what if you want to make sure the value *pointed to* by the pointer, instead of +the pointer itself, has a certain property? Well, you can use the `Pointee(m)` +matcher. + +`Pointee(m)` matches a pointer if and only if `m` matches the value the pointer +points to. For example: + +```cpp +using ::testing::Ge; +using ::testing::Pointee; +... + EXPECT_CALL(foo, Bar(Pointee(Ge(3)))); +``` + +expects `foo.Bar()` to be called with a pointer that points to a value greater +than or equal to 3. + +One nice thing about `Pointee()` is that it treats a `NULL` pointer as a match +failure, so you can write `Pointee(m)` instead of + +```cpp +using ::testing::AllOf; +using ::testing::NotNull; +using ::testing::Pointee; +... + AllOf(NotNull(), Pointee(m)) +``` + +without worrying that a `NULL` pointer will crash your test. + +Also, did we tell you that `Pointee()` works with both raw pointers **and** +smart pointers (`std::unique_ptr`, `std::shared_ptr`, etc)? + +What if you have a pointer to pointer? You guessed it - you can use nested +`Pointee()` to probe deeper inside the value. For example, +`Pointee(Pointee(Lt(3)))` matches a pointer that points to a pointer that points +to a number less than 3 (what a mouthful...). + +### Testing a Certain Property of an Object + +Sometimes you want to specify that an object argument has a certain property, +but there is no existing matcher that does this. If you want good error +messages, you should [define a matcher](#NewMatchers). If you want to do it +quick and dirty, you could get away with writing an ordinary function. + +Let's say you have a mock function that takes an object of type `Foo`, which has +an `int bar()` method and an `int baz()` method, and you want to constrain that +the argument's `bar()` value plus its `baz()` value is a given number. Here's +how you can define a matcher to do it: + +```cpp +using ::testing::Matcher; +using ::testing::MatcherInterface; +using ::testing::MatchResultListener; + +class BarPlusBazEqMatcher : public MatcherInterface { + public: + explicit BarPlusBazEqMatcher(int expected_sum) + : expected_sum_(expected_sum) {} + + bool MatchAndExplain(const Foo& foo, + MatchResultListener* /* listener */) const override { + return (foo.bar() + foo.baz()) == expected_sum_; + } + + void DescribeTo(::std::ostream* os) const override { + *os << "bar() + baz() equals " << expected_sum_; + } + + void DescribeNegationTo(::std::ostream* os) const override { + *os << "bar() + baz() does not equal " << expected_sum_; + } + private: + const int expected_sum_; +}; + +Matcher BarPlusBazEq(int expected_sum) { + return MakeMatcher(new BarPlusBazEqMatcher(expected_sum)); +} + +... + EXPECT_CALL(..., DoThis(BarPlusBazEq(5)))...; +``` + +### Matching Containers + +Sometimes an STL container (e.g. list, vector, map, ...) is passed to a mock +function and you may want to validate it. Since most STL containers support the +`==` operator, you can write `Eq(expected_container)` or simply +`expected_container` to match a container exactly. + +Sometimes, though, you may want to be more flexible (for example, the first +element must be an exact match, but the second element can be any positive +number, and so on). Also, containers used in tests often have a small number of +elements, and having to define the expected container out-of-line is a bit of a +hassle. + +You can use the `ElementsAre()` or `UnorderedElementsAre()` matcher in such +cases: + +```cpp +using ::testing::_; +using ::testing::ElementsAre; +using ::testing::Gt; +... + MOCK_METHOD(void, Foo, (const vector& numbers), (override)); +... + EXPECT_CALL(mock, Foo(ElementsAre(1, Gt(0), _, 5))); +``` + +The above matcher says that the container must have 4 elements, which must be 1, +greater than 0, anything, and 5 respectively. + +If you instead write: + +```cpp +using ::testing::_; +using ::testing::Gt; +using ::testing::UnorderedElementsAre; +... + MOCK_METHOD(void, Foo, (const vector& numbers), (override)); +... + EXPECT_CALL(mock, Foo(UnorderedElementsAre(1, Gt(0), _, 5))); +``` + +It means that the container must have 4 elements, which (under some permutation) +must be 1, greater than 0, anything, and 5 respectively. + +As an alternative you can place the arguments in a C-style array and use +`ElementsAreArray()` or `UnorderedElementsAreArray()` instead: + +```cpp +using ::testing::ElementsAreArray; +... + // ElementsAreArray accepts an array of element values. + const int expected_vector1[] = {1, 5, 2, 4, ...}; + EXPECT_CALL(mock, Foo(ElementsAreArray(expected_vector1))); + + // Or, an array of element matchers. + Matcher expected_vector2[] = {1, Gt(2), _, 3, ...}; + EXPECT_CALL(mock, Foo(ElementsAreArray(expected_vector2))); +``` + +In case the array needs to be dynamically created (and therefore the array size +cannot be inferred by the compiler), you can give `ElementsAreArray()` an +additional argument to specify the array size: + +```cpp +using ::testing::ElementsAreArray; +... + int* const expected_vector3 = new int[count]; + ... fill expected_vector3 with values ... + EXPECT_CALL(mock, Foo(ElementsAreArray(expected_vector3, count))); +``` + +Use `Pair` when comparing maps or other associative containers. + +```cpp +using testing::ElementsAre; +using testing::Pair; +... + std::map m = {{"a", 1}, {"b", 2}, {"c", 3}}; + EXPECT_THAT(m, ElementsAre(Pair("a", 1), Pair("b", 2), Pair("c", 3))); +``` + +**Tips:** + +* `ElementsAre*()` can be used to match *any* container that implements the + STL iterator pattern (i.e. it has a `const_iterator` type and supports + `begin()/end()`), not just the ones defined in STL. It will even work with + container types yet to be written - as long as they follows the above + pattern. +* You can use nested `ElementsAre*()` to match nested (multi-dimensional) + containers. +* If the container is passed by pointer instead of by reference, just write + `Pointee(ElementsAre*(...))`. +* The order of elements *matters* for `ElementsAre*()`. If you are using it + with containers whose element order are undefined (e.g. `hash_map`) you + should use `WhenSorted` around `ElementsAre`. + +### Sharing Matchers + +Under the hood, a gMock matcher object consists of a pointer to a ref-counted +implementation object. Copying matchers is allowed and very efficient, as only +the pointer is copied. When the last matcher that references the implementation +object dies, the implementation object will be deleted. + +Therefore, if you have some complex matcher that you want to use again and +again, there is no need to build it everytime. Just assign it to a matcher +variable and use that variable repeatedly! For example, + +```cpp +using ::testing::AllOf; +using ::testing::Gt; +using ::testing::Le; +using ::testing::Matcher; +... + Matcher in_range = AllOf(Gt(5), Le(10)); + ... use in_range as a matcher in multiple EXPECT_CALLs ... +``` + +### Matchers must have no side-effects {#PureMatchers} + +WARNING: gMock does not guarantee when or how many times a matcher will be +invoked. Therefore, all matchers must be *purely functional*: they cannot have +any side effects, and the match result must not depend on anything other than +the matcher's parameters and the value being matched. + +This requirement must be satisfied no matter how a matcher is defined (e.g., if +it is one of the standard matchers, or a custom matcher). In particular, a +matcher can never call a mock function, as that will affect the state of the +mock object and gMock. + +## Setting Expectations + +### Knowing When to Expect {#UseOnCall} + + + +**`ON_CALL`** is likely the *single most under-utilized construct* in gMock. + +There are basically two constructs for defining the behavior of a mock object: +`ON_CALL` and `EXPECT_CALL`. The difference? `ON_CALL` defines what happens when +a mock method is called, but doesn't imply any expectation on the method +being called. `EXPECT_CALL` not only defines the behavior, but also sets an +expectation that the method will be called with the given arguments, for the +given number of times (and *in the given order* when you specify the order +too). + +Since `EXPECT_CALL` does more, isn't it better than `ON_CALL`? Not really. Every +`EXPECT_CALL` adds a constraint on the behavior of the code under test. Having +more constraints than necessary is *baaad* - even worse than not having enough +constraints. + +This may be counter-intuitive. How could tests that verify more be worse than +tests that verify less? Isn't verification the whole point of tests? + +The answer lies in *what* a test should verify. **A good test verifies the +contract of the code.** If a test over-specifies, it doesn't leave enough +freedom to the implementation. As a result, changing the implementation without +breaking the contract (e.g. refactoring and optimization), which should be +perfectly fine to do, can break such tests. Then you have to spend time fixing +them, only to see them broken again the next time the implementation is changed. + +Keep in mind that one doesn't have to verify more than one property in one test. +In fact, **it's a good style to verify only one thing in one test.** If you do +that, a bug will likely break only one or two tests instead of dozens (which +case would you rather debug?). If you are also in the habit of giving tests +descriptive names that tell what they verify, you can often easily guess what's +wrong just from the test log itself. + +So use `ON_CALL` by default, and only use `EXPECT_CALL` when you actually intend +to verify that the call is made. For example, you may have a bunch of `ON_CALL`s +in your test fixture to set the common mock behavior shared by all tests in the +same group, and write (scarcely) different `EXPECT_CALL`s in different `TEST_F`s +to verify different aspects of the code's behavior. Compared with the style +where each `TEST` has many `EXPECT_CALL`s, this leads to tests that are more +resilient to implementational changes (and thus less likely to require +maintenance) and makes the intent of the tests more obvious (so they are easier +to maintain when you do need to maintain them). + +If you are bothered by the "Uninteresting mock function call" message printed +when a mock method without an `EXPECT_CALL` is called, you may use a `NiceMock` +instead to suppress all such messages for the mock object, or suppress the +message for specific methods by adding `EXPECT_CALL(...).Times(AnyNumber())`. DO +NOT suppress it by blindly adding an `EXPECT_CALL(...)`, or you'll have a test +that's a pain to maintain. + +### Ignoring Uninteresting Calls + +If you are not interested in how a mock method is called, just don't say +anything about it. In this case, if the method is ever called, gMock will +perform its default action to allow the test program to continue. If you are not +happy with the default action taken by gMock, you can override it using +`DefaultValue::Set()` (described [here](#DefaultValue)) or `ON_CALL()`. + +Please note that once you expressed interest in a particular mock method (via +`EXPECT_CALL()`), all invocations to it must match some expectation. If this +function is called but the arguments don't match any `EXPECT_CALL()` statement, +it will be an error. + +### Disallowing Unexpected Calls + +If a mock method shouldn't be called at all, explicitly say so: + +```cpp +using ::testing::_; +... + EXPECT_CALL(foo, Bar(_)) + .Times(0); +``` + +If some calls to the method are allowed, but the rest are not, just list all the +expected calls: + +```cpp +using ::testing::AnyNumber; +using ::testing::Gt; +... + EXPECT_CALL(foo, Bar(5)); + EXPECT_CALL(foo, Bar(Gt(10))) + .Times(AnyNumber()); +``` + +A call to `foo.Bar()` that doesn't match any of the `EXPECT_CALL()` statements +will be an error. + +### Understanding Uninteresting vs Unexpected Calls {#uninteresting-vs-unexpected} + +*Uninteresting* calls and *unexpected* calls are different concepts in gMock. +*Very* different. + +A call `x.Y(...)` is **uninteresting** if there's *not even a single* +`EXPECT_CALL(x, Y(...))` set. In other words, the test isn't interested in the +`x.Y()` method at all, as evident in that the test doesn't care to say anything +about it. + +A call `x.Y(...)` is **unexpected** if there are *some* `EXPECT_CALL(x, +Y(...))`s set, but none of them matches the call. Put another way, the test is +interested in the `x.Y()` method (therefore it explicitly sets some +`EXPECT_CALL` to verify how it's called); however, the verification fails as the +test doesn't expect this particular call to happen. + +**An unexpected call is always an error,** as the code under test doesn't behave +the way the test expects it to behave. + +**By default, an uninteresting call is not an error,** as it violates no +constraint specified by the test. (gMock's philosophy is that saying nothing +means there is no constraint.) However, it leads to a warning, as it *might* +indicate a problem (e.g. the test author might have forgotten to specify a +constraint). + +In gMock, `NiceMock` and `StrictMock` can be used to make a mock class "nice" or +"strict". How does this affect uninteresting calls and unexpected calls? + +A **nice mock** suppresses uninteresting call *warnings*. It is less chatty than +the default mock, but otherwise is the same. If a test fails with a default +mock, it will also fail using a nice mock instead. And vice versa. Don't expect +making a mock nice to change the test's result. + +A **strict mock** turns uninteresting call warnings into errors. So making a +mock strict may change the test's result. + +Let's look at an example: + +```cpp +TEST(...) { + NiceMock mock_registry; + EXPECT_CALL(mock_registry, GetDomainOwner("google.com")) + .WillRepeatedly(Return("Larry Page")); + + // Use mock_registry in code under test. + ... &mock_registry ... +} +``` + +The sole `EXPECT_CALL` here says that all calls to `GetDomainOwner()` must have +`"google.com"` as the argument. If `GetDomainOwner("yahoo.com")` is called, it +will be an unexpected call, and thus an error. *Having a nice mock doesn't +change the severity of an unexpected call.* + +So how do we tell gMock that `GetDomainOwner()` can be called with some other +arguments as well? The standard technique is to add a "catch all" `EXPECT_CALL`: + +```cpp + EXPECT_CALL(mock_registry, GetDomainOwner(_)) + .Times(AnyNumber()); // catches all other calls to this method. + EXPECT_CALL(mock_registry, GetDomainOwner("google.com")) + .WillRepeatedly(Return("Larry Page")); +``` + +Remember that `_` is the wildcard matcher that matches anything. With this, if +`GetDomainOwner("google.com")` is called, it will do what the second +`EXPECT_CALL` says; if it is called with a different argument, it will do what +the first `EXPECT_CALL` says. + +Note that the order of the two `EXPECT_CALL`s is important, as a newer +`EXPECT_CALL` takes precedence over an older one. + +For more on uninteresting calls, nice mocks, and strict mocks, read +["The Nice, the Strict, and the Naggy"](#NiceStrictNaggy). + +### Ignoring Uninteresting Arguments {#ParameterlessExpectations} + +If your test doesn't care about the parameters (it only cares about the number +or order of calls), you can often simply omit the parameter list: + +```cpp + // Expect foo.Bar( ... ) twice with any arguments. + EXPECT_CALL(foo, Bar).Times(2); + + // Delegate to the given method whenever the factory is invoked. + ON_CALL(foo_factory, MakeFoo) + .WillByDefault(&BuildFooForTest); +``` + +This functionality is only available when a method is not overloaded; to prevent +unexpected behavior it is a compilation error to try to set an expectation on a +method where the specific overload is ambiguous. You can work around this by +supplying a [simpler mock interface](#SimplerInterfaces) than the mocked class +provides. + +This pattern is also useful when the arguments are interesting, but match logic +is substantially complex. You can leave the argument list unspecified and use +SaveArg actions to [save the values for later verification](#SaveArgVerify). If +you do that, you can easily differentiate calling the method the wrong number of +times from calling it with the wrong arguments. + +### Expecting Ordered Calls {#OrderedCalls} + +Although an `EXPECT_CALL()` statement defined earlier takes precedence when +gMock tries to match a function call with an expectation, by default calls don't +have to happen in the order `EXPECT_CALL()` statements are written. For example, +if the arguments match the matchers in the third `EXPECT_CALL()`, but not those +in the first two, then the third expectation will be used. + +If you would rather have all calls occur in the order of the expectations, put +the `EXPECT_CALL()` statements in a block where you define a variable of type +`InSequence`: + +```cpp +using ::testing::_; +using ::testing::InSequence; + + { + InSequence s; + + EXPECT_CALL(foo, DoThis(5)); + EXPECT_CALL(bar, DoThat(_)) + .Times(2); + EXPECT_CALL(foo, DoThis(6)); + } +``` + +In this example, we expect a call to `foo.DoThis(5)`, followed by two calls to +`bar.DoThat()` where the argument can be anything, which are in turn followed by +a call to `foo.DoThis(6)`. If a call occurred out-of-order, gMock will report an +error. + +### Expecting Partially Ordered Calls {#PartialOrder} + +Sometimes requiring everything to occur in a predetermined order can lead to +brittle tests. For example, we may care about `A` occurring before both `B` and +`C`, but aren't interested in the relative order of `B` and `C`. In this case, +the test should reflect our real intent, instead of being overly constraining. + +gMock allows you to impose an arbitrary DAG (directed acyclic graph) on the +calls. One way to express the DAG is to use the [After](#AfterClause) clause of +`EXPECT_CALL`. + +Another way is via the `InSequence()` clause (not the same as the `InSequence` +class), which we borrowed from jMock 2. It's less flexible than `After()`, but +more convenient when you have long chains of sequential calls, as it doesn't +require you to come up with different names for the expectations in the chains. +Here's how it works: + +If we view `EXPECT_CALL()` statements as nodes in a graph, and add an edge from +node A to node B wherever A must occur before B, we can get a DAG. We use the +term "sequence" to mean a directed path in this DAG. Now, if we decompose the +DAG into sequences, we just need to know which sequences each `EXPECT_CALL()` +belongs to in order to be able to reconstruct the original DAG. + +So, to specify the partial order on the expectations we need to do two things: +first to define some `Sequence` objects, and then for each `EXPECT_CALL()` say +which `Sequence` objects it is part of. + +Expectations in the same sequence must occur in the order they are written. For +example, + +```cpp +using ::testing::Sequence; +... + Sequence s1, s2; + + EXPECT_CALL(foo, A()) + .InSequence(s1, s2); + EXPECT_CALL(bar, B()) + .InSequence(s1); + EXPECT_CALL(bar, C()) + .InSequence(s2); + EXPECT_CALL(foo, D()) + .InSequence(s2); +``` + +specifies the following DAG (where `s1` is `A -> B`, and `s2` is `A -> C -> D`): + +```text + +---> B + | + A ---| + | + +---> C ---> D +``` + +This means that A must occur before B and C, and C must occur before D. There's +no restriction about the order other than these. + +### Controlling When an Expectation Retires + +When a mock method is called, gMock only considers expectations that are still +active. An expectation is active when created, and becomes inactive (aka +*retires*) when a call that has to occur later has occurred. For example, in + +```cpp +using ::testing::_; +using ::testing::Sequence; +... + Sequence s1, s2; + + EXPECT_CALL(log, Log(WARNING, _, "File too large.")) // #1 + .Times(AnyNumber()) + .InSequence(s1, s2); + EXPECT_CALL(log, Log(WARNING, _, "Data set is empty.")) // #2 + .InSequence(s1); + EXPECT_CALL(log, Log(WARNING, _, "User not found.")) // #3 + .InSequence(s2); +``` + +as soon as either #2 or #3 is matched, #1 will retire. If a warning `"File too +large."` is logged after this, it will be an error. + +Note that an expectation doesn't retire automatically when it's saturated. For +example, + +```cpp +using ::testing::_; +... + EXPECT_CALL(log, Log(WARNING, _, _)); // #1 + EXPECT_CALL(log, Log(WARNING, _, "File too large.")); // #2 +``` + +says that there will be exactly one warning with the message `"File too +large."`. If the second warning contains this message too, #2 will match again +and result in an upper-bound-violated error. + +If this is not what you want, you can ask an expectation to retire as soon as it +becomes saturated: + +```cpp +using ::testing::_; +... + EXPECT_CALL(log, Log(WARNING, _, _)); // #1 + EXPECT_CALL(log, Log(WARNING, _, "File too large.")) // #2 + .RetiresOnSaturation(); +``` + +Here #2 can be used only once, so if you have two warnings with the message +`"File too large."`, the first will match #2 and the second will match #1 - +there will be no error. + +## Using Actions + +### Returning References from Mock Methods + +If a mock function's return type is a reference, you need to use `ReturnRef()` +instead of `Return()` to return a result: + +```cpp +using ::testing::ReturnRef; + +class MockFoo : public Foo { + public: + MOCK_METHOD(Bar&, GetBar, (), (override)); +}; +... + MockFoo foo; + Bar bar; + EXPECT_CALL(foo, GetBar()) + .WillOnce(ReturnRef(bar)); +... +``` + +### Returning Live Values from Mock Methods + +The `Return(x)` action saves a copy of `x` when the action is created, and +always returns the same value whenever it's executed. Sometimes you may want to +instead return the *live* value of `x` (i.e. its value at the time when the +action is *executed*.). Use either `ReturnRef()` or `ReturnPointee()` for this +purpose. + +If the mock function's return type is a reference, you can do it using +`ReturnRef(x)`, as shown in the previous recipe ("Returning References from Mock +Methods"). However, gMock doesn't let you use `ReturnRef()` in a mock function +whose return type is not a reference, as doing that usually indicates a user +error. So, what shall you do? + +Though you may be tempted, DO NOT use `ByRef()`: + +```cpp +using testing::ByRef; +using testing::Return; + +class MockFoo : public Foo { + public: + MOCK_METHOD(int, GetValue, (), (override)); +}; +... + int x = 0; + MockFoo foo; + EXPECT_CALL(foo, GetValue()) + .WillRepeatedly(Return(ByRef(x))); // Wrong! + x = 42; + EXPECT_EQ(42, foo.GetValue()); +``` + +Unfortunately, it doesn't work here. The above code will fail with error: + +```text +Value of: foo.GetValue() + Actual: 0 +Expected: 42 +``` + +The reason is that `Return(*value*)` converts `value` to the actual return type +of the mock function at the time when the action is *created*, not when it is +*executed*. (This behavior was chosen for the action to be safe when `value` is +a proxy object that references some temporary objects.) As a result, `ByRef(x)` +is converted to an `int` value (instead of a `const int&`) when the expectation +is set, and `Return(ByRef(x))` will always return 0. + +`ReturnPointee(pointer)` was provided to solve this problem specifically. It +returns the value pointed to by `pointer` at the time the action is *executed*: + +```cpp +using testing::ReturnPointee; +... + int x = 0; + MockFoo foo; + EXPECT_CALL(foo, GetValue()) + .WillRepeatedly(ReturnPointee(&x)); // Note the & here. + x = 42; + EXPECT_EQ(42, foo.GetValue()); // This will succeed now. +``` + +### Combining Actions + +Want to do more than one thing when a function is called? That's fine. `DoAll()` +allow you to do sequence of actions every time. Only the return value of the +last action in the sequence will be used. + +```cpp +using ::testing::_; +using ::testing::DoAll; + +class MockFoo : public Foo { + public: + MOCK_METHOD(bool, Bar, (int n), (override)); +}; +... + EXPECT_CALL(foo, Bar(_)) + .WillOnce(DoAll(action_1, + action_2, + ... + action_n)); +``` + +### Verifying Complex Arguments {#SaveArgVerify} + +If you want to verify that a method is called with a particular argument but the +match criteria is complex, it can be difficult to distinguish between +cardinality failures (calling the method the wrong number of times) and argument +match failures. Similarly, if you are matching multiple parameters, it may not +be easy to distinguishing which argument failed to match. For example: + +```cpp + // Not ideal: this could fail because of a problem with arg1 or arg2, or maybe + // just the method wasn't called. + EXPECT_CALL(foo, SendValues(_, ElementsAre(1, 4, 4, 7), EqualsProto( ... ))); +``` + +You can instead save the arguments and test them individually: + +```cpp + EXPECT_CALL(foo, SendValues) + .WillOnce(DoAll(SaveArg<1>(&actual_array), SaveArg<2>(&actual_proto))); + ... run the test + EXPECT_THAT(actual_array, ElementsAre(1, 4, 4, 7)); + EXPECT_THAT(actual_proto, EqualsProto( ... )); +``` + +### Mocking Side Effects {#MockingSideEffects} + +Sometimes a method exhibits its effect not via returning a value but via side +effects. For example, it may change some global state or modify an output +argument. To mock side effects, in general you can define your own action by +implementing `::testing::ActionInterface`. + +If all you need to do is to change an output argument, the built-in +`SetArgPointee()` action is convenient: + +```cpp +using ::testing::_; +using ::testing::SetArgPointee; + +class MockMutator : public Mutator { + public: + MOCK_METHOD(void, Mutate, (bool mutate, int* value), (override)); + ... +} +... + MockMutator mutator; + EXPECT_CALL(mutator, Mutate(true, _)) + .WillOnce(SetArgPointee<1>(5)); +``` + +In this example, when `mutator.Mutate()` is called, we will assign 5 to the +`int` variable pointed to by argument #1 (0-based). + +`SetArgPointee()` conveniently makes an internal copy of the value you pass to +it, removing the need to keep the value in scope and alive. The implication +however is that the value must have a copy constructor and assignment operator. + +If the mock method also needs to return a value as well, you can chain +`SetArgPointee()` with `Return()` using `DoAll()`, remembering to put the +`Return()` statement last: + +```cpp +using ::testing::_; +using ::testing::Return; +using ::testing::SetArgPointee; + +class MockMutator : public Mutator { + public: + ... + MOCK_METHOD(bool, MutateInt, (int* value), (override)); +} +... + MockMutator mutator; + EXPECT_CALL(mutator, MutateInt(_)) + .WillOnce(DoAll(SetArgPointee<0>(5), + Return(true))); +``` + +Note, however, that if you use the `ReturnOKWith()` method, it will override the +values provided by `SetArgPointee()` in the response parameters of your function +call. + +If the output argument is an array, use the `SetArrayArgument(first, last)` +action instead. It copies the elements in source range `[first, last)` to the +array pointed to by the `N`-th (0-based) argument: + +```cpp +using ::testing::NotNull; +using ::testing::SetArrayArgument; + +class MockArrayMutator : public ArrayMutator { + public: + MOCK_METHOD(void, Mutate, (int* values, int num_values), (override)); + ... +} +... + MockArrayMutator mutator; + int values[5] = {1, 2, 3, 4, 5}; + EXPECT_CALL(mutator, Mutate(NotNull(), 5)) + .WillOnce(SetArrayArgument<0>(values, values + 5)); +``` + +This also works when the argument is an output iterator: + +```cpp +using ::testing::_; +using ::testing::SetArrayArgument; + +class MockRolodex : public Rolodex { + public: + MOCK_METHOD(void, GetNames, (std::back_insert_iterator>), + (override)); + ... +} +... + MockRolodex rolodex; + vector names; + names.push_back("George"); + names.push_back("John"); + names.push_back("Thomas"); + EXPECT_CALL(rolodex, GetNames(_)) + .WillOnce(SetArrayArgument<0>(names.begin(), names.end())); +``` + +### Changing a Mock Object's Behavior Based on the State + +If you expect a call to change the behavior of a mock object, you can use +`::testing::InSequence` to specify different behaviors before and after the +call: + +```cpp +using ::testing::InSequence; +using ::testing::Return; + +... + { + InSequence seq; + EXPECT_CALL(my_mock, IsDirty()) + .WillRepeatedly(Return(true)); + EXPECT_CALL(my_mock, Flush()); + EXPECT_CALL(my_mock, IsDirty()) + .WillRepeatedly(Return(false)); + } + my_mock.FlushIfDirty(); +``` + +This makes `my_mock.IsDirty()` return `true` before `my_mock.Flush()` is called +and return `false` afterwards. + +If the behavior change is more complex, you can store the effects in a variable +and make a mock method get its return value from that variable: + +```cpp +using ::testing::_; +using ::testing::SaveArg; +using ::testing::Return; + +ACTION_P(ReturnPointee, p) { return *p; } +... + int previous_value = 0; + EXPECT_CALL(my_mock, GetPrevValue) + .WillRepeatedly(ReturnPointee(&previous_value)); + EXPECT_CALL(my_mock, UpdateValue) + .WillRepeatedly(SaveArg<0>(&previous_value)); + my_mock.DoSomethingToUpdateValue(); +``` + +Here `my_mock.GetPrevValue()` will always return the argument of the last +`UpdateValue()` call. + +### Setting the Default Value for a Return Type {#DefaultValue} + +If a mock method's return type is a built-in C++ type or pointer, by default it +will return 0 when invoked. Also, in C++ 11 and above, a mock method whose +return type has a default constructor will return a default-constructed value by +default. You only need to specify an action if this default value doesn't work +for you. + +Sometimes, you may want to change this default value, or you may want to specify +a default value for types gMock doesn't know about. You can do this using the +`::testing::DefaultValue` class template: + +```cpp +using ::testing::DefaultValue; + +class MockFoo : public Foo { + public: + MOCK_METHOD(Bar, CalculateBar, (), (override)); +}; + + +... + Bar default_bar; + // Sets the default return value for type Bar. + DefaultValue::Set(default_bar); + + MockFoo foo; + + // We don't need to specify an action here, as the default + // return value works for us. + EXPECT_CALL(foo, CalculateBar()); + + foo.CalculateBar(); // This should return default_bar. + + // Unsets the default return value. + DefaultValue::Clear(); +``` + +Please note that changing the default value for a type can make you tests hard +to understand. We recommend you to use this feature judiciously. For example, +you may want to make sure the `Set()` and `Clear()` calls are right next to the +code that uses your mock. + +### Setting the Default Actions for a Mock Method + +You've learned how to change the default value of a given type. However, this +may be too coarse for your purpose: perhaps you have two mock methods with the +same return type and you want them to have different behaviors. The `ON_CALL()` +macro allows you to customize your mock's behavior at the method level: + +```cpp +using ::testing::_; +using ::testing::AnyNumber; +using ::testing::Gt; +using ::testing::Return; +... + ON_CALL(foo, Sign(_)) + .WillByDefault(Return(-1)); + ON_CALL(foo, Sign(0)) + .WillByDefault(Return(0)); + ON_CALL(foo, Sign(Gt(0))) + .WillByDefault(Return(1)); + + EXPECT_CALL(foo, Sign(_)) + .Times(AnyNumber()); + + foo.Sign(5); // This should return 1. + foo.Sign(-9); // This should return -1. + foo.Sign(0); // This should return 0. +``` + +As you may have guessed, when there are more than one `ON_CALL()` statements, +the newer ones in the order take precedence over the older ones. In other words, +the **last** one that matches the function arguments will be used. This matching +order allows you to set up the common behavior in a mock object's constructor or +the test fixture's set-up phase and specialize the mock's behavior later. + +Note that both `ON_CALL` and `EXPECT_CALL` have the same "later statements take +precedence" rule, but they don't interact. That is, `EXPECT_CALL`s have their +own precedence order distinct from the `ON_CALL` precedence order. + +### Using Functions/Methods/Functors/Lambdas as Actions {#FunctionsAsActions} + +If the built-in actions don't suit you, you can use an existing callable +(function, `std::function`, method, functor, lambda as an action. + + + +```cpp +using ::testing::_; using ::testing::Invoke; + +class MockFoo : public Foo { + public: + MOCK_METHOD(int, Sum, (int x, int y), (override)); + MOCK_METHOD(bool, ComplexJob, (int x), (override)); +}; + +int CalculateSum(int x, int y) { return x + y; } +int Sum3(int x, int y, int z) { return x + y + z; } + +class Helper { + public: + bool ComplexJob(int x); +}; + +... + MockFoo foo; + Helper helper; + EXPECT_CALL(foo, Sum(_, _)) + .WillOnce(&CalculateSum) + .WillRepeatedly(Invoke(NewPermanentCallback(Sum3, 1))); + EXPECT_CALL(foo, ComplexJob(_)) + .WillOnce(Invoke(&helper, &Helper::ComplexJob)); + .WillRepeatedly([](int x) { return x > 0; }); + + foo.Sum(5, 6); // Invokes CalculateSum(5, 6). + foo.Sum(2, 3); // Invokes Sum3(1, 2, 3). + foo.ComplexJob(10); // Invokes helper.ComplexJob(10). + foo.ComplexJob(-1); // Invokes the inline lambda. +``` + +The only requirement is that the type of the function, etc must be *compatible* +with the signature of the mock function, meaning that the latter's arguments can +be implicitly converted to the corresponding arguments of the former, and the +former's return type can be implicitly converted to that of the latter. So, you +can invoke something whose type is *not* exactly the same as the mock function, +as long as it's safe to do so - nice, huh? + +**`Note:`{.escaped}** + +* The action takes ownership of the callback and will delete it when the + action itself is destructed. +* If the type of a callback is derived from a base callback type `C`, you need + to implicitly cast it to `C` to resolve the overloading, e.g. + + ```cpp + using ::testing::Invoke; + ... + ResultCallback* is_ok = ...; + ... Invoke(is_ok) ...; // This works. + + BlockingClosure* done = new BlockingClosure; + ... Invoke(implicit_cast(done)) ...; // The cast is necessary. + ``` + +### Using Functions with Extra Info as Actions + +The function or functor you call using `Invoke()` must have the same number of +arguments as the mock function you use it for. Sometimes you may have a function +that takes more arguments, and you are willing to pass in the extra arguments +yourself to fill the gap. You can do this in gMock using callbacks with +pre-bound arguments. Here's an example: + +```cpp +using ::testing::Invoke; + +class MockFoo : public Foo { + public: + MOCK_METHOD(char, DoThis, (int n), (override)); +}; + +char SignOfSum(int x, int y) { + const int sum = x + y; + return (sum > 0) ? '+' : (sum < 0) ? '-' : '0'; +} + +TEST_F(FooTest, Test) { + MockFoo foo; + + EXPECT_CALL(foo, DoThis(2)) + .WillOnce(Invoke(NewPermanentCallback(SignOfSum, 5))); + EXPECT_EQ('+', foo.DoThis(2)); // Invokes SignOfSum(5, 2). +} +``` + +### Invoking a Function/Method/Functor/Lambda/Callback Without Arguments + +`Invoke()` is very useful for doing actions that are more complex. It passes the +mock function's arguments to the function, etc being invoked such that the +callee has the full context of the call to work with. If the invoked function is +not interested in some or all of the arguments, it can simply ignore them. + +Yet, a common pattern is that a test author wants to invoke a function without +the arguments of the mock function. `Invoke()` allows her to do that using a +wrapper function that throws away the arguments before invoking an underlining +nullary function. Needless to say, this can be tedious and obscures the intent +of the test. + +`InvokeWithoutArgs()` solves this problem. It's like `Invoke()` except that it +doesn't pass the mock function's arguments to the callee. Here's an example: + +```cpp +using ::testing::_; +using ::testing::InvokeWithoutArgs; + +class MockFoo : public Foo { + public: + MOCK_METHOD(bool, ComplexJob, (int n), (override)); +}; + +bool Job1() { ... } +bool Job2(int n, char c) { ... } + +... + MockFoo foo; + EXPECT_CALL(foo, ComplexJob(_)) + .WillOnce(InvokeWithoutArgs(Job1)) + .WillOnce(InvokeWithoutArgs(NewPermanentCallback(Job2, 5, 'a'))); + + foo.ComplexJob(10); // Invokes Job1(). + foo.ComplexJob(20); // Invokes Job2(5, 'a'). +``` + +**`Note:`{.escaped}** + +* The action takes ownership of the callback and will delete it when the + action itself is destructed. +* If the type of a callback is derived from a base callback type `C`, you need + to implicitly cast it to `C` to resolve the overloading, e.g. + + ```cpp + using ::testing::InvokeWithoutArgs; + ... + ResultCallback* is_ok = ...; + ... InvokeWithoutArgs(is_ok) ...; // This works. + + BlockingClosure* done = ...; + ... InvokeWithoutArgs(implicit_cast(done)) ...; + // The cast is necessary. + ``` + +### Invoking an Argument of the Mock Function + +Sometimes a mock function will receive a function pointer, a functor (in other +words, a "callable") as an argument, e.g. + +```cpp +class MockFoo : public Foo { + public: + MOCK_METHOD(bool, DoThis, (int n, (ResultCallback1* callback)), + (override)); +}; +``` + +and you may want to invoke this callable argument: + +```cpp +using ::testing::_; +... + MockFoo foo; + EXPECT_CALL(foo, DoThis(_, _)) + .WillOnce(...); + // Will execute callback->Run(5), where callback is the + // second argument DoThis() receives. +``` + +NOTE: The section below is legacy documentation from before C++ had lambdas: + +Arghh, you need to refer to a mock function argument but C++ has no lambda +(yet), so you have to define your own action. :-( Or do you really? + +Well, gMock has an action to solve *exactly* this problem: + +```cpp +InvokeArgument(arg_1, arg_2, ..., arg_m) +``` + +will invoke the `N`-th (0-based) argument the mock function receives, with +`arg_1`, `arg_2`, ..., and `arg_m`. No matter if the argument is a function +pointer, a functor, or a callback. gMock handles them all. + +With that, you could write: + +```cpp +using ::testing::_; +using ::testing::InvokeArgument; +... + EXPECT_CALL(foo, DoThis(_, _)) + .WillOnce(InvokeArgument<1>(5)); + // Will execute callback->Run(5), where callback is the + // second argument DoThis() receives. +``` + +What if the callable takes an argument by reference? No problem - just wrap it +inside `ByRef()`: + +```cpp + ... + MOCK_METHOD(bool, Bar, + ((ResultCallback2* callback)), + (override)); + ... + using ::testing::_; + using ::testing::ByRef; + using ::testing::InvokeArgument; + ... + MockFoo foo; + Helper helper; + ... + EXPECT_CALL(foo, Bar(_)) + .WillOnce(InvokeArgument<0>(5, ByRef(helper))); + // ByRef(helper) guarantees that a reference to helper, not a copy of it, + // will be passed to the callback. +``` + +What if the callable takes an argument by reference and we do **not** wrap the +argument in `ByRef()`? Then `InvokeArgument()` will *make a copy* of the +argument, and pass a *reference to the copy*, instead of a reference to the +original value, to the callable. This is especially handy when the argument is a +temporary value: + +```cpp + ... + MOCK_METHOD(bool, DoThat, (bool (*f)(const double& x, const string& s)), + (override)); + ... + using ::testing::_; + using ::testing::InvokeArgument; + ... + MockFoo foo; + ... + EXPECT_CALL(foo, DoThat(_)) + .WillOnce(InvokeArgument<0>(5.0, string("Hi"))); + // Will execute (*f)(5.0, string("Hi")), where f is the function pointer + // DoThat() receives. Note that the values 5.0 and string("Hi") are + // temporary and dead once the EXPECT_CALL() statement finishes. Yet + // it's fine to perform this action later, since a copy of the values + // are kept inside the InvokeArgument action. +``` + +### Ignoring an Action's Result + +Sometimes you have an action that returns *something*, but you need an action +that returns `void` (perhaps you want to use it in a mock function that returns +`void`, or perhaps it needs to be used in `DoAll()` and it's not the last in the +list). `IgnoreResult()` lets you do that. For example: + +```cpp +using ::testing::_; +using ::testing::DoAll; +using ::testing::IgnoreResult; +using ::testing::Return; + +int Process(const MyData& data); +string DoSomething(); + +class MockFoo : public Foo { + public: + MOCK_METHOD(void, Abc, (const MyData& data), (override)); + MOCK_METHOD(bool, Xyz, (), (override)); +}; + + ... + MockFoo foo; + EXPECT_CALL(foo, Abc(_)) + // .WillOnce(Invoke(Process)); + // The above line won't compile as Process() returns int but Abc() needs + // to return void. + .WillOnce(IgnoreResult(Process)); + EXPECT_CALL(foo, Xyz()) + .WillOnce(DoAll(IgnoreResult(DoSomething), + // Ignores the string DoSomething() returns. + Return(true))); +``` + +Note that you **cannot** use `IgnoreResult()` on an action that already returns +`void`. Doing so will lead to ugly compiler errors. + +### Selecting an Action's Arguments {#SelectingArgs} + +Say you have a mock function `Foo()` that takes seven arguments, and you have a +custom action that you want to invoke when `Foo()` is called. Trouble is, the +custom action only wants three arguments: + +```cpp +using ::testing::_; +using ::testing::Invoke; +... + MOCK_METHOD(bool, Foo, + (bool visible, const string& name, int x, int y, + (const map>), double& weight, double min_weight, + double max_wight)); +... +bool IsVisibleInQuadrant1(bool visible, int x, int y) { + return visible && x >= 0 && y >= 0; +} +... + EXPECT_CALL(mock, Foo) + .WillOnce(Invoke(IsVisibleInQuadrant1)); // Uh, won't compile. :-( +``` + +To please the compiler God, you need to define an "adaptor" that has the same +signature as `Foo()` and calls the custom action with the right arguments: + +```cpp +using ::testing::_; +using ::testing::Invoke; +... +bool MyIsVisibleInQuadrant1(bool visible, const string& name, int x, int y, + const map, double>& weight, + double min_weight, double max_wight) { + return IsVisibleInQuadrant1(visible, x, y); +} +... + EXPECT_CALL(mock, Foo) + .WillOnce(Invoke(MyIsVisibleInQuadrant1)); // Now it works. +``` + +But isn't this awkward? + +gMock provides a generic *action adaptor*, so you can spend your time minding +more important business than writing your own adaptors. Here's the syntax: + +```cpp +WithArgs(action) +``` + +creates an action that passes the arguments of the mock function at the given +indices (0-based) to the inner `action` and performs it. Using `WithArgs`, our +original example can be written as: + +```cpp +using ::testing::_; +using ::testing::Invoke; +using ::testing::WithArgs; +... + EXPECT_CALL(mock, Foo) + .WillOnce(WithArgs<0, 2, 3>(Invoke(IsVisibleInQuadrant1))); // No need to define your own adaptor. +``` + +For better readability, gMock also gives you: + +* `WithoutArgs(action)` when the inner `action` takes *no* argument, and +* `WithArg(action)` (no `s` after `Arg`) when the inner `action` takes + *one* argument. + +As you may have realized, `InvokeWithoutArgs(...)` is just syntactic sugar for +`WithoutArgs(Invoke(...))`. + +Here are more tips: + +* The inner action used in `WithArgs` and friends does not have to be + `Invoke()` -- it can be anything. +* You can repeat an argument in the argument list if necessary, e.g. + `WithArgs<2, 3, 3, 5>(...)`. +* You can change the order of the arguments, e.g. `WithArgs<3, 2, 1>(...)`. +* The types of the selected arguments do *not* have to match the signature of + the inner action exactly. It works as long as they can be implicitly + converted to the corresponding arguments of the inner action. For example, + if the 4-th argument of the mock function is an `int` and `my_action` takes + a `double`, `WithArg<4>(my_action)` will work. + +### Ignoring Arguments in Action Functions + +The [selecting-an-action's-arguments](#SelectingArgs) recipe showed us one way +to make a mock function and an action with incompatible argument lists fit +together. The downside is that wrapping the action in `WithArgs<...>()` can get +tedious for people writing the tests. + +If you are defining a function (or method, functor, lambda, callback) to be used +with `Invoke*()`, and you are not interested in some of its arguments, an +alternative to `WithArgs` is to declare the uninteresting arguments as `Unused`. +This makes the definition less cluttered and less fragile in case the types of +the uninteresting arguments change. It could also increase the chance the action +function can be reused. For example, given + +```cpp + public: + MOCK_METHOD(double, Foo, double(const string& label, double x, double y), + (override)); + MOCK_METHOD(double, Bar, (int index, double x, double y), (override)); +``` + +instead of + +```cpp +using ::testing::_; +using ::testing::Invoke; + +double DistanceToOriginWithLabel(const string& label, double x, double y) { + return sqrt(x*x + y*y); +} +double DistanceToOriginWithIndex(int index, double x, double y) { + return sqrt(x*x + y*y); +} +... + EXPECT_CALL(mock, Foo("abc", _, _)) + .WillOnce(Invoke(DistanceToOriginWithLabel)); + EXPECT_CALL(mock, Bar(5, _, _)) + .WillOnce(Invoke(DistanceToOriginWithIndex)); +``` + +you could write + +```cpp +using ::testing::_; +using ::testing::Invoke; +using ::testing::Unused; + +double DistanceToOrigin(Unused, double x, double y) { + return sqrt(x*x + y*y); +} +... + EXPECT_CALL(mock, Foo("abc", _, _)) + .WillOnce(Invoke(DistanceToOrigin)); + EXPECT_CALL(mock, Bar(5, _, _)) + .WillOnce(Invoke(DistanceToOrigin)); +``` + +### Sharing Actions + +Just like matchers, a gMock action object consists of a pointer to a ref-counted +implementation object. Therefore copying actions is also allowed and very +efficient. When the last action that references the implementation object dies, +the implementation object will be deleted. + +If you have some complex action that you want to use again and again, you may +not have to build it from scratch everytime. If the action doesn't have an +internal state (i.e. if it always does the same thing no matter how many times +it has been called), you can assign it to an action variable and use that +variable repeatedly. For example: + +```cpp +using ::testing::Action; +using ::testing::DoAll; +using ::testing::Return; +using ::testing::SetArgPointee; +... + Action set_flag = DoAll(SetArgPointee<0>(5), + Return(true)); + ... use set_flag in .WillOnce() and .WillRepeatedly() ... +``` + +However, if the action has its own state, you may be surprised if you share the +action object. Suppose you have an action factory `IncrementCounter(init)` which +creates an action that increments and returns a counter whose initial value is +`init`, using two actions created from the same expression and using a shared +action will exhibit different behaviors. Example: + +```cpp + EXPECT_CALL(foo, DoThis()) + .WillRepeatedly(IncrementCounter(0)); + EXPECT_CALL(foo, DoThat()) + .WillRepeatedly(IncrementCounter(0)); + foo.DoThis(); // Returns 1. + foo.DoThis(); // Returns 2. + foo.DoThat(); // Returns 1 - Blah() uses a different + // counter than Bar()'s. +``` + +versus + +```cpp +using ::testing::Action; +... + Action increment = IncrementCounter(0); + EXPECT_CALL(foo, DoThis()) + .WillRepeatedly(increment); + EXPECT_CALL(foo, DoThat()) + .WillRepeatedly(increment); + foo.DoThis(); // Returns 1. + foo.DoThis(); // Returns 2. + foo.DoThat(); // Returns 3 - the counter is shared. +``` + +### Testing Asynchronous Behavior + +One oft-encountered problem with gMock is that it can be hard to test +asynchronous behavior. Suppose you had a `EventQueue` class that you wanted to +test, and you created a separate `EventDispatcher` interface so that you could +easily mock it out. However, the implementation of the class fired all the +events on a background thread, which made test timings difficult. You could just +insert `sleep()` statements and hope for the best, but that makes your test +behavior nondeterministic. A better way is to use gMock actions and +`Notification` objects to force your asynchronous test to behave synchronously. + +```cpp +using ::testing::DoAll; +using ::testing::InvokeWithoutArgs; +using ::testing::Return; + +class MockEventDispatcher : public EventDispatcher { + MOCK_METHOD(bool, DispatchEvent, (int32), (override)); +}; + +ACTION_P(Notify, notification) { + notification->Notify(); +} + +TEST(EventQueueTest, EnqueueEventTest) { + MockEventDispatcher mock_event_dispatcher; + EventQueue event_queue(&mock_event_dispatcher); + + const int32 kEventId = 321; + Notification done; + EXPECT_CALL(mock_event_dispatcher, DispatchEvent(kEventId)) + .WillOnce(Notify(&done)); + + event_queue.EnqueueEvent(kEventId); + done.WaitForNotification(); +} +``` + +In the example above, we set our normal gMock expectations, but then add an +additional action to notify the `Notification` object. Now we can just call +`Notification::WaitForNotification()` in the main thread to wait for the +asynchronous call to finish. After that, our test suite is complete and we can +safely exit. + +Note: this example has a downside: namely, if the expectation is not satisfied, +our test will run forever. It will eventually time-out and fail, but it will +take longer and be slightly harder to debug. To alleviate this problem, you can +use `WaitForNotificationWithTimeout(ms)` instead of `WaitForNotification()`. + +## Misc Recipes on Using gMock + +### Mocking Methods That Use Move-Only Types + +C++11 introduced *move-only types*. A move-only-typed value can be moved from +one object to another, but cannot be copied. `std::unique_ptr` is probably +the most commonly used move-only type. + +Mocking a method that takes and/or returns move-only types presents some +challenges, but nothing insurmountable. This recipe shows you how you can do it. +Note that the support for move-only method arguments was only introduced to +gMock in April 2017; in older code, you may find more complex +[workarounds](#LegacyMoveOnly) for lack of this feature. + +Let’s say we are working on a fictional project that lets one post and share +snippets called “buzzes”. Your code uses these types: + +```cpp +enum class AccessLevel { kInternal, kPublic }; + +class Buzz { + public: + explicit Buzz(AccessLevel access) { ... } + ... +}; + +class Buzzer { + public: + virtual ~Buzzer() {} + virtual std::unique_ptr MakeBuzz(StringPiece text) = 0; + virtual bool ShareBuzz(std::unique_ptr buzz, int64_t timestamp) = 0; + ... +}; +``` + +A `Buzz` object represents a snippet being posted. A class that implements the +`Buzzer` interface is capable of creating and sharing `Buzz`es. Methods in +`Buzzer` may return a `unique_ptr` or take a `unique_ptr`. Now we +need to mock `Buzzer` in our tests. + +To mock a method that accepts or returns move-only types, you just use the +familiar `MOCK_METHOD` syntax as usual: + +```cpp +class MockBuzzer : public Buzzer { + public: + MOCK_METHOD(std::unique_ptr, MakeBuzz, (StringPiece text), (override)); + MOCK_METHOD(bool, ShareBuzz, (std::unique_ptr buzz, int64_t timestamp), + (override)); +}; +``` + +Now that we have the mock class defined, we can use it in tests. In the +following code examples, we assume that we have defined a `MockBuzzer` object +named `mock_buzzer_`: + +```cpp + MockBuzzer mock_buzzer_; +``` + +First let’s see how we can set expectations on the `MakeBuzz()` method, which +returns a `unique_ptr`. + +As usual, if you set an expectation without an action (i.e. the `.WillOnce()` or +`.WillRepeatedly()` clause), when that expectation fires, the default action for +that method will be taken. Since `unique_ptr<>` has a default constructor that +returns a null `unique_ptr`, that’s what you’ll get if you don’t specify an +action: + +```cpp + // Use the default action. + EXPECT_CALL(mock_buzzer_, MakeBuzz("hello")); + + // Triggers the previous EXPECT_CALL. + EXPECT_EQ(nullptr, mock_buzzer_.MakeBuzz("hello")); +``` + +If you are not happy with the default action, you can tweak it as usual; see +[Setting Default Actions](#OnCall). + +If you just need to return a pre-defined move-only value, you can use the +`Return(ByMove(...))` action: + +```cpp + // When this fires, the unique_ptr<> specified by ByMove(...) will + // be returned. + EXPECT_CALL(mock_buzzer_, MakeBuzz("world")) + .WillOnce(Return(ByMove(MakeUnique(AccessLevel::kInternal)))); + + EXPECT_NE(nullptr, mock_buzzer_.MakeBuzz("world")); +``` + +Note that `ByMove()` is essential here - if you drop it, the code won’t compile. + +Quiz time! What do you think will happen if a `Return(ByMove(...))` action is +performed more than once (e.g. you write `... +.WillRepeatedly(Return(ByMove(...)));`)? Come think of it, after the first time +the action runs, the source value will be consumed (since it’s a move-only +value), so the next time around, there’s no value to move from -- you’ll get a +run-time error that `Return(ByMove(...))` can only be run once. + +If you need your mock method to do more than just moving a pre-defined value, +remember that you can always use a lambda or a callable object, which can do +pretty much anything you want: + +```cpp + EXPECT_CALL(mock_buzzer_, MakeBuzz("x")) + .WillRepeatedly([](StringPiece text) { + return MakeUnique(AccessLevel::kInternal); + }); + + EXPECT_NE(nullptr, mock_buzzer_.MakeBuzz("x")); + EXPECT_NE(nullptr, mock_buzzer_.MakeBuzz("x")); +``` + +Every time this `EXPECT_CALL` fires, a new `unique_ptr` will be created +and returned. You cannot do this with `Return(ByMove(...))`. + +That covers returning move-only values; but how do we work with methods +accepting move-only arguments? The answer is that they work normally, although +some actions will not compile when any of method's arguments are move-only. You +can always use `Return`, or a [lambda or functor](#FunctionsAsActions): + +```cpp + using ::testing::Unused; + + EXPECT_CALL(mock_buzzer_, ShareBuzz(NotNull(), _)).WillOnce(Return(true)); + EXPECT_TRUE(mock_buzzer_.ShareBuzz(MakeUnique(AccessLevel::kInternal)), + 0); + + EXPECT_CALL(mock_buzzer_, ShareBuzz(_, _)).WillOnce( + [](std::unique_ptr buzz, Unused) { return buzz != nullptr; }); + EXPECT_FALSE(mock_buzzer_.ShareBuzz(nullptr, 0)); +``` + +Many built-in actions (`WithArgs`, `WithoutArgs`,`DeleteArg`, `SaveArg`, ...) +could in principle support move-only arguments, but the support for this is not +implemented yet. If this is blocking you, please file a bug. + +A few actions (e.g. `DoAll`) copy their arguments internally, so they can never +work with non-copyable objects; you'll have to use functors instead. + +#### Legacy workarounds for move-only types {#LegacyMoveOnly} + +Support for move-only function arguments was only introduced to gMock in April +2017. In older code, you may encounter the following workaround for the lack of +this feature (it is no longer necessary - we're including it just for +reference): + +```cpp +class MockBuzzer : public Buzzer { + public: + MOCK_METHOD(bool, DoShareBuzz, (Buzz* buzz, Time timestamp)); + bool ShareBuzz(std::unique_ptr buzz, Time timestamp) override { + return DoShareBuzz(buzz.get(), timestamp); + } +}; +``` + +The trick is to delegate the `ShareBuzz()` method to a mock method (let’s call +it `DoShareBuzz()`) that does not take move-only parameters. Then, instead of +setting expectations on `ShareBuzz()`, you set them on the `DoShareBuzz()` mock +method: + +```cpp + MockBuzzer mock_buzzer_; + EXPECT_CALL(mock_buzzer_, DoShareBuzz(NotNull(), _)); + + // When one calls ShareBuzz() on the MockBuzzer like this, the call is + // forwarded to DoShareBuzz(), which is mocked. Therefore this statement + // will trigger the above EXPECT_CALL. + mock_buzzer_.ShareBuzz(MakeUnique(AccessLevel::kInternal), 0); +``` + +### Making the Compilation Faster + +Believe it or not, the *vast majority* of the time spent on compiling a mock +class is in generating its constructor and destructor, as they perform +non-trivial tasks (e.g. verification of the expectations). What's more, mock +methods with different signatures have different types and thus their +constructors/destructors need to be generated by the compiler separately. As a +result, if you mock many different types of methods, compiling your mock class +can get really slow. + +If you are experiencing slow compilation, you can move the definition of your +mock class' constructor and destructor out of the class body and into a `.cc` +file. This way, even if you `#include` your mock class in N files, the compiler +only needs to generate its constructor and destructor once, resulting in a much +faster compilation. + +Let's illustrate the idea using an example. Here's the definition of a mock +class before applying this recipe: + +```cpp +// File mock_foo.h. +... +class MockFoo : public Foo { + public: + // Since we don't declare the constructor or the destructor, + // the compiler will generate them in every translation unit + // where this mock class is used. + + MOCK_METHOD(int, DoThis, (), (override)); + MOCK_METHOD(bool, DoThat, (const char* str), (override)); + ... more mock methods ... +}; +``` + +After the change, it would look like: + +```cpp +// File mock_foo.h. +... +class MockFoo : public Foo { + public: + // The constructor and destructor are declared, but not defined, here. + MockFoo(); + virtual ~MockFoo(); + + MOCK_METHOD(int, DoThis, (), (override)); + MOCK_METHOD(bool, DoThat, (const char* str), (override)); + ... more mock methods ... +}; +``` + +and + +```cpp +// File mock_foo.cc. +#include "path/to/mock_foo.h" + +// The definitions may appear trivial, but the functions actually do a +// lot of things through the constructors/destructors of the member +// variables used to implement the mock methods. +MockFoo::MockFoo() {} +MockFoo::~MockFoo() {} +``` + +### Forcing a Verification + +When it's being destroyed, your friendly mock object will automatically verify +that all expectations on it have been satisfied, and will generate googletest +failures if not. This is convenient as it leaves you with one less thing to +worry about. That is, unless you are not sure if your mock object will be +destroyed. + +How could it be that your mock object won't eventually be destroyed? Well, it +might be created on the heap and owned by the code you are testing. Suppose +there's a bug in that code and it doesn't delete the mock object properly - you +could end up with a passing test when there's actually a bug. + +Using a heap checker is a good idea and can alleviate the concern, but its +implementation is not 100% reliable. So, sometimes you do want to *force* gMock +to verify a mock object before it is (hopefully) destructed. You can do this +with `Mock::VerifyAndClearExpectations(&mock_object)`: + +```cpp +TEST(MyServerTest, ProcessesRequest) { + using ::testing::Mock; + + MockFoo* const foo = new MockFoo; + EXPECT_CALL(*foo, ...)...; + // ... other expectations ... + + // server now owns foo. + MyServer server(foo); + server.ProcessRequest(...); + + // In case that server's destructor will forget to delete foo, + // this will verify the expectations anyway. + Mock::VerifyAndClearExpectations(foo); +} // server is destroyed when it goes out of scope here. +``` + +**Tip:** The `Mock::VerifyAndClearExpectations()` function returns a `bool` to +indicate whether the verification was successful (`true` for yes), so you can +wrap that function call inside a `ASSERT_TRUE()` if there is no point going +further when the verification has failed. + +### Using Check Points {#UsingCheckPoints} + +Sometimes you may want to "reset" a mock object at various check points in your +test: at each check point, you verify that all existing expectations on the mock +object have been satisfied, and then you set some new expectations on it as if +it's newly created. This allows you to work with a mock object in "phases" whose +sizes are each manageable. + +One such scenario is that in your test's `SetUp()` function, you may want to put +the object you are testing into a certain state, with the help from a mock +object. Once in the desired state, you want to clear all expectations on the +mock, such that in the `TEST_F` body you can set fresh expectations on it. + +As you may have figured out, the `Mock::VerifyAndClearExpectations()` function +we saw in the previous recipe can help you here. Or, if you are using +`ON_CALL()` to set default actions on the mock object and want to clear the +default actions as well, use `Mock::VerifyAndClear(&mock_object)` instead. This +function does what `Mock::VerifyAndClearExpectations(&mock_object)` does and +returns the same `bool`, **plus** it clears the `ON_CALL()` statements on +`mock_object` too. + +Another trick you can use to achieve the same effect is to put the expectations +in sequences and insert calls to a dummy "check-point" function at specific +places. Then you can verify that the mock function calls do happen at the right +time. For example, if you are exercising code: + +```cpp + Foo(1); + Foo(2); + Foo(3); +``` + +and want to verify that `Foo(1)` and `Foo(3)` both invoke `mock.Bar("a")`, but +`Foo(2)` doesn't invoke anything. You can write: + +```cpp +using ::testing::MockFunction; + +TEST(FooTest, InvokesBarCorrectly) { + MyMock mock; + // Class MockFunction has exactly one mock method. It is named + // Call() and has type F. + MockFunction check; + { + InSequence s; + + EXPECT_CALL(mock, Bar("a")); + EXPECT_CALL(check, Call("1")); + EXPECT_CALL(check, Call("2")); + EXPECT_CALL(mock, Bar("a")); + } + Foo(1); + check.Call("1"); + Foo(2); + check.Call("2"); + Foo(3); +} +``` + +The expectation spec says that the first `Bar("a")` must happen before check +point "1", the second `Bar("a")` must happen after check point "2", and nothing +should happen between the two check points. The explicit check points make it +easy to tell which `Bar("a")` is called by which call to `Foo()`. + +### Mocking Destructors + +Sometimes you want to make sure a mock object is destructed at the right time, +e.g. after `bar->A()` is called but before `bar->B()` is called. We already know +that you can specify constraints on the [order](#OrderedCalls) of mock function +calls, so all we need to do is to mock the destructor of the mock function. + +This sounds simple, except for one problem: a destructor is a special function +with special syntax and special semantics, and the `MOCK_METHOD` macro doesn't +work for it: + +```cpp +MOCK_METHOD(void, ~MockFoo, ()); // Won't compile! +``` + +The good news is that you can use a simple pattern to achieve the same effect. +First, add a mock function `Die()` to your mock class and call it in the +destructor, like this: + +```cpp +class MockFoo : public Foo { + ... + // Add the following two lines to the mock class. + MOCK_METHOD(void, Die, ()); + virtual ~MockFoo() { Die(); } +}; +``` + +(If the name `Die()` clashes with an existing symbol, choose another name.) Now, +we have translated the problem of testing when a `MockFoo` object dies to +testing when its `Die()` method is called: + +```cpp + MockFoo* foo = new MockFoo; + MockBar* bar = new MockBar; + ... + { + InSequence s; + + // Expects *foo to die after bar->A() and before bar->B(). + EXPECT_CALL(*bar, A()); + EXPECT_CALL(*foo, Die()); + EXPECT_CALL(*bar, B()); + } +``` + +And that's that. + +### Using gMock and Threads {#UsingThreads} + +In a **unit** test, it's best if you could isolate and test a piece of code in a +single-threaded context. That avoids race conditions and dead locks, and makes +debugging your test much easier. + +Yet most programs are multi-threaded, and sometimes to test something we need to +pound on it from more than one thread. gMock works for this purpose too. + +Remember the steps for using a mock: + +1. Create a mock object `foo`. +2. Set its default actions and expectations using `ON_CALL()` and + `EXPECT_CALL()`. +3. The code under test calls methods of `foo`. +4. Optionally, verify and reset the mock. +5. Destroy the mock yourself, or let the code under test destroy it. The + destructor will automatically verify it. + +If you follow the following simple rules, your mocks and threads can live +happily together: + +* Execute your *test code* (as opposed to the code being tested) in *one* + thread. This makes your test easy to follow. +* Obviously, you can do step #1 without locking. +* When doing step #2 and #5, make sure no other thread is accessing `foo`. + Obvious too, huh? +* #3 and #4 can be done either in one thread or in multiple threads - anyway + you want. gMock takes care of the locking, so you don't have to do any - + unless required by your test logic. + +If you violate the rules (for example, if you set expectations on a mock while +another thread is calling its methods), you get undefined behavior. That's not +fun, so don't do it. + +gMock guarantees that the action for a mock function is done in the same thread +that called the mock function. For example, in + +```cpp + EXPECT_CALL(mock, Foo(1)) + .WillOnce(action1); + EXPECT_CALL(mock, Foo(2)) + .WillOnce(action2); +``` + +if `Foo(1)` is called in thread 1 and `Foo(2)` is called in thread 2, gMock will +execute `action1` in thread 1 and `action2` in thread 2. + +gMock does *not* impose a sequence on actions performed in different threads +(doing so may create deadlocks as the actions may need to cooperate). This means +that the execution of `action1` and `action2` in the above example *may* +interleave. If this is a problem, you should add proper synchronization logic to +`action1` and `action2` to make the test thread-safe. + +Also, remember that `DefaultValue` is a global resource that potentially +affects *all* living mock objects in your program. Naturally, you won't want to +mess with it from multiple threads or when there still are mocks in action. + +### Controlling How Much Information gMock Prints + +When gMock sees something that has the potential of being an error (e.g. a mock +function with no expectation is called, a.k.a. an uninteresting call, which is +allowed but perhaps you forgot to explicitly ban the call), it prints some +warning messages, including the arguments of the function, the return value, and +the stack trace. Hopefully this will remind you to take a look and see if there +is indeed a problem. + +Sometimes you are confident that your tests are correct and may not appreciate +such friendly messages. Some other times, you are debugging your tests or +learning about the behavior of the code you are testing, and wish you could +observe every mock call that happens (including argument values, the return +value, and the stack trace). Clearly, one size doesn't fit all. + +You can control how much gMock tells you using the `--gmock_verbose=LEVEL` +command-line flag, where `LEVEL` is a string with three possible values: + +* `info`: gMock will print all informational messages, warnings, and errors + (most verbose). At this setting, gMock will also log any calls to the + `ON_CALL/EXPECT_CALL` macros. It will include a stack trace in + "uninteresting call" warnings. +* `warning`: gMock will print both warnings and errors (less verbose); it will + omit the stack traces in "uninteresting call" warnings. This is the default. +* `error`: gMock will print errors only (least verbose). + +Alternatively, you can adjust the value of that flag from within your tests like +so: + +```cpp + ::testing::FLAGS_gmock_verbose = "error"; +``` + +If you find gMock printing too many stack frames with its informational or +warning messages, remember that you can control their amount with the +`--gtest_stack_trace_depth=max_depth` flag. + +Now, judiciously use the right flag to enable gMock serve you better! + +### Gaining Super Vision into Mock Calls + +You have a test using gMock. It fails: gMock tells you some expectations aren't +satisfied. However, you aren't sure why: Is there a typo somewhere in the +matchers? Did you mess up the order of the `EXPECT_CALL`s? Or is the code under +test doing something wrong? How can you find out the cause? + +Won't it be nice if you have X-ray vision and can actually see the trace of all +`EXPECT_CALL`s and mock method calls as they are made? For each call, would you +like to see its actual argument values and which `EXPECT_CALL` gMock thinks it +matches? If you still need some help to figure out who made these calls, how +about being able to see the complete stack trace at each mock call? + +You can unlock this power by running your test with the `--gmock_verbose=info` +flag. For example, given the test program: + +```cpp +#include "gmock/gmock.h" + +using testing::_; +using testing::HasSubstr; +using testing::Return; + +class MockFoo { + public: + MOCK_METHOD(void, F, (const string& x, const string& y)); +}; + +TEST(Foo, Bar) { + MockFoo mock; + EXPECT_CALL(mock, F(_, _)).WillRepeatedly(Return()); + EXPECT_CALL(mock, F("a", "b")); + EXPECT_CALL(mock, F("c", HasSubstr("d"))); + + mock.F("a", "good"); + mock.F("a", "b"); +} +``` + +if you run it with `--gmock_verbose=info`, you will see this output: + +```shell +[ RUN ] Foo.Bar + +foo_test.cc:14: EXPECT_CALL(mock, F(_, _)) invoked +Stack trace: ... + +foo_test.cc:15: EXPECT_CALL(mock, F("a", "b")) invoked +Stack trace: ... + +foo_test.cc:16: EXPECT_CALL(mock, F("c", HasSubstr("d"))) invoked +Stack trace: ... + +foo_test.cc:14: Mock function call matches EXPECT_CALL(mock, F(_, _))... + Function call: F(@0x7fff7c8dad40"a",@0x7fff7c8dad10"good") +Stack trace: ... + +foo_test.cc:15: Mock function call matches EXPECT_CALL(mock, F("a", "b"))... + Function call: F(@0x7fff7c8dada0"a",@0x7fff7c8dad70"b") +Stack trace: ... + +foo_test.cc:16: Failure +Actual function call count doesn't match EXPECT_CALL(mock, F("c", HasSubstr("d")))... + Expected: to be called once + Actual: never called - unsatisfied and active +[ FAILED ] Foo.Bar +``` + +Suppose the bug is that the `"c"` in the third `EXPECT_CALL` is a typo and +should actually be `"a"`. With the above message, you should see that the actual +`F("a", "good")` call is matched by the first `EXPECT_CALL`, not the third as +you thought. From that it should be obvious that the third `EXPECT_CALL` is +written wrong. Case solved. + +If you are interested in the mock call trace but not the stack traces, you can +combine `--gmock_verbose=info` with `--gtest_stack_trace_depth=0` on the test +command line. + + + +### Running Tests in Emacs + +If you build and run your tests in Emacs using the `M-x google-compile` command +(as many googletest users do), the source file locations of gMock and googletest +errors will be highlighted. Just press `` on one of them and you'll be +taken to the offending line. Or, you can just type `C-x`` to jump to the next +error. + +To make it even easier, you can add the following lines to your `~/.emacs` file: + +```text +(global-set-key "\M-m" 'google-compile) ; m is for make +(global-set-key [M-down] 'next-error) +(global-set-key [M-up] '(lambda () (interactive) (next-error -1))) +``` + +Then you can type `M-m` to start a build (if you want to run the test as well, +just make sure `foo_test.run` or `runtests` is in the build command you supply +after typing `M-m`), or `M-up`/`M-down` to move back and forth between errors. + +## Extending gMock + +### Writing New Matchers Quickly {#NewMatchers} + +WARNING: gMock does not guarantee when or how many times a matcher will be +invoked. Therefore, all matchers must be functionally pure. See +[this section](#PureMatchers) for more details. + +The `MATCHER*` family of macros can be used to define custom matchers easily. +The syntax: + +```cpp +MATCHER(name, description_string_expression) { statements; } +``` + +will define a matcher with the given name that executes the statements, which +must return a `bool` to indicate if the match succeeds. Inside the statements, +you can refer to the value being matched by `arg`, and refer to its type by +`arg_type`. + +The *description string* is a `string`-typed expression that documents what the +matcher does, and is used to generate the failure message when the match fails. +It can (and should) reference the special `bool` variable `negation`, and should +evaluate to the description of the matcher when `negation` is `false`, or that +of the matcher's negation when `negation` is `true`. + +For convenience, we allow the description string to be empty (`""`), in which +case gMock will use the sequence of words in the matcher name as the +description. + +For example: + +```cpp +MATCHER(IsDivisibleBy7, "") { return (arg % 7) == 0; } +``` + +allows you to write + +```cpp + // Expects mock_foo.Bar(n) to be called where n is divisible by 7. + EXPECT_CALL(mock_foo, Bar(IsDivisibleBy7())); +``` + +or, + +```cpp + using ::testing::Not; + ... + // Verifies that two values are divisible by 7. + EXPECT_THAT(some_expression, IsDivisibleBy7()); + EXPECT_THAT(some_other_expression, Not(IsDivisibleBy7())); +``` + +If the above assertions fail, they will print something like: + +```shell + Value of: some_expression + Expected: is divisible by 7 + Actual: 27 + ... + Value of: some_other_expression + Expected: not (is divisible by 7) + Actual: 21 +``` + +where the descriptions `"is divisible by 7"` and `"not (is divisible by 7)"` are +automatically calculated from the matcher name `IsDivisibleBy7`. + +As you may have noticed, the auto-generated descriptions (especially those for +the negation) may not be so great. You can always override them with a `string` +expression of your own: + +```cpp +MATCHER(IsDivisibleBy7, + absl::StrCat(negation ? "isn't" : "is", " divisible by 7")) { + return (arg % 7) == 0; +} +``` + +Optionally, you can stream additional information to a hidden argument named +`result_listener` to explain the match result. For example, a better definition +of `IsDivisibleBy7` is: + +```cpp +MATCHER(IsDivisibleBy7, "") { + if ((arg % 7) == 0) + return true; + + *result_listener << "the remainder is " << (arg % 7); + return false; +} +``` + +With this definition, the above assertion will give a better message: + +```shell + Value of: some_expression + Expected: is divisible by 7 + Actual: 27 (the remainder is 6) +``` + +You should let `MatchAndExplain()` print *any additional information* that can +help a user understand the match result. Note that it should explain why the +match succeeds in case of a success (unless it's obvious) - this is useful when +the matcher is used inside `Not()`. There is no need to print the argument value +itself, as gMock already prints it for you. + +NOTE: The type of the value being matched (`arg_type`) is determined by the +context in which you use the matcher and is supplied to you by the compiler, so +you don't need to worry about declaring it (nor can you). This allows the +matcher to be polymorphic. For example, `IsDivisibleBy7()` can be used to match +any type where the value of `(arg % 7) == 0` can be implicitly converted to a +`bool`. In the `Bar(IsDivisibleBy7())` example above, if method `Bar()` takes an +`int`, `arg_type` will be `int`; if it takes an `unsigned long`, `arg_type` will +be `unsigned long`; and so on. + +### Writing New Parameterized Matchers Quickly + +Sometimes you'll want to define a matcher that has parameters. For that you can +use the macro: + +```cpp +MATCHER_P(name, param_name, description_string) { statements; } +``` + +where the description string can be either `""` or a `string` expression that +references `negation` and `param_name`. + +For example: + +```cpp +MATCHER_P(HasAbsoluteValue, value, "") { return abs(arg) == value; } +``` + +will allow you to write: + +```cpp + EXPECT_THAT(Blah("a"), HasAbsoluteValue(n)); +``` + +which may lead to this message (assuming `n` is 10): + +```shell + Value of: Blah("a") + Expected: has absolute value 10 + Actual: -9 +``` + +Note that both the matcher description and its parameter are printed, making the +message human-friendly. + +In the matcher definition body, you can write `foo_type` to reference the type +of a parameter named `foo`. For example, in the body of +`MATCHER_P(HasAbsoluteValue, value)` above, you can write `value_type` to refer +to the type of `value`. + +gMock also provides `MATCHER_P2`, `MATCHER_P3`, ..., up to `MATCHER_P10` to +support multi-parameter matchers: + +```cpp +MATCHER_Pk(name, param_1, ..., param_k, description_string) { statements; } +``` + +Please note that the custom description string is for a particular *instance* of +the matcher, where the parameters have been bound to actual values. Therefore +usually you'll want the parameter values to be part of the description. gMock +lets you do that by referencing the matcher parameters in the description string +expression. + +For example, + +```cpp +using ::testing::PrintToString; +MATCHER_P2(InClosedRange, low, hi, + absl::StrFormat("%s in range [%s, %s]", negation ? "isn't" : "is", + PrintToString(low), PrintToString(hi))) { + return low <= arg && arg <= hi; +} +... +EXPECT_THAT(3, InClosedRange(4, 6)); +``` + +would generate a failure that contains the message: + +```shell + Expected: is in range [4, 6] +``` + +If you specify `""` as the description, the failure message will contain the +sequence of words in the matcher name followed by the parameter values printed +as a tuple. For example, + +```cpp + MATCHER_P2(InClosedRange, low, hi, "") { ... } + ... + EXPECT_THAT(3, InClosedRange(4, 6)); +``` + +would generate a failure that contains the text: + +```shell + Expected: in closed range (4, 6) +``` + +For the purpose of typing, you can view + +```cpp +MATCHER_Pk(Foo, p1, ..., pk, description_string) { ... } +``` + +as shorthand for + +```cpp +template +FooMatcherPk +Foo(p1_type p1, ..., pk_type pk) { ... } +``` + +When you write `Foo(v1, ..., vk)`, the compiler infers the types of the +parameters `v1`, ..., and `vk` for you. If you are not happy with the result of +the type inference, you can specify the types by explicitly instantiating the +template, as in `Foo(5, false)`. As said earlier, you don't get to +(or need to) specify `arg_type` as that's determined by the context in which the +matcher is used. + +You can assign the result of expression `Foo(p1, ..., pk)` to a variable of type +`FooMatcherPk`. This can be useful when composing +matchers. Matchers that don't have a parameter or have only one parameter have +special types: you can assign `Foo()` to a `FooMatcher`-typed variable, and +assign `Foo(p)` to a `FooMatcherP`-typed variable. + +While you can instantiate a matcher template with reference types, passing the +parameters by pointer usually makes your code more readable. If, however, you +still want to pass a parameter by reference, be aware that in the failure +message generated by the matcher you will see the value of the referenced object +but not its address. + +You can overload matchers with different numbers of parameters: + +```cpp +MATCHER_P(Blah, a, description_string_1) { ... } +MATCHER_P2(Blah, a, b, description_string_2) { ... } +``` + +While it's tempting to always use the `MATCHER*` macros when defining a new +matcher, you should also consider implementing `MatcherInterface` or using +`MakePolymorphicMatcher()` instead (see the recipes that follow), especially if +you need to use the matcher a lot. While these approaches require more work, +they give you more control on the types of the value being matched and the +matcher parameters, which in general leads to better compiler error messages +that pay off in the long run. They also allow overloading matchers based on +parameter types (as opposed to just based on the number of parameters). + +### Writing New Monomorphic Matchers + +A matcher of argument type `T` implements `::testing::MatcherInterface` and +does two things: it tests whether a value of type `T` matches the matcher, and +can describe what kind of values it matches. The latter ability is used for +generating readable error messages when expectations are violated. + +The interface looks like this: + +```cpp +class MatchResultListener { + public: + ... + // Streams x to the underlying ostream; does nothing if the ostream + // is NULL. + template + MatchResultListener& operator<<(const T& x); + + // Returns the underlying ostream. + ::std::ostream* stream(); +}; + +template +class MatcherInterface { + public: + virtual ~MatcherInterface(); + + // Returns true if and only if the matcher matches x; also explains the match + // result to 'listener'. + virtual bool MatchAndExplain(T x, MatchResultListener* listener) const = 0; + + // Describes this matcher to an ostream. + virtual void DescribeTo(::std::ostream* os) const = 0; + + // Describes the negation of this matcher to an ostream. + virtual void DescribeNegationTo(::std::ostream* os) const; +}; +``` + +If you need a custom matcher but `Truly()` is not a good option (for example, +you may not be happy with the way `Truly(predicate)` describes itself, or you +may want your matcher to be polymorphic as `Eq(value)` is), you can define a +matcher to do whatever you want in two steps: first implement the matcher +interface, and then define a factory function to create a matcher instance. The +second step is not strictly needed but it makes the syntax of using the matcher +nicer. + +For example, you can define a matcher to test whether an `int` is divisible by 7 +and then use it like this: + +```cpp +using ::testing::MakeMatcher; +using ::testing::Matcher; +using ::testing::MatcherInterface; +using ::testing::MatchResultListener; + +class DivisibleBy7Matcher : public MatcherInterface { + public: + bool MatchAndExplain(int n, + MatchResultListener* /* listener */) const override { + return (n % 7) == 0; + } + + void DescribeTo(::std::ostream* os) const override { + *os << "is divisible by 7"; + } + + void DescribeNegationTo(::std::ostream* os) const override { + *os << "is not divisible by 7"; + } +}; + +Matcher DivisibleBy7() { + return MakeMatcher(new DivisibleBy7Matcher); +} + +... + EXPECT_CALL(foo, Bar(DivisibleBy7())); +``` + +You may improve the matcher message by streaming additional information to the +`listener` argument in `MatchAndExplain()`: + +```cpp +class DivisibleBy7Matcher : public MatcherInterface { + public: + bool MatchAndExplain(int n, + MatchResultListener* listener) const override { + const int remainder = n % 7; + if (remainder != 0) { + *listener << "the remainder is " << remainder; + } + return remainder == 0; + } + ... +}; +``` + +Then, `EXPECT_THAT(x, DivisibleBy7());` may generate a message like this: + +```shell +Value of: x +Expected: is divisible by 7 + Actual: 23 (the remainder is 2) +``` + +### Writing New Polymorphic Matchers + +You've learned how to write your own matchers in the previous recipe. Just one +problem: a matcher created using `MakeMatcher()` only works for one particular +type of arguments. If you want a *polymorphic* matcher that works with arguments +of several types (for instance, `Eq(x)` can be used to match a *`value`* as long +as `value == x` compiles -- *`value`* and `x` don't have to share the same +type), you can learn the trick from `testing/base/public/gmock-matchers.h` but +it's a bit involved. + +Fortunately, most of the time you can define a polymorphic matcher easily with +the help of `MakePolymorphicMatcher()`. Here's how you can define `NotNull()` as +an example: + +```cpp +using ::testing::MakePolymorphicMatcher; +using ::testing::MatchResultListener; +using ::testing::PolymorphicMatcher; + +class NotNullMatcher { + public: + // To implement a polymorphic matcher, first define a COPYABLE class + // that has three members MatchAndExplain(), DescribeTo(), and + // DescribeNegationTo(), like the following. + + // In this example, we want to use NotNull() with any pointer, so + // MatchAndExplain() accepts a pointer of any type as its first argument. + // In general, you can define MatchAndExplain() as an ordinary method or + // a method template, or even overload it. + template + bool MatchAndExplain(T* p, + MatchResultListener* /* listener */) const { + return p != NULL; + } + + // Describes the property of a value matching this matcher. + void DescribeTo(std::ostream* os) const { *os << "is not NULL"; } + + // Describes the property of a value NOT matching this matcher. + void DescribeNegationTo(std::ostream* os) const { *os << "is NULL"; } +}; + +// To construct a polymorphic matcher, pass an instance of the class +// to MakePolymorphicMatcher(). Note the return type. +PolymorphicMatcher NotNull() { + return MakePolymorphicMatcher(NotNullMatcher()); +} + +... + + EXPECT_CALL(foo, Bar(NotNull())); // The argument must be a non-NULL pointer. +``` + +**Note:** Your polymorphic matcher class does **not** need to inherit from +`MatcherInterface` or any other class, and its methods do **not** need to be +virtual. + +Like in a monomorphic matcher, you may explain the match result by streaming +additional information to the `listener` argument in `MatchAndExplain()`. + +### Writing New Cardinalities + +A cardinality is used in `Times()` to tell gMock how many times you expect a +call to occur. It doesn't have to be exact. For example, you can say +`AtLeast(5)` or `Between(2, 4)`. + +If the [built-in set](cheat_sheet.md#CardinalityList) of cardinalities doesn't +suit you, you are free to define your own by implementing the following +interface (in namespace `testing`): + +```cpp +class CardinalityInterface { + public: + virtual ~CardinalityInterface(); + + // Returns true if and only if call_count calls will satisfy this cardinality. + virtual bool IsSatisfiedByCallCount(int call_count) const = 0; + + // Returns true if and only if call_count calls will saturate this + // cardinality. + virtual bool IsSaturatedByCallCount(int call_count) const = 0; + + // Describes self to an ostream. + virtual void DescribeTo(std::ostream* os) const = 0; +}; +``` + +For example, to specify that a call must occur even number of times, you can +write + +```cpp +using ::testing::Cardinality; +using ::testing::CardinalityInterface; +using ::testing::MakeCardinality; + +class EvenNumberCardinality : public CardinalityInterface { + public: + bool IsSatisfiedByCallCount(int call_count) const override { + return (call_count % 2) == 0; + } + + bool IsSaturatedByCallCount(int call_count) const override { + return false; + } + + void DescribeTo(std::ostream* os) const { + *os << "called even number of times"; + } +}; + +Cardinality EvenNumber() { + return MakeCardinality(new EvenNumberCardinality); +} + +... + EXPECT_CALL(foo, Bar(3)) + .Times(EvenNumber()); +``` + +### Writing New Actions Quickly {#QuickNewActions} + +If the built-in actions don't work for you, you can easily define your own one. +Just define a functor class with a (possibly templated) call operator, matching +the signature of your action. + +```cpp +struct Increment { + template + T operator()(T* arg) { + return ++(*arg); + } +} +``` + +The same approach works with stateful functors (or any callable, really): + +``` +struct MultiplyBy { + template + T operator()(T arg) { return arg * multiplier; } + + int multiplier; +} + +// Then use: +// EXPECT_CALL(...).WillOnce(MultiplyBy{7}); +``` + +#### Legacy macro-based Actions + +Before C++11, the functor-based actions were not supported; the old way of +writing actions was through a set of `ACTION*` macros. We suggest to avoid them +in new code; they hide a lot of logic behind the macro, potentially leading to +harder-to-understand compiler errors. Nevertheless, we cover them here for +completeness. + +By writing + +```cpp +ACTION(name) { statements; } +``` + +in a namespace scope (i.e. not inside a class or function), you will define an +action with the given name that executes the statements. The value returned by +`statements` will be used as the return value of the action. Inside the +statements, you can refer to the K-th (0-based) argument of the mock function as +`argK`. For example: + +```cpp +ACTION(IncrementArg1) { return ++(*arg1); } +``` + +allows you to write + +```cpp +... WillOnce(IncrementArg1()); +``` + +Note that you don't need to specify the types of the mock function arguments. +Rest assured that your code is type-safe though: you'll get a compiler error if +`*arg1` doesn't support the `++` operator, or if the type of `++(*arg1)` isn't +compatible with the mock function's return type. + +Another example: + +```cpp +ACTION(Foo) { + (*arg2)(5); + Blah(); + *arg1 = 0; + return arg0; +} +``` + +defines an action `Foo()` that invokes argument #2 (a function pointer) with 5, +calls function `Blah()`, sets the value pointed to by argument #1 to 0, and +returns argument #0. + +For more convenience and flexibility, you can also use the following pre-defined +symbols in the body of `ACTION`: + +`argK_type` | The type of the K-th (0-based) argument of the mock function +:-------------- | :----------------------------------------------------------- +`args` | All arguments of the mock function as a tuple +`args_type` | The type of all arguments of the mock function as a tuple +`return_type` | The return type of the mock function +`function_type` | The type of the mock function + +For example, when using an `ACTION` as a stub action for mock function: + +```cpp +int DoSomething(bool flag, int* ptr); +``` + +we have: + +Pre-defined Symbol | Is Bound To +------------------ | --------------------------------- +`arg0` | the value of `flag` +`arg0_type` | the type `bool` +`arg1` | the value of `ptr` +`arg1_type` | the type `int*` +`args` | the tuple `(flag, ptr)` +`args_type` | the type `std::tuple` +`return_type` | the type `int` +`function_type` | the type `int(bool, int*)` + +#### Legacy macro-based parameterized Actions + +Sometimes you'll want to parameterize an action you define. For that we have +another macro + +```cpp +ACTION_P(name, param) { statements; } +``` + +For example, + +```cpp +ACTION_P(Add, n) { return arg0 + n; } +``` + +will allow you to write + +```cpp +// Returns argument #0 + 5. +... WillOnce(Add(5)); +``` + +For convenience, we use the term *arguments* for the values used to invoke the +mock function, and the term *parameters* for the values used to instantiate an +action. + +Note that you don't need to provide the type of the parameter either. Suppose +the parameter is named `param`, you can also use the gMock-defined symbol +`param_type` to refer to the type of the parameter as inferred by the compiler. +For example, in the body of `ACTION_P(Add, n)` above, you can write `n_type` for +the type of `n`. + +gMock also provides `ACTION_P2`, `ACTION_P3`, and etc to support multi-parameter +actions. For example, + +```cpp +ACTION_P2(ReturnDistanceTo, x, y) { + double dx = arg0 - x; + double dy = arg1 - y; + return sqrt(dx*dx + dy*dy); +} +``` + +lets you write + +```cpp +... WillOnce(ReturnDistanceTo(5.0, 26.5)); +``` + +You can view `ACTION` as a degenerated parameterized action where the number of +parameters is 0. + +You can also easily define actions overloaded on the number of parameters: + +```cpp +ACTION_P(Plus, a) { ... } +ACTION_P2(Plus, a, b) { ... } +``` + +### Restricting the Type of an Argument or Parameter in an ACTION + +For maximum brevity and reusability, the `ACTION*` macros don't ask you to +provide the types of the mock function arguments and the action parameters. +Instead, we let the compiler infer the types for us. + +Sometimes, however, we may want to be more explicit about the types. There are +several tricks to do that. For example: + +```cpp +ACTION(Foo) { + // Makes sure arg0 can be converted to int. + int n = arg0; + ... use n instead of arg0 here ... +} + +ACTION_P(Bar, param) { + // Makes sure the type of arg1 is const char*. + ::testing::StaticAssertTypeEq(); + + // Makes sure param can be converted to bool. + bool flag = param; +} +``` + +where `StaticAssertTypeEq` is a compile-time assertion in googletest that +verifies two types are the same. + +### Writing New Action Templates Quickly + +Sometimes you want to give an action explicit template parameters that cannot be +inferred from its value parameters. `ACTION_TEMPLATE()` supports that and can be +viewed as an extension to `ACTION()` and `ACTION_P*()`. + +The syntax: + +```cpp +ACTION_TEMPLATE(ActionName, + HAS_m_TEMPLATE_PARAMS(kind1, name1, ..., kind_m, name_m), + AND_n_VALUE_PARAMS(p1, ..., p_n)) { statements; } +``` + +defines an action template that takes *m* explicit template parameters and *n* +value parameters, where *m* is in [1, 10] and *n* is in [0, 10]. `name_i` is the +name of the *i*-th template parameter, and `kind_i` specifies whether it's a +`typename`, an integral constant, or a template. `p_i` is the name of the *i*-th +value parameter. + +Example: + +```cpp +// DuplicateArg(output) converts the k-th argument of the mock +// function to type T and copies it to *output. +ACTION_TEMPLATE(DuplicateArg, + // Note the comma between int and k: + HAS_2_TEMPLATE_PARAMS(int, k, typename, T), + AND_1_VALUE_PARAMS(output)) { + *output = T(::std::get(args)); +} +``` + +To create an instance of an action template, write: + +```cpp +ActionName(v1, ..., v_n) +``` + +where the `t`s are the template arguments and the `v`s are the value arguments. +The value argument types are inferred by the compiler. For example: + +```cpp +using ::testing::_; +... + int n; + EXPECT_CALL(mock, Foo).WillOnce(DuplicateArg<1, unsigned char>(&n)); +``` + +If you want to explicitly specify the value argument types, you can provide +additional template arguments: + +```cpp +ActionName(v1, ..., v_n) +``` + +where `u_i` is the desired type of `v_i`. + +`ACTION_TEMPLATE` and `ACTION`/`ACTION_P*` can be overloaded on the number of +value parameters, but not on the number of template parameters. Without the +restriction, the meaning of the following is unclear: + +```cpp + OverloadedAction(x); +``` + +Are we using a single-template-parameter action where `bool` refers to the type +of `x`, or a two-template-parameter action where the compiler is asked to infer +the type of `x`? + +### Using the ACTION Object's Type + +If you are writing a function that returns an `ACTION` object, you'll need to +know its type. The type depends on the macro used to define the action and the +parameter types. The rule is relatively simple: + +| Given Definition | Expression | Has Type | +| ----------------------------- | ------------------- | --------------------- | +| `ACTION(Foo)` | `Foo()` | `FooAction` | +| `ACTION_TEMPLATE(Foo,` | `Foo()` : t_m>` : +: `AND_0_VALUE_PARAMS())` : : : +| `ACTION_P(Bar, param)` | `Bar(int_value)` | `BarActionP` | +| `ACTION_TEMPLATE(Bar,` | `Bar` | `FooActionP` : +: `AND_1_VALUE_PARAMS(p1))` : : : +| `ACTION_P2(Baz, p1, p2)` | `Baz(bool_value,` | `BazActionP2` : +| `ACTION_TEMPLATE(Baz,` | `Baz` | `FooActionP2` : +: `AND_2_VALUE_PARAMS(p1, p2))` : `int_value)` : : +| ... | ... | ... | + +Note that we have to pick different suffixes (`Action`, `ActionP`, `ActionP2`, +and etc) for actions with different numbers of value parameters, or the action +definitions cannot be overloaded on the number of them. + +### Writing New Monomorphic Actions {#NewMonoActions} + +While the `ACTION*` macros are very convenient, sometimes they are +inappropriate. For example, despite the tricks shown in the previous recipes, +they don't let you directly specify the types of the mock function arguments and +the action parameters, which in general leads to unoptimized compiler error +messages that can baffle unfamiliar users. They also don't allow overloading +actions based on parameter types without jumping through some hoops. + +An alternative to the `ACTION*` macros is to implement +`::testing::ActionInterface`, where `F` is the type of the mock function in +which the action will be used. For example: + +```cpp +template +class ActionInterface { + public: + virtual ~ActionInterface(); + + // Performs the action. Result is the return type of function type + // F, and ArgumentTuple is the tuple of arguments of F. + // + + // For example, if F is int(bool, const string&), then Result would + // be int, and ArgumentTuple would be ::std::tuple. + virtual Result Perform(const ArgumentTuple& args) = 0; +}; +``` + +```cpp +using ::testing::_; +using ::testing::Action; +using ::testing::ActionInterface; +using ::testing::MakeAction; + +typedef int IncrementMethod(int*); + +class IncrementArgumentAction : public ActionInterface { + public: + int Perform(const ::std::tuple& args) override { + int* p = ::std::get<0>(args); // Grabs the first argument. + return *p++; + } +}; + +Action IncrementArgument() { + return MakeAction(new IncrementArgumentAction); +} + +... + EXPECT_CALL(foo, Baz(_)) + .WillOnce(IncrementArgument()); + + int n = 5; + foo.Baz(&n); // Should return 5 and change n to 6. +``` + +### Writing New Polymorphic Actions {#NewPolyActions} + +The previous recipe showed you how to define your own action. This is all good, +except that you need to know the type of the function in which the action will +be used. Sometimes that can be a problem. For example, if you want to use the +action in functions with *different* types (e.g. like `Return()` and +`SetArgPointee()`). + +If an action can be used in several types of mock functions, we say it's +*polymorphic*. The `MakePolymorphicAction()` function template makes it easy to +define such an action: + +```cpp +namespace testing { +template +PolymorphicAction MakePolymorphicAction(const Impl& impl); +} // namespace testing +``` + +As an example, let's define an action that returns the second argument in the +mock function's argument list. The first step is to define an implementation +class: + +```cpp +class ReturnSecondArgumentAction { + public: + template + Result Perform(const ArgumentTuple& args) const { + // To get the i-th (0-based) argument, use ::std::get(args). + return ::std::get<1>(args); + } +}; +``` + +This implementation class does *not* need to inherit from any particular class. +What matters is that it must have a `Perform()` method template. This method +template takes the mock function's arguments as a tuple in a **single** +argument, and returns the result of the action. It can be either `const` or not, +but must be invokable with exactly one template argument, which is the result +type. In other words, you must be able to call `Perform(args)` where `R` is +the mock function's return type and `args` is its arguments in a tuple. + +Next, we use `MakePolymorphicAction()` to turn an instance of the implementation +class into the polymorphic action we need. It will be convenient to have a +wrapper for this: + +```cpp +using ::testing::MakePolymorphicAction; +using ::testing::PolymorphicAction; + +PolymorphicAction ReturnSecondArgument() { + return MakePolymorphicAction(ReturnSecondArgumentAction()); +} +``` + +Now, you can use this polymorphic action the same way you use the built-in ones: + +```cpp +using ::testing::_; + +class MockFoo : public Foo { + public: + MOCK_METHOD(int, DoThis, (bool flag, int n), (override)); + MOCK_METHOD(string, DoThat, (int x, const char* str1, const char* str2), + (override)); +}; + + ... + MockFoo foo; + EXPECT_CALL(foo, DoThis).WillOnce(ReturnSecondArgument()); + EXPECT_CALL(foo, DoThat).WillOnce(ReturnSecondArgument()); + ... + foo.DoThis(true, 5); // Will return 5. + foo.DoThat(1, "Hi", "Bye"); // Will return "Hi". +``` + +### Teaching gMock How to Print Your Values + +When an uninteresting or unexpected call occurs, gMock prints the argument +values and the stack trace to help you debug. Assertion macros like +`EXPECT_THAT` and `EXPECT_EQ` also print the values in question when the +assertion fails. gMock and googletest do this using googletest's user-extensible +value printer. + +This printer knows how to print built-in C++ types, native arrays, STL +containers, and any type that supports the `<<` operator. For other types, it +prints the raw bytes in the value and hopes that you the user can figure it out. +[googletest's advanced guide](../../googletest/docs/advanced.md#teaching-googletest-how-to-print-your-values) +explains how to extend the printer to do a better job at printing your +particular type than to dump the bytes. + +## Useful Mocks Created Using gMock + + + + +### Mock std::function {#MockFunction} + +`std::function` is a general function type introduced in C++11. It is a +preferred way of passing callbacks to new interfaces. Functions are copiable, +and are not usually passed around by pointer, which makes them tricky to mock. +But fear not - `MockFunction` can help you with that. + +`MockFunction` has a mock method `Call()` with the signature: + +```cpp + R Call(T1, ..., Tn); +``` + +It also has a `AsStdFunction()` method, which creates a `std::function` proxy +forwarding to Call: + +```cpp + std::function AsStdFunction(); +``` + +To use `MockFunction`, first create `MockFunction` object and set up +expectations on its `Call` method. Then pass proxy obtained from +`AsStdFunction()` to the code you are testing. For example: + +```cpp +TEST(FooTest, RunsCallbackWithBarArgument) { + // 1. Create a mock object. + MockFunction mock_function; + + // 2. Set expectations on Call() method. + EXPECT_CALL(mock_function, Call("bar")).WillOnce(Return(1)); + + // 3. Exercise code that uses std::function. + Foo(mock_function.AsStdFunction()); + // Foo's signature can be either of: + // void Foo(const std::function& fun); + // void Foo(std::function fun); + + // 4. All expectations will be verified when mock_function + // goes out of scope and is destroyed. +} +``` + +Remember that function objects created with `AsStdFunction()` are just +forwarders. If you create multiple of them, they will share the same set of +expectations. + +Although `std::function` supports unlimited number of arguments, `MockFunction` +implementation is limited to ten. If you ever hit that limit... well, your +callback has bigger problems than being mockable. :-) + + diff --git a/build/_deps/googletest-src/googlemock/docs/for_dummies.md b/build/_deps/googletest-src/googlemock/docs/for_dummies.md new file mode 100644 index 0000000000000000000000000000000000000000..e11c18d9bf027a305f3813eaaaf437d2c7f2a9f9 --- /dev/null +++ b/build/_deps/googletest-src/googlemock/docs/for_dummies.md @@ -0,0 +1,700 @@ +## gMock for Dummies {#GMockForDummies} + + + +### What Is gMock? + +When you write a prototype or test, often it's not feasible or wise to rely on +real objects entirely. A **mock object** implements the same interface as a real +object (so it can be used as one), but lets you specify at run time how it will +be used and what it should do (which methods will be called? in which order? how +many times? with what arguments? what will they return? etc). + +**Note:** It is easy to confuse the term *fake objects* with mock objects. Fakes +and mocks actually mean very different things in the Test-Driven Development +(TDD) community: + +* **Fake** objects have working implementations, but usually take some + shortcut (perhaps to make the operations less expensive), which makes them + not suitable for production. An in-memory file system would be an example of + a fake. +* **Mocks** are objects pre-programmed with *expectations*, which form a + specification of the calls they are expected to receive. + +If all this seems too abstract for you, don't worry - the most important thing +to remember is that a mock allows you to check the *interaction* between itself +and code that uses it. The difference between fakes and mocks shall become much +clearer once you start to use mocks. + +**gMock** is a library (sometimes we also call it a "framework" to make it sound +cool) for creating mock classes and using them. It does to C++ what +jMock/EasyMock does to Java (well, more or less). + +When using gMock, + +1. first, you use some simple macros to describe the interface you want to + mock, and they will expand to the implementation of your mock class; +2. next, you create some mock objects and specify its expectations and behavior + using an intuitive syntax; +3. then you exercise code that uses the mock objects. gMock will catch any + violation to the expectations as soon as it arises. + +### Why gMock? + +While mock objects help you remove unnecessary dependencies in tests and make +them fast and reliable, using mocks manually in C++ is *hard*: + +* Someone has to implement the mocks. The job is usually tedious and + error-prone. No wonder people go great distance to avoid it. +* The quality of those manually written mocks is a bit, uh, unpredictable. You + may see some really polished ones, but you may also see some that were + hacked up in a hurry and have all sorts of ad hoc restrictions. +* The knowledge you gained from using one mock doesn't transfer to the next + one. + +In contrast, Java and Python programmers have some fine mock frameworks (jMock, +EasyMock, [Mox](http://wtf/mox), etc), which automate the creation of mocks. As +a result, mocking is a proven effective technique and widely adopted practice in +those communities. Having the right tool absolutely makes the difference. + +gMock was built to help C++ programmers. It was inspired by jMock and EasyMock, +but designed with C++'s specifics in mind. It is your friend if any of the +following problems is bothering you: + +* You are stuck with a sub-optimal design and wish you had done more + prototyping before it was too late, but prototyping in C++ is by no means + "rapid". +* Your tests are slow as they depend on too many libraries or use expensive + resources (e.g. a database). +* Your tests are brittle as some resources they use are unreliable (e.g. the + network). +* You want to test how your code handles a failure (e.g. a file checksum + error), but it's not easy to cause one. +* You need to make sure that your module interacts with other modules in the + right way, but it's hard to observe the interaction; therefore you resort to + observing the side effects at the end of the action, but it's awkward at + best. +* You want to "mock out" your dependencies, except that they don't have mock + implementations yet; and, frankly, you aren't thrilled by some of those + hand-written mocks. + +We encourage you to use gMock as + +* a *design* tool, for it lets you experiment with your interface design early + and often. More iterations lead to better designs! +* a *testing* tool to cut your tests' outbound dependencies and probe the + interaction between your module and its collaborators. + +### Getting Started + +gMock is bundled with googletest. + +### A Case for Mock Turtles + +Let's look at an example. Suppose you are developing a graphics program that +relies on a [LOGO](http://en.wikipedia.org/wiki/Logo_programming_language)-like +API for drawing. How would you test that it does the right thing? Well, you can +run it and compare the screen with a golden screen snapshot, but let's admit it: +tests like this are expensive to run and fragile (What if you just upgraded to a +shiny new graphics card that has better anti-aliasing? Suddenly you have to +update all your golden images.). It would be too painful if all your tests are +like this. Fortunately, you learned about +[Dependency Injection](http://en.wikipedia.org/wiki/Dependency_injection) and know the right thing +to do: instead of having your application talk to the system API directly, wrap +the API in an interface (say, `Turtle`) and code to that interface: + +```cpp +class Turtle { + ... + virtual ~Turtle() {}; + virtual void PenUp() = 0; + virtual void PenDown() = 0; + virtual void Forward(int distance) = 0; + virtual void Turn(int degrees) = 0; + virtual void GoTo(int x, int y) = 0; + virtual int GetX() const = 0; + virtual int GetY() const = 0; +}; +``` + +(Note that the destructor of `Turtle` **must** be virtual, as is the case for +**all** classes you intend to inherit from - otherwise the destructor of the +derived class will not be called when you delete an object through a base +pointer, and you'll get corrupted program states like memory leaks.) + +You can control whether the turtle's movement will leave a trace using `PenUp()` +and `PenDown()`, and control its movement using `Forward()`, `Turn()`, and +`GoTo()`. Finally, `GetX()` and `GetY()` tell you the current position of the +turtle. + +Your program will normally use a real implementation of this interface. In +tests, you can use a mock implementation instead. This allows you to easily +check what drawing primitives your program is calling, with what arguments, and +in which order. Tests written this way are much more robust (they won't break +because your new machine does anti-aliasing differently), easier to read and +maintain (the intent of a test is expressed in the code, not in some binary +images), and run *much, much faster*. + +### Writing the Mock Class + +If you are lucky, the mocks you need to use have already been implemented by +some nice people. If, however, you find yourself in the position to write a mock +class, relax - gMock turns this task into a fun game! (Well, almost.) + +#### How to Define It + +Using the `Turtle` interface as example, here are the simple steps you need to +follow: + +* Derive a class `MockTurtle` from `Turtle`. +* Take a *virtual* function of `Turtle` (while it's possible to + [mock non-virtual methods using templates](cook_book.md#MockingNonVirtualMethods), + it's much more involved). +* In the `public:` section of the child class, write `MOCK_METHOD();` +* Now comes the fun part: you take the function signature, cut-and-paste it + into the macro, and add two commas - one between the return type and the + name, another between the name and the argument list. +* If you're mocking a const method, add a 4th parameter containing `(const)` + (the parentheses are required). +* Since you're overriding a virtual method, we suggest adding the `override` + keyword. For const methods the 4th parameter becomes `(const, override)`, + for non-const methods just `(override)`. This isn't mandatory. +* Repeat until all virtual functions you want to mock are done. (It goes + without saying that *all* pure virtual methods in your abstract class must + be either mocked or overridden.) + +After the process, you should have something like: + +```cpp +#include "gmock/gmock.h" // Brings in gMock. + +class MockTurtle : public Turtle { + public: + ... + MOCK_METHOD(void, PenUp, (), (override)); + MOCK_METHOD(void, PenDown, (), (override)); + MOCK_METHOD(void, Forward, (int distance), (override)); + MOCK_METHOD(void, Turn, (int degrees), (override)); + MOCK_METHOD(void, GoTo, (int x, int y), (override)); + MOCK_METHOD(int, GetX, (), (const, override)); + MOCK_METHOD(int, GetY, (), (const, override)); +}; +``` + +You don't need to define these mock methods somewhere else - the `MOCK_METHOD` +macro will generate the definitions for you. It's that simple! + +#### Where to Put It + +When you define a mock class, you need to decide where to put its definition. +Some people put it in a `_test.cc`. This is fine when the interface being mocked +(say, `Foo`) is owned by the same person or team. Otherwise, when the owner of +`Foo` changes it, your test could break. (You can't really expect `Foo`'s +maintainer to fix every test that uses `Foo`, can you?) + +So, the rule of thumb is: if you need to mock `Foo` and it's owned by others, +define the mock class in `Foo`'s package (better, in a `testing` sub-package +such that you can clearly separate production code and testing utilities), put +it in a `.h` and a `cc_library`. Then everyone can reference them from their +tests. If `Foo` ever changes, there is only one copy of `MockFoo` to change, and +only tests that depend on the changed methods need to be fixed. + +Another way to do it: you can introduce a thin layer `FooAdaptor` on top of +`Foo` and code to this new interface. Since you own `FooAdaptor`, you can absorb +changes in `Foo` much more easily. While this is more work initially, carefully +choosing the adaptor interface can make your code easier to write and more +readable (a net win in the long run), as you can choose `FooAdaptor` to fit your +specific domain much better than `Foo` does. + + + +### Using Mocks in Tests + +Once you have a mock class, using it is easy. The typical work flow is: + +1. Import the gMock names from the `testing` namespace such that you can use + them unqualified (You only have to do it once per file. Remember that + namespaces are a good idea. +2. Create some mock objects. +3. Specify your expectations on them (How many times will a method be called? + With what arguments? What should it do? etc.). +4. Exercise some code that uses the mocks; optionally, check the result using + googletest assertions. If a mock method is called more than expected or with + wrong arguments, you'll get an error immediately. +5. When a mock is destructed, gMock will automatically check whether all + expectations on it have been satisfied. + +Here's an example: + +```cpp +#include "path/to/mock-turtle.h" +#include "gmock/gmock.h" +#include "gtest/gtest.h" + +using ::testing::AtLeast; // #1 + +TEST(PainterTest, CanDrawSomething) { + MockTurtle turtle; // #2 + EXPECT_CALL(turtle, PenDown()) // #3 + .Times(AtLeast(1)); + + Painter painter(&turtle); // #4 + + EXPECT_TRUE(painter.DrawCircle(0, 0, 10)); // #5 +} +``` + +As you might have guessed, this test checks that `PenDown()` is called at least +once. If the `painter` object didn't call this method, your test will fail with +a message like this: + +```text +path/to/my_test.cc:119: Failure +Actual function call count doesn't match this expectation: +Actually: never called; +Expected: called at least once. +Stack trace: +... +``` + +**Tip 1:** If you run the test from an Emacs buffer, you can hit on the +line number to jump right to the failed expectation. + +**Tip 2:** If your mock objects are never deleted, the final verification won't +happen. Therefore it's a good idea to turn on the heap checker in your tests +when you allocate mocks on the heap. You get that automatically if you use the +`gtest_main` library already. + +**Important note:** gMock requires expectations to be set **before** the mock +functions are called, otherwise the behavior is **undefined**. In particular, +you mustn't interleave `EXPECT_CALL()s` and calls to the mock functions. + +This means `EXPECT_CALL()` should be read as expecting that a call will occur +*in the future*, not that a call has occurred. Why does gMock work like that? +Well, specifying the expectation beforehand allows gMock to report a violation +as soon as it rises, when the context (stack trace, etc) is still available. +This makes debugging much easier. + +Admittedly, this test is contrived and doesn't do much. You can easily achieve +the same effect without using gMock. However, as we shall reveal soon, gMock +allows you to do *so much more* with the mocks. + +### Setting Expectations + +The key to using a mock object successfully is to set the *right expectations* +on it. If you set the expectations too strict, your test will fail as the result +of unrelated changes. If you set them too loose, bugs can slip through. You want +to do it just right such that your test can catch exactly the kind of bugs you +intend it to catch. gMock provides the necessary means for you to do it "just +right." + +#### General Syntax + +In gMock we use the `EXPECT_CALL()` macro to set an expectation on a mock +method. The general syntax is: + +```cpp +EXPECT_CALL(mock_object, method(matchers)) + .Times(cardinality) + .WillOnce(action) + .WillRepeatedly(action); +``` + +The macro has two arguments: first the mock object, and then the method and its +arguments. Note that the two are separated by a comma (`,`), not a period (`.`). +(Why using a comma? The answer is that it was necessary for technical reasons.) +If the method is not overloaded, the macro can also be called without matchers: + +```cpp +EXPECT_CALL(mock_object, non-overloaded-method) + .Times(cardinality) + .WillOnce(action) + .WillRepeatedly(action); +``` + +This syntax allows the test writer to specify "called with any arguments" +without explicitly specifying the number or types of arguments. To avoid +unintended ambiguity, this syntax may only be used for methods which are not +overloaded + +Either form of the macro can be followed by some optional *clauses* that provide +more information about the expectation. We'll discuss how each clause works in +the coming sections. + +This syntax is designed to make an expectation read like English. For example, +you can probably guess that + +```cpp +using ::testing::Return; +... +EXPECT_CALL(turtle, GetX()) + .Times(5) + .WillOnce(Return(100)) + .WillOnce(Return(150)) + .WillRepeatedly(Return(200)); +``` + +says that the `turtle` object's `GetX()` method will be called five times, it +will return 100 the first time, 150 the second time, and then 200 every time. +Some people like to call this style of syntax a Domain-Specific Language (DSL). + +**Note:** Why do we use a macro to do this? Well it serves two purposes: first +it makes expectations easily identifiable (either by `gsearch` or by a human +reader), and second it allows gMock to include the source file location of a +failed expectation in messages, making debugging easier. + +#### Matchers: What Arguments Do We Expect? + +When a mock function takes arguments, we may specify what arguments we are +expecting, for example: + +```cpp +// Expects the turtle to move forward by 100 units. +EXPECT_CALL(turtle, Forward(100)); +``` + +Oftentimes you do not want to be too specific. Remember that talk about tests +being too rigid? Over specification leads to brittle tests and obscures the +intent of tests. Therefore we encourage you to specify only what's necessary—no +more, no less. If you aren't interested in the value of an argument, write `_` +as the argument, which means "anything goes": + +```cpp +using ::testing::_; +... +// Expects that the turtle jumps to somewhere on the x=50 line. +EXPECT_CALL(turtle, GoTo(50, _)); +``` + +`_` is an instance of what we call **matchers**. A matcher is like a predicate +and can test whether an argument is what we'd expect. You can use a matcher +inside `EXPECT_CALL()` wherever a function argument is expected. `_` is a +convenient way of saying "any value". + +In the above examples, `100` and `50` are also matchers; implicitly, they are +the same as `Eq(100)` and `Eq(50)`, which specify that the argument must be +equal (using `operator==`) to the matcher argument. There are many +[built-in matchers](#MatcherList) for common types (as well as +[custom matchers](cook_book.md#NewMatchers)); for example: + +```cpp +using ::testing::Ge; +... +// Expects the turtle moves forward by at least 100. +EXPECT_CALL(turtle, Forward(Ge(100))); +``` + +If you don't care about *any* arguments, rather than specify `_` for each of +them you may instead omit the parameter list: + +```cpp +// Expects the turtle to move forward. +EXPECT_CALL(turtle, Forward); +// Expects the turtle to jump somewhere. +EXPECT_CALL(turtle, GoTo); +``` + +This works for all non-overloaded methods; if a method is overloaded, you need +to help gMock resolve which overload is expected by specifying the number of +arguments and possibly also the +[types of the arguments](cook_book.md#SelectOverload). + +#### Cardinalities: How Many Times Will It Be Called? + +The first clause we can specify following an `EXPECT_CALL()` is `Times()`. We +call its argument a **cardinality** as it tells *how many times* the call should +occur. It allows us to repeat an expectation many times without actually writing +it as many times. More importantly, a cardinality can be "fuzzy", just like a +matcher can be. This allows a user to express the intent of a test exactly. + +An interesting special case is when we say `Times(0)`. You may have guessed - it +means that the function shouldn't be called with the given arguments at all, and +gMock will report a googletest failure whenever the function is (wrongfully) +called. + +We've seen `AtLeast(n)` as an example of fuzzy cardinalities earlier. For the +list of built-in cardinalities you can use, see +[here](cheat_sheet.md#CardinalityList). + +The `Times()` clause can be omitted. **If you omit `Times()`, gMock will infer +the cardinality for you.** The rules are easy to remember: + +* If **neither** `WillOnce()` **nor** `WillRepeatedly()` is in the + `EXPECT_CALL()`, the inferred cardinality is `Times(1)`. +* If there are *n* `WillOnce()`'s but **no** `WillRepeatedly()`, where *n* >= + 1, the cardinality is `Times(n)`. +* If there are *n* `WillOnce()`'s and **one** `WillRepeatedly()`, where *n* >= + 0, the cardinality is `Times(AtLeast(n))`. + +**Quick quiz:** what do you think will happen if a function is expected to be +called twice but actually called four times? + +#### Actions: What Should It Do? + +Remember that a mock object doesn't really have a working implementation? We as +users have to tell it what to do when a method is invoked. This is easy in +gMock. + +First, if the return type of a mock function is a built-in type or a pointer, +the function has a **default action** (a `void` function will just return, a +`bool` function will return `false`, and other functions will return 0). In +addition, in C++ 11 and above, a mock function whose return type is +default-constructible (i.e. has a default constructor) has a default action of +returning a default-constructed value. If you don't say anything, this behavior +will be used. + +Second, if a mock function doesn't have a default action, or the default action +doesn't suit you, you can specify the action to be taken each time the +expectation matches using a series of `WillOnce()` clauses followed by an +optional `WillRepeatedly()`. For example, + +```cpp +using ::testing::Return; +... +EXPECT_CALL(turtle, GetX()) + .WillOnce(Return(100)) + .WillOnce(Return(200)) + .WillOnce(Return(300)); +``` + +says that `turtle.GetX()` will be called *exactly three times* (gMock inferred +this from how many `WillOnce()` clauses we've written, since we didn't +explicitly write `Times()`), and will return 100, 200, and 300 respectively. + +```cpp +using ::testing::Return; +... +EXPECT_CALL(turtle, GetY()) + .WillOnce(Return(100)) + .WillOnce(Return(200)) + .WillRepeatedly(Return(300)); +``` + +says that `turtle.GetY()` will be called *at least twice* (gMock knows this as +we've written two `WillOnce()` clauses and a `WillRepeatedly()` while having no +explicit `Times()`), will return 100 and 200 respectively the first two times, +and 300 from the third time on. + +Of course, if you explicitly write a `Times()`, gMock will not try to infer the +cardinality itself. What if the number you specified is larger than there are +`WillOnce()` clauses? Well, after all `WillOnce()`s are used up, gMock will do +the *default* action for the function every time (unless, of course, you have a +`WillRepeatedly()`.). + +What can we do inside `WillOnce()` besides `Return()`? You can return a +reference using `ReturnRef(*variable*)`, or invoke a pre-defined function, among +[others](cook_book.md#using-actions). + +**Important note:** The `EXPECT_CALL()` statement evaluates the action clause +only once, even though the action may be performed many times. Therefore you +must be careful about side effects. The following may not do what you want: + +```cpp +using ::testing::Return; +... +int n = 100; +EXPECT_CALL(turtle, GetX()) + .Times(4) + .WillRepeatedly(Return(n++)); +``` + +Instead of returning 100, 101, 102, ..., consecutively, this mock function will +always return 100 as `n++` is only evaluated once. Similarly, `Return(new Foo)` +will create a new `Foo` object when the `EXPECT_CALL()` is executed, and will +return the same pointer every time. If you want the side effect to happen every +time, you need to define a custom action, which we'll teach in the +[cook book](http://). + +Time for another quiz! What do you think the following means? + +```cpp +using ::testing::Return; +... +EXPECT_CALL(turtle, GetY()) + .Times(4) + .WillOnce(Return(100)); +``` + +Obviously `turtle.GetY()` is expected to be called four times. But if you think +it will return 100 every time, think twice! Remember that one `WillOnce()` +clause will be consumed each time the function is invoked and the default action +will be taken afterwards. So the right answer is that `turtle.GetY()` will +return 100 the first time, but **return 0 from the second time on**, as +returning 0 is the default action for `int` functions. + +#### Using Multiple Expectations {#MultiExpectations} + +So far we've only shown examples where you have a single expectation. More +realistically, you'll specify expectations on multiple mock methods which may be +from multiple mock objects. + +By default, when a mock method is invoked, gMock will search the expectations in +the **reverse order** they are defined, and stop when an active expectation that +matches the arguments is found (you can think of it as "newer rules override +older ones."). If the matching expectation cannot take any more calls, you will +get an upper-bound-violated failure. Here's an example: + +```cpp +using ::testing::_; +... +EXPECT_CALL(turtle, Forward(_)); // #1 +EXPECT_CALL(turtle, Forward(10)) // #2 + .Times(2); +``` + +If `Forward(10)` is called three times in a row, the third time it will be an +error, as the last matching expectation (#2) has been saturated. If, however, +the third `Forward(10)` call is replaced by `Forward(20)`, then it would be OK, +as now #1 will be the matching expectation. + +**Note:** Why does gMock search for a match in the *reverse* order of the +expectations? The reason is that this allows a user to set up the default +expectations in a mock object's constructor or the test fixture's set-up phase +and then customize the mock by writing more specific expectations in the test +body. So, if you have two expectations on the same method, you want to put the +one with more specific matchers **after** the other, or the more specific rule +would be shadowed by the more general one that comes after it. + +**Tip:** It is very common to start with a catch-all expectation for a method +and `Times(AnyNumber())` (omitting arguments, or with `_` for all arguments, if +overloaded). This makes any calls to the method expected. This is not necessary +for methods that are not mentioned at all (these are "uninteresting"), but is +useful for methods that have some expectations, but for which other calls are +ok. See +[Understanding Uninteresting vs Unexpected Calls](cook_book.md#uninteresting-vs-unexpected). + +#### Ordered vs Unordered Calls {#OrderedCalls} + +By default, an expectation can match a call even though an earlier expectation +hasn't been satisfied. In other words, the calls don't have to occur in the +order the expectations are specified. + +Sometimes, you may want all the expected calls to occur in a strict order. To +say this in gMock is easy: + +```cpp +using ::testing::InSequence; +... +TEST(FooTest, DrawsLineSegment) { + ... + { + InSequence seq; + + EXPECT_CALL(turtle, PenDown()); + EXPECT_CALL(turtle, Forward(100)); + EXPECT_CALL(turtle, PenUp()); + } + Foo(); +} +``` + +By creating an object of type `InSequence`, all expectations in its scope are +put into a *sequence* and have to occur *sequentially*. Since we are just +relying on the constructor and destructor of this object to do the actual work, +its name is really irrelevant. + +In this example, we test that `Foo()` calls the three expected functions in the +order as written. If a call is made out-of-order, it will be an error. + +(What if you care about the relative order of some of the calls, but not all of +them? Can you specify an arbitrary partial order? The answer is ... yes! The +details can be found [here](cook_book.md#OrderedCalls).) + +#### All Expectations Are Sticky (Unless Said Otherwise) {#StickyExpectations} + +Now let's do a quick quiz to see how well you can use this mock stuff already. +How would you test that the turtle is asked to go to the origin *exactly twice* +(you want to ignore any other instructions it receives)? + +After you've come up with your answer, take a look at ours and compare notes +(solve it yourself first - don't cheat!): + +```cpp +using ::testing::_; +using ::testing::AnyNumber; +... +EXPECT_CALL(turtle, GoTo(_, _)) // #1 + .Times(AnyNumber()); +EXPECT_CALL(turtle, GoTo(0, 0)) // #2 + .Times(2); +``` + +Suppose `turtle.GoTo(0, 0)` is called three times. In the third time, gMock will +see that the arguments match expectation #2 (remember that we always pick the +last matching expectation). Now, since we said that there should be only two +such calls, gMock will report an error immediately. This is basically what we've +told you in the [Using Multiple Expectations](#MultiExpectations) section above. + +This example shows that **expectations in gMock are "sticky" by default**, in +the sense that they remain active even after we have reached their invocation +upper bounds. This is an important rule to remember, as it affects the meaning +of the spec, and is **different** to how it's done in many other mocking +frameworks (Why'd we do that? Because we think our rule makes the common cases +easier to express and understand.). + +Simple? Let's see if you've really understood it: what does the following code +say? + +```cpp +using ::testing::Return; +... +for (int i = n; i > 0; i--) { + EXPECT_CALL(turtle, GetX()) + .WillOnce(Return(10*i)); +} +``` + +If you think it says that `turtle.GetX()` will be called `n` times and will +return 10, 20, 30, ..., consecutively, think twice! The problem is that, as we +said, expectations are sticky. So, the second time `turtle.GetX()` is called, +the last (latest) `EXPECT_CALL()` statement will match, and will immediately +lead to an "upper bound violated" error - this piece of code is not very useful! + +One correct way of saying that `turtle.GetX()` will return 10, 20, 30, ..., is +to explicitly say that the expectations are *not* sticky. In other words, they +should *retire* as soon as they are saturated: + +```cpp +using ::testing::Return; +... +for (int i = n; i > 0; i--) { + EXPECT_CALL(turtle, GetX()) + .WillOnce(Return(10*i)) + .RetiresOnSaturation(); +} +``` + +And, there's a better way to do it: in this case, we expect the calls to occur +in a specific order, and we line up the actions to match the order. Since the +order is important here, we should make it explicit using a sequence: + +```cpp +using ::testing::InSequence; +using ::testing::Return; +... +{ + InSequence s; + + for (int i = 1; i <= n; i++) { + EXPECT_CALL(turtle, GetX()) + .WillOnce(Return(10*i)) + .RetiresOnSaturation(); + } +} +``` + +By the way, the other situation where an expectation may *not* be sticky is when +it's in a sequence - as soon as another expectation that comes after it in the +sequence has been used, it automatically retires (and will never be used to +match any call). + +#### Uninteresting Calls + +A mock object may have many methods, and not all of them are that interesting. +For example, in some tests we may not care about how many times `GetX()` and +`GetY()` get called. + +In gMock, if you are not interested in a method, just don't say anything about +it. If a call to this method occurs, you'll see a warning in the test output, +but it won't be a failure. This is called "naggy" behavior; to change, see +[The Nice, the Strict, and the Naggy](cook_book.md#NiceStrictNaggy). diff --git a/build/_deps/googletest-src/googlemock/docs/gmock_faq.md b/build/_deps/googletest-src/googlemock/docs/gmock_faq.md new file mode 100644 index 0000000000000000000000000000000000000000..214aabf1218af9cc7ee5c3d37e7e58516aefb116 --- /dev/null +++ b/build/_deps/googletest-src/googlemock/docs/gmock_faq.md @@ -0,0 +1,396 @@ +## Legacy gMock FAQ {#GMockFaq} + + + +### When I call a method on my mock object, the method for the real object is invoked instead. What's the problem? + +In order for a method to be mocked, it must be *virtual*, unless you use the +[high-perf dependency injection technique](#MockingNonVirtualMethods). + +### Can I mock a variadic function? + +You cannot mock a variadic function (i.e. a function taking ellipsis (`...`) +arguments) directly in gMock. + +The problem is that in general, there is *no way* for a mock object to know how +many arguments are passed to the variadic method, and what the arguments' types +are. Only the *author of the base class* knows the protocol, and we cannot look +into his or her head. + +Therefore, to mock such a function, the *user* must teach the mock object how to +figure out the number of arguments and their types. One way to do it is to +provide overloaded versions of the function. + +Ellipsis arguments are inherited from C and not really a C++ feature. They are +unsafe to use and don't work with arguments that have constructors or +destructors. Therefore we recommend to avoid them in C++ as much as possible. + +### MSVC gives me warning C4301 or C4373 when I define a mock method with a const parameter. Why? + +If you compile this using Microsoft Visual C++ 2005 SP1: + +```cpp +class Foo { + ... + virtual void Bar(const int i) = 0; +}; + +class MockFoo : public Foo { + ... + MOCK_METHOD(void, Bar, (const int i), (override)); +}; +``` + +You may get the following warning: + +```shell +warning C4301: 'MockFoo::Bar': overriding virtual function only differs from 'Foo::Bar' by const/volatile qualifier +``` + +This is a MSVC bug. The same code compiles fine with gcc, for example. If you +use Visual C++ 2008 SP1, you would get the warning: + +```shell +warning C4373: 'MockFoo::Bar': virtual function overrides 'Foo::Bar', previous versions of the compiler did not override when parameters only differed by const/volatile qualifiers +``` + +In C++, if you *declare* a function with a `const` parameter, the `const` +modifier is ignored. Therefore, the `Foo` base class above is equivalent to: + +```cpp +class Foo { + ... + virtual void Bar(int i) = 0; // int or const int? Makes no difference. +}; +``` + +In fact, you can *declare* `Bar()` with an `int` parameter, and define it with a +`const int` parameter. The compiler will still match them up. + +Since making a parameter `const` is meaningless in the method declaration, we +recommend to remove it in both `Foo` and `MockFoo`. That should workaround the +VC bug. + +Note that we are talking about the *top-level* `const` modifier here. If the +function parameter is passed by pointer or reference, declaring the pointee or +referee as `const` is still meaningful. For example, the following two +declarations are *not* equivalent: + +```cpp +void Bar(int* p); // Neither p nor *p is const. +void Bar(const int* p); // p is not const, but *p is. +``` + + + +### I can't figure out why gMock thinks my expectations are not satisfied. What should I do? + +You might want to run your test with `--gmock_verbose=info`. This flag lets +gMock print a trace of every mock function call it receives. By studying the +trace, you'll gain insights on why the expectations you set are not met. + +If you see the message "The mock function has no default action set, and its +return type has no default value set.", then try +[adding a default action](for_dummies.md#DefaultValue). Due to a known issue, +unexpected calls on mocks without default actions don't print out a detailed +comparison between the actual arguments and the expected arguments. + +### My program crashed and `ScopedMockLog` spit out tons of messages. Is it a gMock bug? + +gMock and `ScopedMockLog` are likely doing the right thing here. + +When a test crashes, the failure signal handler will try to log a lot of +information (the stack trace, and the address map, for example). The messages +are compounded if you have many threads with depth stacks. When `ScopedMockLog` +intercepts these messages and finds that they don't match any expectations, it +prints an error for each of them. + +You can learn to ignore the errors, or you can rewrite your expectations to make +your test more robust, for example, by adding something like: + +```cpp +using ::testing::AnyNumber; +using ::testing::Not; +... + // Ignores any log not done by us. + EXPECT_CALL(log, Log(_, Not(EndsWith("/my_file.cc")), _)) + .Times(AnyNumber()); +``` + +### How can I assert that a function is NEVER called? + +```cpp +using ::testing::_; +... + EXPECT_CALL(foo, Bar(_)) + .Times(0); +``` + + + +### I have a failed test where gMock tells me TWICE that a particular expectation is not satisfied. Isn't this redundant? + +When gMock detects a failure, it prints relevant information (the mock function +arguments, the state of relevant expectations, and etc) to help the user debug. +If another failure is detected, gMock will do the same, including printing the +state of relevant expectations. + +Sometimes an expectation's state didn't change between two failures, and you'll +see the same description of the state twice. They are however *not* redundant, +as they refer to *different points in time*. The fact they are the same *is* +interesting information. + +### I get a heapcheck failure when using a mock object, but using a real object is fine. What can be wrong? + +Does the class (hopefully a pure interface) you are mocking have a virtual +destructor? + +Whenever you derive from a base class, make sure its destructor is virtual. +Otherwise Bad Things will happen. Consider the following code: + +```cpp +class Base { + public: + // Not virtual, but should be. + ~Base() { ... } + ... +}; + +class Derived : public Base { + public: + ... + private: + std::string value_; +}; + +... + Base* p = new Derived; + ... + delete p; // Surprise! ~Base() will be called, but ~Derived() will not + // - value_ is leaked. +``` + +By changing `~Base()` to virtual, `~Derived()` will be correctly called when +`delete p` is executed, and the heap checker will be happy. + +### The "newer expectations override older ones" rule makes writing expectations awkward. Why does gMock do that? + +When people complain about this, often they are referring to code like: + +```cpp +using ::testing::Return; +... + // foo.Bar() should be called twice, return 1 the first time, and return + // 2 the second time. However, I have to write the expectations in the + // reverse order. This sucks big time!!! + EXPECT_CALL(foo, Bar()) + .WillOnce(Return(2)) + .RetiresOnSaturation(); + EXPECT_CALL(foo, Bar()) + .WillOnce(Return(1)) + .RetiresOnSaturation(); +``` + +The problem, is that they didn't pick the **best** way to express the test's +intent. + +By default, expectations don't have to be matched in *any* particular order. If +you want them to match in a certain order, you need to be explicit. This is +gMock's (and jMock's) fundamental philosophy: it's easy to accidentally +over-specify your tests, and we want to make it harder to do so. + +There are two better ways to write the test spec. You could either put the +expectations in sequence: + +```cpp +using ::testing::Return; +... + // foo.Bar() should be called twice, return 1 the first time, and return + // 2 the second time. Using a sequence, we can write the expectations + // in their natural order. + { + InSequence s; + EXPECT_CALL(foo, Bar()) + .WillOnce(Return(1)) + .RetiresOnSaturation(); + EXPECT_CALL(foo, Bar()) + .WillOnce(Return(2)) + .RetiresOnSaturation(); + } +``` + +or you can put the sequence of actions in the same expectation: + +```cpp +using ::testing::Return; +... + // foo.Bar() should be called twice, return 1 the first time, and return + // 2 the second time. + EXPECT_CALL(foo, Bar()) + .WillOnce(Return(1)) + .WillOnce(Return(2)) + .RetiresOnSaturation(); +``` + +Back to the original questions: why does gMock search the expectations (and +`ON_CALL`s) from back to front? Because this allows a user to set up a mock's +behavior for the common case early (e.g. in the mock's constructor or the test +fixture's set-up phase) and customize it with more specific rules later. If +gMock searches from front to back, this very useful pattern won't be possible. + +### gMock prints a warning when a function without EXPECT_CALL is called, even if I have set its behavior using ON_CALL. Would it be reasonable not to show the warning in this case? + +When choosing between being neat and being safe, we lean toward the latter. So +the answer is that we think it's better to show the warning. + +Often people write `ON_CALL`s in the mock object's constructor or `SetUp()`, as +the default behavior rarely changes from test to test. Then in the test body +they set the expectations, which are often different for each test. Having an +`ON_CALL` in the set-up part of a test doesn't mean that the calls are expected. +If there's no `EXPECT_CALL` and the method is called, it's possibly an error. If +we quietly let the call go through without notifying the user, bugs may creep in +unnoticed. + +If, however, you are sure that the calls are OK, you can write + +```cpp +using ::testing::_; +... + EXPECT_CALL(foo, Bar(_)) + .WillRepeatedly(...); +``` + +instead of + +```cpp +using ::testing::_; +... + ON_CALL(foo, Bar(_)) + .WillByDefault(...); +``` + +This tells gMock that you do expect the calls and no warning should be printed. + +Also, you can control the verbosity by specifying `--gmock_verbose=error`. Other +values are `info` and `warning`. If you find the output too noisy when +debugging, just choose a less verbose level. + +### How can I delete the mock function's argument in an action? + +If your mock function takes a pointer argument and you want to delete that +argument, you can use testing::DeleteArg() to delete the N'th (zero-indexed) +argument: + +```cpp +using ::testing::_; + ... + MOCK_METHOD(void, Bar, (X* x, const Y& y)); + ... + EXPECT_CALL(mock_foo_, Bar(_, _)) + .WillOnce(testing::DeleteArg<0>())); +``` + +### How can I perform an arbitrary action on a mock function's argument? + +If you find yourself needing to perform some action that's not supported by +gMock directly, remember that you can define your own actions using +[`MakeAction()`](#NewMonoActions) or +[`MakePolymorphicAction()`](#NewPolyActions), or you can write a stub function +and invoke it using [`Invoke()`](#FunctionsAsActions). + +```cpp +using ::testing::_; +using ::testing::Invoke; + ... + MOCK_METHOD(void, Bar, (X* p)); + ... + EXPECT_CALL(mock_foo_, Bar(_)) + .WillOnce(Invoke(MyAction(...))); +``` + +### My code calls a static/global function. Can I mock it? + +You can, but you need to make some changes. + +In general, if you find yourself needing to mock a static function, it's a sign +that your modules are too tightly coupled (and less flexible, less reusable, +less testable, etc). You are probably better off defining a small interface and +call the function through that interface, which then can be easily mocked. It's +a bit of work initially, but usually pays for itself quickly. + +This Google Testing Blog +[post](https://testing.googleblog.com/2008/06/defeat-static-cling.html) says it +excellently. Check it out. + +### My mock object needs to do complex stuff. It's a lot of pain to specify the actions. gMock sucks! + +I know it's not a question, but you get an answer for free any way. :-) + +With gMock, you can create mocks in C++ easily. And people might be tempted to +use them everywhere. Sometimes they work great, and sometimes you may find them, +well, a pain to use. So, what's wrong in the latter case? + +When you write a test without using mocks, you exercise the code and assert that +it returns the correct value or that the system is in an expected state. This is +sometimes called "state-based testing". + +Mocks are great for what some call "interaction-based" testing: instead of +checking the system state at the very end, mock objects verify that they are +invoked the right way and report an error as soon as it arises, giving you a +handle on the precise context in which the error was triggered. This is often +more effective and economical to do than state-based testing. + +If you are doing state-based testing and using a test double just to simulate +the real object, you are probably better off using a fake. Using a mock in this +case causes pain, as it's not a strong point for mocks to perform complex +actions. If you experience this and think that mocks suck, you are just not +using the right tool for your problem. Or, you might be trying to solve the +wrong problem. :-) + +### I got a warning "Uninteresting function call encountered - default action taken.." Should I panic? + +By all means, NO! It's just an FYI. :-) + +What it means is that you have a mock function, you haven't set any expectations +on it (by gMock's rule this means that you are not interested in calls to this +function and therefore it can be called any number of times), and it is called. +That's OK - you didn't say it's not OK to call the function! + +What if you actually meant to disallow this function to be called, but forgot to +write `EXPECT_CALL(foo, Bar()).Times(0)`? While one can argue that it's the +user's fault, gMock tries to be nice and prints you a note. + +So, when you see the message and believe that there shouldn't be any +uninteresting calls, you should investigate what's going on. To make your life +easier, gMock dumps the stack trace when an uninteresting call is encountered. +From that you can figure out which mock function it is, and how it is called. + +### I want to define a custom action. Should I use Invoke() or implement the ActionInterface interface? + +Either way is fine - you want to choose the one that's more convenient for your +circumstance. + +Usually, if your action is for a particular function type, defining it using +`Invoke()` should be easier; if your action can be used in functions of +different types (e.g. if you are defining `Return(*value*)`), +`MakePolymorphicAction()` is easiest. Sometimes you want precise control on what +types of functions the action can be used in, and implementing `ActionInterface` +is the way to go here. See the implementation of `Return()` in +`testing/base/public/gmock-actions.h` for an example. + +### I use SetArgPointee() in WillOnce(), but gcc complains about "conflicting return type specified". What does it mean? + +You got this error as gMock has no idea what value it should return when the +mock method is called. `SetArgPointee()` says what the side effect is, but +doesn't say what the return value should be. You need `DoAll()` to chain a +`SetArgPointee()` with a `Return()` that provides a value appropriate to the API +being mocked. + +See this [recipe](cook_book.md#mocking-side-effects) for more details and an +example. + +### I have a huge mock class, and Microsoft Visual C++ runs out of memory when compiling it. What can I do? + +We've noticed that when the `/clr` compiler flag is used, Visual C++ uses 5~6 +times as much memory when compiling a mock class. We suggest to avoid `/clr` +when compiling native C++ mocks. diff --git a/build/_deps/googletest-src/googlemock/include/gmock/gmock-actions.h b/build/_deps/googletest-src/googlemock/include/gmock/gmock-actions.h new file mode 100644 index 0000000000000000000000000000000000000000..f12d39be06a7697aec8180ab59ed3ec7f8800ee5 --- /dev/null +++ b/build/_deps/googletest-src/googlemock/include/gmock/gmock-actions.h @@ -0,0 +1,1142 @@ +// Copyright 2007, Google Inc. +// 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 Google Inc. 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 +// OWNER 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. + + +// Google Mock - a framework for writing C++ mock classes. +// +// This file implements some commonly used actions. + +// GOOGLETEST_CM0002 DO NOT DELETE + +#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_ACTIONS_H_ +#define GMOCK_INCLUDE_GMOCK_GMOCK_ACTIONS_H_ + +#ifndef _WIN32_WCE +# include +#endif + +#include +#include +#include +#include +#include +#include + +#include "gmock/internal/gmock-internal-utils.h" +#include "gmock/internal/gmock-port.h" + +#ifdef _MSC_VER +# pragma warning(push) +# pragma warning(disable:4100) +#endif + +namespace testing { + +// To implement an action Foo, define: +// 1. a class FooAction that implements the ActionInterface interface, and +// 2. a factory function that creates an Action object from a +// const FooAction*. +// +// The two-level delegation design follows that of Matcher, providing +// consistency for extension developers. It also eases ownership +// management as Action objects can now be copied like plain values. + +namespace internal { + +// BuiltInDefaultValueGetter::Get() returns a +// default-constructed T value. BuiltInDefaultValueGetter::Get() crashes with an error. +// +// This primary template is used when kDefaultConstructible is true. +template +struct BuiltInDefaultValueGetter { + static T Get() { return T(); } +}; +template +struct BuiltInDefaultValueGetter { + static T Get() { + Assert(false, __FILE__, __LINE__, + "Default action undefined for the function return type."); + return internal::Invalid(); + // The above statement will never be reached, but is required in + // order for this function to compile. + } +}; + +// BuiltInDefaultValue::Get() returns the "built-in" default value +// for type T, which is NULL when T is a raw pointer type, 0 when T is +// a numeric type, false when T is bool, or "" when T is string or +// std::string. In addition, in C++11 and above, it turns a +// default-constructed T value if T is default constructible. For any +// other type T, the built-in default T value is undefined, and the +// function will abort the process. +template +class BuiltInDefaultValue { + public: + // This function returns true if and only if type T has a built-in default + // value. + static bool Exists() { + return ::std::is_default_constructible::value; + } + + static T Get() { + return BuiltInDefaultValueGetter< + T, ::std::is_default_constructible::value>::Get(); + } +}; + +// This partial specialization says that we use the same built-in +// default value for T and const T. +template +class BuiltInDefaultValue { + public: + static bool Exists() { return BuiltInDefaultValue::Exists(); } + static T Get() { return BuiltInDefaultValue::Get(); } +}; + +// This partial specialization defines the default values for pointer +// types. +template +class BuiltInDefaultValue { + public: + static bool Exists() { return true; } + static T* Get() { return nullptr; } +}; + +// The following specializations define the default values for +// specific types we care about. +#define GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(type, value) \ + template <> \ + class BuiltInDefaultValue { \ + public: \ + static bool Exists() { return true; } \ + static type Get() { return value; } \ + } + +GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(void, ); // NOLINT +GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(::std::string, ""); +GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(bool, false); +GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(unsigned char, '\0'); +GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(signed char, '\0'); +GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(char, '\0'); + +// There's no need for a default action for signed wchar_t, as that +// type is the same as wchar_t for gcc, and invalid for MSVC. +// +// There's also no need for a default action for unsigned wchar_t, as +// that type is the same as unsigned int for gcc, and invalid for +// MSVC. +#if GMOCK_WCHAR_T_IS_NATIVE_ +GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(wchar_t, 0U); // NOLINT +#endif + +GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(unsigned short, 0U); // NOLINT +GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(signed short, 0); // NOLINT +GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(unsigned int, 0U); +GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(signed int, 0); +GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(unsigned long, 0UL); // NOLINT +GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(signed long, 0L); // NOLINT +GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(UInt64, 0); +GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(Int64, 0); +GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(float, 0); +GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(double, 0); + +#undef GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_ + +} // namespace internal + +// When an unexpected function call is encountered, Google Mock will +// let it return a default value if the user has specified one for its +// return type, or if the return type has a built-in default value; +// otherwise Google Mock won't know what value to return and will have +// to abort the process. +// +// The DefaultValue class allows a user to specify the +// default value for a type T that is both copyable and publicly +// destructible (i.e. anything that can be used as a function return +// type). The usage is: +// +// // Sets the default value for type T to be foo. +// DefaultValue::Set(foo); +template +class DefaultValue { + public: + // Sets the default value for type T; requires T to be + // copy-constructable and have a public destructor. + static void Set(T x) { + delete producer_; + producer_ = new FixedValueProducer(x); + } + + // Provides a factory function to be called to generate the default value. + // This method can be used even if T is only move-constructible, but it is not + // limited to that case. + typedef T (*FactoryFunction)(); + static void SetFactory(FactoryFunction factory) { + delete producer_; + producer_ = new FactoryValueProducer(factory); + } + + // Unsets the default value for type T. + static void Clear() { + delete producer_; + producer_ = nullptr; + } + + // Returns true if and only if the user has set the default value for type T. + static bool IsSet() { return producer_ != nullptr; } + + // Returns true if T has a default return value set by the user or there + // exists a built-in default value. + static bool Exists() { + return IsSet() || internal::BuiltInDefaultValue::Exists(); + } + + // Returns the default value for type T if the user has set one; + // otherwise returns the built-in default value. Requires that Exists() + // is true, which ensures that the return value is well-defined. + static T Get() { + return producer_ == nullptr ? internal::BuiltInDefaultValue::Get() + : producer_->Produce(); + } + + private: + class ValueProducer { + public: + virtual ~ValueProducer() {} + virtual T Produce() = 0; + }; + + class FixedValueProducer : public ValueProducer { + public: + explicit FixedValueProducer(T value) : value_(value) {} + T Produce() override { return value_; } + + private: + const T value_; + GTEST_DISALLOW_COPY_AND_ASSIGN_(FixedValueProducer); + }; + + class FactoryValueProducer : public ValueProducer { + public: + explicit FactoryValueProducer(FactoryFunction factory) + : factory_(factory) {} + T Produce() override { return factory_(); } + + private: + const FactoryFunction factory_; + GTEST_DISALLOW_COPY_AND_ASSIGN_(FactoryValueProducer); + }; + + static ValueProducer* producer_; +}; + +// This partial specialization allows a user to set default values for +// reference types. +template +class DefaultValue { + public: + // Sets the default value for type T&. + static void Set(T& x) { // NOLINT + address_ = &x; + } + + // Unsets the default value for type T&. + static void Clear() { address_ = nullptr; } + + // Returns true if and only if the user has set the default value for type T&. + static bool IsSet() { return address_ != nullptr; } + + // Returns true if T has a default return value set by the user or there + // exists a built-in default value. + static bool Exists() { + return IsSet() || internal::BuiltInDefaultValue::Exists(); + } + + // Returns the default value for type T& if the user has set one; + // otherwise returns the built-in default value if there is one; + // otherwise aborts the process. + static T& Get() { + return address_ == nullptr ? internal::BuiltInDefaultValue::Get() + : *address_; + } + + private: + static T* address_; +}; + +// This specialization allows DefaultValue::Get() to +// compile. +template <> +class DefaultValue { + public: + static bool Exists() { return true; } + static void Get() {} +}; + +// Points to the user-set default value for type T. +template +typename DefaultValue::ValueProducer* DefaultValue::producer_ = nullptr; + +// Points to the user-set default value for type T&. +template +T* DefaultValue::address_ = nullptr; + +// Implement this interface to define an action for function type F. +template +class ActionInterface { + public: + typedef typename internal::Function::Result Result; + typedef typename internal::Function::ArgumentTuple ArgumentTuple; + + ActionInterface() {} + virtual ~ActionInterface() {} + + // Performs the action. This method is not const, as in general an + // action can have side effects and be stateful. For example, a + // get-the-next-element-from-the-collection action will need to + // remember the current element. + virtual Result Perform(const ArgumentTuple& args) = 0; + + private: + GTEST_DISALLOW_COPY_AND_ASSIGN_(ActionInterface); +}; + +// An Action is a copyable and IMMUTABLE (except by assignment) +// object that represents an action to be taken when a mock function +// of type F is called. The implementation of Action is just a +// std::shared_ptr to const ActionInterface. Don't inherit from Action! +// You can view an object implementing ActionInterface as a +// concrete action (including its current state), and an Action +// object as a handle to it. +template +class Action { + // Adapter class to allow constructing Action from a legacy ActionInterface. + // New code should create Actions from functors instead. + struct ActionAdapter { + // Adapter must be copyable to satisfy std::function requirements. + ::std::shared_ptr> impl_; + + template + typename internal::Function::Result operator()(Args&&... args) { + return impl_->Perform( + ::std::forward_as_tuple(::std::forward(args)...)); + } + }; + + public: + typedef typename internal::Function::Result Result; + typedef typename internal::Function::ArgumentTuple ArgumentTuple; + + // Constructs a null Action. Needed for storing Action objects in + // STL containers. + Action() {} + + // Construct an Action from a specified callable. + // This cannot take std::function directly, because then Action would not be + // directly constructible from lambda (it would require two conversions). + template , G>::value>::type> + Action(G&& fun) : fun_(::std::forward(fun)) {} // NOLINT + + // Constructs an Action from its implementation. + explicit Action(ActionInterface* impl) + : fun_(ActionAdapter{::std::shared_ptr>(impl)}) {} + + // This constructor allows us to turn an Action object into an + // Action, as long as F's arguments can be implicitly converted + // to Func's and Func's return type can be implicitly converted to F's. + template + explicit Action(const Action& action) : fun_(action.fun_) {} + + // Returns true if and only if this is the DoDefault() action. + bool IsDoDefault() const { return fun_ == nullptr; } + + // Performs the action. Note that this method is const even though + // the corresponding method in ActionInterface is not. The reason + // is that a const Action means that it cannot be re-bound to + // another concrete action, not that the concrete action it binds to + // cannot change state. (Think of the difference between a const + // pointer and a pointer to const.) + Result Perform(ArgumentTuple args) const { + if (IsDoDefault()) { + internal::IllegalDoDefault(__FILE__, __LINE__); + } + return internal::Apply(fun_, ::std::move(args)); + } + + private: + template + friend class Action; + + // fun_ is an empty function if and only if this is the DoDefault() action. + ::std::function fun_; +}; + +// The PolymorphicAction class template makes it easy to implement a +// polymorphic action (i.e. an action that can be used in mock +// functions of than one type, e.g. Return()). +// +// To define a polymorphic action, a user first provides a COPYABLE +// implementation class that has a Perform() method template: +// +// class FooAction { +// public: +// template +// Result Perform(const ArgumentTuple& args) const { +// // Processes the arguments and returns a result, using +// // std::get(args) to get the N-th (0-based) argument in the tuple. +// } +// ... +// }; +// +// Then the user creates the polymorphic action using +// MakePolymorphicAction(object) where object has type FooAction. See +// the definition of Return(void) and SetArgumentPointee(value) for +// complete examples. +template +class PolymorphicAction { + public: + explicit PolymorphicAction(const Impl& impl) : impl_(impl) {} + + template + operator Action() const { + return Action(new MonomorphicImpl(impl_)); + } + + private: + template + class MonomorphicImpl : public ActionInterface { + public: + typedef typename internal::Function::Result Result; + typedef typename internal::Function::ArgumentTuple ArgumentTuple; + + explicit MonomorphicImpl(const Impl& impl) : impl_(impl) {} + + Result Perform(const ArgumentTuple& args) override { + return impl_.template Perform(args); + } + + private: + Impl impl_; + + GTEST_DISALLOW_ASSIGN_(MonomorphicImpl); + }; + + Impl impl_; + + GTEST_DISALLOW_ASSIGN_(PolymorphicAction); +}; + +// Creates an Action from its implementation and returns it. The +// created Action object owns the implementation. +template +Action MakeAction(ActionInterface* impl) { + return Action(impl); +} + +// Creates a polymorphic action from its implementation. This is +// easier to use than the PolymorphicAction constructor as it +// doesn't require you to explicitly write the template argument, e.g. +// +// MakePolymorphicAction(foo); +// vs +// PolymorphicAction(foo); +template +inline PolymorphicAction MakePolymorphicAction(const Impl& impl) { + return PolymorphicAction(impl); +} + +namespace internal { + +// Helper struct to specialize ReturnAction to execute a move instead of a copy +// on return. Useful for move-only types, but could be used on any type. +template +struct ByMoveWrapper { + explicit ByMoveWrapper(T value) : payload(std::move(value)) {} + T payload; +}; + +// Implements the polymorphic Return(x) action, which can be used in +// any function that returns the type of x, regardless of the argument +// types. +// +// Note: The value passed into Return must be converted into +// Function::Result when this action is cast to Action rather than +// when that action is performed. This is important in scenarios like +// +// MOCK_METHOD1(Method, T(U)); +// ... +// { +// Foo foo; +// X x(&foo); +// EXPECT_CALL(mock, Method(_)).WillOnce(Return(x)); +// } +// +// In the example above the variable x holds reference to foo which leaves +// scope and gets destroyed. If copying X just copies a reference to foo, +// that copy will be left with a hanging reference. If conversion to T +// makes a copy of foo, the above code is safe. To support that scenario, we +// need to make sure that the type conversion happens inside the EXPECT_CALL +// statement, and conversion of the result of Return to Action is a +// good place for that. +// +// The real life example of the above scenario happens when an invocation +// of gtl::Container() is passed into Return. +// +template +class ReturnAction { + public: + // Constructs a ReturnAction object from the value to be returned. + // 'value' is passed by value instead of by const reference in order + // to allow Return("string literal") to compile. + explicit ReturnAction(R value) : value_(new R(std::move(value))) {} + + // This template type conversion operator allows Return(x) to be + // used in ANY function that returns x's type. + template + operator Action() const { // NOLINT + // Assert statement belongs here because this is the best place to verify + // conditions on F. It produces the clearest error messages + // in most compilers. + // Impl really belongs in this scope as a local class but can't + // because MSVC produces duplicate symbols in different translation units + // in this case. Until MS fixes that bug we put Impl into the class scope + // and put the typedef both here (for use in assert statement) and + // in the Impl class. But both definitions must be the same. + typedef typename Function::Result Result; + GTEST_COMPILE_ASSERT_( + !std::is_reference::value, + use_ReturnRef_instead_of_Return_to_return_a_reference); + static_assert(!std::is_void::value, + "Can't use Return() on an action expected to return `void`."); + return Action(new Impl(value_)); + } + + private: + // Implements the Return(x) action for a particular function type F. + template + class Impl : public ActionInterface { + public: + typedef typename Function::Result Result; + typedef typename Function::ArgumentTuple ArgumentTuple; + + // The implicit cast is necessary when Result has more than one + // single-argument constructor (e.g. Result is std::vector) and R + // has a type conversion operator template. In that case, value_(value) + // won't compile as the compiler doesn't known which constructor of + // Result to call. ImplicitCast_ forces the compiler to convert R to + // Result without considering explicit constructors, thus resolving the + // ambiguity. value_ is then initialized using its copy constructor. + explicit Impl(const std::shared_ptr& value) + : value_before_cast_(*value), + value_(ImplicitCast_(value_before_cast_)) {} + + Result Perform(const ArgumentTuple&) override { return value_; } + + private: + GTEST_COMPILE_ASSERT_(!std::is_reference::value, + Result_cannot_be_a_reference_type); + // We save the value before casting just in case it is being cast to a + // wrapper type. + R value_before_cast_; + Result value_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(Impl); + }; + + // Partially specialize for ByMoveWrapper. This version of ReturnAction will + // move its contents instead. + template + class Impl, F> : public ActionInterface { + public: + typedef typename Function::Result Result; + typedef typename Function::ArgumentTuple ArgumentTuple; + + explicit Impl(const std::shared_ptr& wrapper) + : performed_(false), wrapper_(wrapper) {} + + Result Perform(const ArgumentTuple&) override { + GTEST_CHECK_(!performed_) + << "A ByMove() action should only be performed once."; + performed_ = true; + return std::move(wrapper_->payload); + } + + private: + bool performed_; + const std::shared_ptr wrapper_; + + GTEST_DISALLOW_ASSIGN_(Impl); + }; + + const std::shared_ptr value_; + + GTEST_DISALLOW_ASSIGN_(ReturnAction); +}; + +// Implements the ReturnNull() action. +class ReturnNullAction { + public: + // Allows ReturnNull() to be used in any pointer-returning function. In C++11 + // this is enforced by returning nullptr, and in non-C++11 by asserting a + // pointer type on compile time. + template + static Result Perform(const ArgumentTuple&) { + return nullptr; + } +}; + +// Implements the Return() action. +class ReturnVoidAction { + public: + // Allows Return() to be used in any void-returning function. + template + static void Perform(const ArgumentTuple&) { + static_assert(std::is_void::value, "Result should be void."); + } +}; + +// Implements the polymorphic ReturnRef(x) action, which can be used +// in any function that returns a reference to the type of x, +// regardless of the argument types. +template +class ReturnRefAction { + public: + // Constructs a ReturnRefAction object from the reference to be returned. + explicit ReturnRefAction(T& ref) : ref_(ref) {} // NOLINT + + // This template type conversion operator allows ReturnRef(x) to be + // used in ANY function that returns a reference to x's type. + template + operator Action() const { + typedef typename Function::Result Result; + // Asserts that the function return type is a reference. This + // catches the user error of using ReturnRef(x) when Return(x) + // should be used, and generates some helpful error message. + GTEST_COMPILE_ASSERT_(std::is_reference::value, + use_Return_instead_of_ReturnRef_to_return_a_value); + return Action(new Impl(ref_)); + } + + private: + // Implements the ReturnRef(x) action for a particular function type F. + template + class Impl : public ActionInterface { + public: + typedef typename Function::Result Result; + typedef typename Function::ArgumentTuple ArgumentTuple; + + explicit Impl(T& ref) : ref_(ref) {} // NOLINT + + Result Perform(const ArgumentTuple&) override { return ref_; } + + private: + T& ref_; + + GTEST_DISALLOW_ASSIGN_(Impl); + }; + + T& ref_; + + GTEST_DISALLOW_ASSIGN_(ReturnRefAction); +}; + +// Implements the polymorphic ReturnRefOfCopy(x) action, which can be +// used in any function that returns a reference to the type of x, +// regardless of the argument types. +template +class ReturnRefOfCopyAction { + public: + // Constructs a ReturnRefOfCopyAction object from the reference to + // be returned. + explicit ReturnRefOfCopyAction(const T& value) : value_(value) {} // NOLINT + + // This template type conversion operator allows ReturnRefOfCopy(x) to be + // used in ANY function that returns a reference to x's type. + template + operator Action() const { + typedef typename Function::Result Result; + // Asserts that the function return type is a reference. This + // catches the user error of using ReturnRefOfCopy(x) when Return(x) + // should be used, and generates some helpful error message. + GTEST_COMPILE_ASSERT_( + std::is_reference::value, + use_Return_instead_of_ReturnRefOfCopy_to_return_a_value); + return Action(new Impl(value_)); + } + + private: + // Implements the ReturnRefOfCopy(x) action for a particular function type F. + template + class Impl : public ActionInterface { + public: + typedef typename Function::Result Result; + typedef typename Function::ArgumentTuple ArgumentTuple; + + explicit Impl(const T& value) : value_(value) {} // NOLINT + + Result Perform(const ArgumentTuple&) override { return value_; } + + private: + T value_; + + GTEST_DISALLOW_ASSIGN_(Impl); + }; + + const T value_; + + GTEST_DISALLOW_ASSIGN_(ReturnRefOfCopyAction); +}; + +// Implements the polymorphic DoDefault() action. +class DoDefaultAction { + public: + // This template type conversion operator allows DoDefault() to be + // used in any function. + template + operator Action() const { return Action(); } // NOLINT +}; + +// Implements the Assign action to set a given pointer referent to a +// particular value. +template +class AssignAction { + public: + AssignAction(T1* ptr, T2 value) : ptr_(ptr), value_(value) {} + + template + void Perform(const ArgumentTuple& /* args */) const { + *ptr_ = value_; + } + + private: + T1* const ptr_; + const T2 value_; + + GTEST_DISALLOW_ASSIGN_(AssignAction); +}; + +#if !GTEST_OS_WINDOWS_MOBILE + +// Implements the SetErrnoAndReturn action to simulate return from +// various system calls and libc functions. +template +class SetErrnoAndReturnAction { + public: + SetErrnoAndReturnAction(int errno_value, T result) + : errno_(errno_value), + result_(result) {} + template + Result Perform(const ArgumentTuple& /* args */) const { + errno = errno_; + return result_; + } + + private: + const int errno_; + const T result_; + + GTEST_DISALLOW_ASSIGN_(SetErrnoAndReturnAction); +}; + +#endif // !GTEST_OS_WINDOWS_MOBILE + +// Implements the SetArgumentPointee(x) action for any function +// whose N-th argument (0-based) is a pointer to x's type. +template +struct SetArgumentPointeeAction { + A value; + + template + void operator()(const Args&... args) const { + *::std::get(std::tie(args...)) = value; + } +}; + +// Implements the Invoke(object_ptr, &Class::Method) action. +template +struct InvokeMethodAction { + Class* const obj_ptr; + const MethodPtr method_ptr; + + template + auto operator()(Args&&... args) const + -> decltype((obj_ptr->*method_ptr)(std::forward(args)...)) { + return (obj_ptr->*method_ptr)(std::forward(args)...); + } +}; + +// Implements the InvokeWithoutArgs(f) action. The template argument +// FunctionImpl is the implementation type of f, which can be either a +// function pointer or a functor. InvokeWithoutArgs(f) can be used as an +// Action as long as f's type is compatible with F. +template +struct InvokeWithoutArgsAction { + FunctionImpl function_impl; + + // Allows InvokeWithoutArgs(f) to be used as any action whose type is + // compatible with f. + template + auto operator()(const Args&...) -> decltype(function_impl()) { + return function_impl(); + } +}; + +// Implements the InvokeWithoutArgs(object_ptr, &Class::Method) action. +template +struct InvokeMethodWithoutArgsAction { + Class* const obj_ptr; + const MethodPtr method_ptr; + + using ReturnType = typename std::result_of::type; + + template + ReturnType operator()(const Args&...) const { + return (obj_ptr->*method_ptr)(); + } +}; + +// Implements the IgnoreResult(action) action. +template +class IgnoreResultAction { + public: + explicit IgnoreResultAction(const A& action) : action_(action) {} + + template + operator Action() const { + // Assert statement belongs here because this is the best place to verify + // conditions on F. It produces the clearest error messages + // in most compilers. + // Impl really belongs in this scope as a local class but can't + // because MSVC produces duplicate symbols in different translation units + // in this case. Until MS fixes that bug we put Impl into the class scope + // and put the typedef both here (for use in assert statement) and + // in the Impl class. But both definitions must be the same. + typedef typename internal::Function::Result Result; + + // Asserts at compile time that F returns void. + static_assert(std::is_void::value, "Result type should be void."); + + return Action(new Impl(action_)); + } + + private: + template + class Impl : public ActionInterface { + public: + typedef typename internal::Function::Result Result; + typedef typename internal::Function::ArgumentTuple ArgumentTuple; + + explicit Impl(const A& action) : action_(action) {} + + void Perform(const ArgumentTuple& args) override { + // Performs the action and ignores its result. + action_.Perform(args); + } + + private: + // Type OriginalFunction is the same as F except that its return + // type is IgnoredValue. + typedef typename internal::Function::MakeResultIgnoredValue + OriginalFunction; + + const Action action_; + + GTEST_DISALLOW_ASSIGN_(Impl); + }; + + const A action_; + + GTEST_DISALLOW_ASSIGN_(IgnoreResultAction); +}; + +template +struct WithArgsAction { + InnerAction action; + + // The inner action could be anything convertible to Action. + // We use the conversion operator to detect the signature of the inner Action. + template + operator Action() const { // NOLINT + Action>::type...)> + converted(action); + + return [converted](Args... args) -> R { + return converted.Perform(std::forward_as_tuple( + std::get(std::forward_as_tuple(std::forward(args)...))...)); + }; + } +}; + +template +struct DoAllAction { + private: + template + std::vector> Convert(IndexSequence) const { + return {std::get(actions)...}; + } + + public: + std::tuple actions; + + template + operator Action() const { // NOLINT + struct Op { + std::vector> converted; + Action last; + R operator()(Args... args) const { + auto tuple_args = std::forward_as_tuple(std::forward(args)...); + for (auto& a : converted) { + a.Perform(tuple_args); + } + return last.Perform(tuple_args); + } + }; + return Op{Convert(MakeIndexSequence()), + std::get(actions)}; + } +}; + +} // namespace internal + +// An Unused object can be implicitly constructed from ANY value. +// This is handy when defining actions that ignore some or all of the +// mock function arguments. For example, given +// +// MOCK_METHOD3(Foo, double(const string& label, double x, double y)); +// MOCK_METHOD3(Bar, double(int index, double x, double y)); +// +// instead of +// +// double DistanceToOriginWithLabel(const string& label, double x, double y) { +// return sqrt(x*x + y*y); +// } +// double DistanceToOriginWithIndex(int index, double x, double y) { +// return sqrt(x*x + y*y); +// } +// ... +// EXPECT_CALL(mock, Foo("abc", _, _)) +// .WillOnce(Invoke(DistanceToOriginWithLabel)); +// EXPECT_CALL(mock, Bar(5, _, _)) +// .WillOnce(Invoke(DistanceToOriginWithIndex)); +// +// you could write +// +// // We can declare any uninteresting argument as Unused. +// double DistanceToOrigin(Unused, double x, double y) { +// return sqrt(x*x + y*y); +// } +// ... +// EXPECT_CALL(mock, Foo("abc", _, _)).WillOnce(Invoke(DistanceToOrigin)); +// EXPECT_CALL(mock, Bar(5, _, _)).WillOnce(Invoke(DistanceToOrigin)); +typedef internal::IgnoredValue Unused; + +// Creates an action that does actions a1, a2, ..., sequentially in +// each invocation. +template +internal::DoAllAction::type...> DoAll( + Action&&... action) { + return {std::forward_as_tuple(std::forward(action)...)}; +} + +// WithArg(an_action) creates an action that passes the k-th +// (0-based) argument of the mock function to an_action and performs +// it. It adapts an action accepting one argument to one that accepts +// multiple arguments. For convenience, we also provide +// WithArgs(an_action) (defined below) as a synonym. +template +internal::WithArgsAction::type, k> +WithArg(InnerAction&& action) { + return {std::forward(action)}; +} + +// WithArgs(an_action) creates an action that passes +// the selected arguments of the mock function to an_action and +// performs it. It serves as an adaptor between actions with +// different argument lists. +template +internal::WithArgsAction::type, k, ks...> +WithArgs(InnerAction&& action) { + return {std::forward(action)}; +} + +// WithoutArgs(inner_action) can be used in a mock function with a +// non-empty argument list to perform inner_action, which takes no +// argument. In other words, it adapts an action accepting no +// argument to one that accepts (and ignores) arguments. +template +internal::WithArgsAction::type> +WithoutArgs(InnerAction&& action) { + return {std::forward(action)}; +} + +// Creates an action that returns 'value'. 'value' is passed by value +// instead of const reference - otherwise Return("string literal") +// will trigger a compiler error about using array as initializer. +template +internal::ReturnAction Return(R value) { + return internal::ReturnAction(std::move(value)); +} + +// Creates an action that returns NULL. +inline PolymorphicAction ReturnNull() { + return MakePolymorphicAction(internal::ReturnNullAction()); +} + +// Creates an action that returns from a void function. +inline PolymorphicAction Return() { + return MakePolymorphicAction(internal::ReturnVoidAction()); +} + +// Creates an action that returns the reference to a variable. +template +inline internal::ReturnRefAction ReturnRef(R& x) { // NOLINT + return internal::ReturnRefAction(x); +} + +// Creates an action that returns the reference to a copy of the +// argument. The copy is created when the action is constructed and +// lives as long as the action. +template +inline internal::ReturnRefOfCopyAction ReturnRefOfCopy(const R& x) { + return internal::ReturnRefOfCopyAction(x); +} + +// Modifies the parent action (a Return() action) to perform a move of the +// argument instead of a copy. +// Return(ByMove()) actions can only be executed once and will assert this +// invariant. +template +internal::ByMoveWrapper ByMove(R x) { + return internal::ByMoveWrapper(std::move(x)); +} + +// Creates an action that does the default action for the give mock function. +inline internal::DoDefaultAction DoDefault() { + return internal::DoDefaultAction(); +} + +// Creates an action that sets the variable pointed by the N-th +// (0-based) function argument to 'value'. +template +internal::SetArgumentPointeeAction SetArgPointee(T x) { + return {std::move(x)}; +} + +// The following version is DEPRECATED. +template +internal::SetArgumentPointeeAction SetArgumentPointee(T x) { + return {std::move(x)}; +} + +// Creates an action that sets a pointer referent to a given value. +template +PolymorphicAction > Assign(T1* ptr, T2 val) { + return MakePolymorphicAction(internal::AssignAction(ptr, val)); +} + +#if !GTEST_OS_WINDOWS_MOBILE + +// Creates an action that sets errno and returns the appropriate error. +template +PolymorphicAction > +SetErrnoAndReturn(int errval, T result) { + return MakePolymorphicAction( + internal::SetErrnoAndReturnAction(errval, result)); +} + +#endif // !GTEST_OS_WINDOWS_MOBILE + +// Various overloads for Invoke(). + +// Legacy function. +// Actions can now be implicitly constructed from callables. No need to create +// wrapper objects. +// This function exists for backwards compatibility. +template +typename std::decay::type Invoke(FunctionImpl&& function_impl) { + return std::forward(function_impl); +} + +// Creates an action that invokes the given method on the given object +// with the mock function's arguments. +template +internal::InvokeMethodAction Invoke(Class* obj_ptr, + MethodPtr method_ptr) { + return {obj_ptr, method_ptr}; +} + +// Creates an action that invokes 'function_impl' with no argument. +template +internal::InvokeWithoutArgsAction::type> +InvokeWithoutArgs(FunctionImpl function_impl) { + return {std::move(function_impl)}; +} + +// Creates an action that invokes the given method on the given object +// with no argument. +template +internal::InvokeMethodWithoutArgsAction InvokeWithoutArgs( + Class* obj_ptr, MethodPtr method_ptr) { + return {obj_ptr, method_ptr}; +} + +// Creates an action that performs an_action and throws away its +// result. In other words, it changes the return type of an_action to +// void. an_action MUST NOT return void, or the code won't compile. +template +inline internal::IgnoreResultAction IgnoreResult(const A& an_action) { + return internal::IgnoreResultAction(an_action); +} + +// Creates a reference wrapper for the given L-value. If necessary, +// you can explicitly specify the type of the reference. For example, +// suppose 'derived' is an object of type Derived, ByRef(derived) +// would wrap a Derived&. If you want to wrap a const Base& instead, +// where Base is a base class of Derived, just write: +// +// ByRef(derived) +// +// N.B. ByRef is redundant with std::ref, std::cref and std::reference_wrapper. +// However, it may still be used for consistency with ByMove(). +template +inline ::std::reference_wrapper ByRef(T& l_value) { // NOLINT + return ::std::reference_wrapper(l_value); +} + +} // namespace testing + +#ifdef _MSC_VER +# pragma warning(pop) +#endif + + +#endif // GMOCK_INCLUDE_GMOCK_GMOCK_ACTIONS_H_ diff --git a/build/_deps/googletest-src/googlemock/include/gmock/gmock-cardinalities.h b/build/_deps/googletest-src/googlemock/include/gmock/gmock-cardinalities.h new file mode 100644 index 0000000000000000000000000000000000000000..46e01e102d5841a5ef8ee18d681d0393ac051bbf --- /dev/null +++ b/build/_deps/googletest-src/googlemock/include/gmock/gmock-cardinalities.h @@ -0,0 +1,157 @@ +// Copyright 2007, Google Inc. +// 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 Google Inc. 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 +// OWNER 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. + + +// Google Mock - a framework for writing C++ mock classes. +// +// This file implements some commonly used cardinalities. More +// cardinalities can be defined by the user implementing the +// CardinalityInterface interface if necessary. + +// GOOGLETEST_CM0002 DO NOT DELETE + +#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_CARDINALITIES_H_ +#define GMOCK_INCLUDE_GMOCK_GMOCK_CARDINALITIES_H_ + +#include +#include +#include // NOLINT +#include "gmock/internal/gmock-port.h" +#include "gtest/gtest.h" + +GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \ +/* class A needs to have dll-interface to be used by clients of class B */) + +namespace testing { + +// To implement a cardinality Foo, define: +// 1. a class FooCardinality that implements the +// CardinalityInterface interface, and +// 2. a factory function that creates a Cardinality object from a +// const FooCardinality*. +// +// The two-level delegation design follows that of Matcher, providing +// consistency for extension developers. It also eases ownership +// management as Cardinality objects can now be copied like plain values. + +// The implementation of a cardinality. +class CardinalityInterface { + public: + virtual ~CardinalityInterface() {} + + // Conservative estimate on the lower/upper bound of the number of + // calls allowed. + virtual int ConservativeLowerBound() const { return 0; } + virtual int ConservativeUpperBound() const { return INT_MAX; } + + // Returns true if and only if call_count calls will satisfy this + // cardinality. + virtual bool IsSatisfiedByCallCount(int call_count) const = 0; + + // Returns true if and only if call_count calls will saturate this + // cardinality. + virtual bool IsSaturatedByCallCount(int call_count) const = 0; + + // Describes self to an ostream. + virtual void DescribeTo(::std::ostream* os) const = 0; +}; + +// A Cardinality is a copyable and IMMUTABLE (except by assignment) +// object that specifies how many times a mock function is expected to +// be called. The implementation of Cardinality is just a std::shared_ptr +// to const CardinalityInterface. Don't inherit from Cardinality! +class GTEST_API_ Cardinality { + public: + // Constructs a null cardinality. Needed for storing Cardinality + // objects in STL containers. + Cardinality() {} + + // Constructs a Cardinality from its implementation. + explicit Cardinality(const CardinalityInterface* impl) : impl_(impl) {} + + // Conservative estimate on the lower/upper bound of the number of + // calls allowed. + int ConservativeLowerBound() const { return impl_->ConservativeLowerBound(); } + int ConservativeUpperBound() const { return impl_->ConservativeUpperBound(); } + + // Returns true if and only if call_count calls will satisfy this + // cardinality. + bool IsSatisfiedByCallCount(int call_count) const { + return impl_->IsSatisfiedByCallCount(call_count); + } + + // Returns true if and only if call_count calls will saturate this + // cardinality. + bool IsSaturatedByCallCount(int call_count) const { + return impl_->IsSaturatedByCallCount(call_count); + } + + // Returns true if and only if call_count calls will over-saturate this + // cardinality, i.e. exceed the maximum number of allowed calls. + bool IsOverSaturatedByCallCount(int call_count) const { + return impl_->IsSaturatedByCallCount(call_count) && + !impl_->IsSatisfiedByCallCount(call_count); + } + + // Describes self to an ostream + void DescribeTo(::std::ostream* os) const { impl_->DescribeTo(os); } + + // Describes the given actual call count to an ostream. + static void DescribeActualCallCountTo(int actual_call_count, + ::std::ostream* os); + + private: + std::shared_ptr impl_; +}; + +// Creates a cardinality that allows at least n calls. +GTEST_API_ Cardinality AtLeast(int n); + +// Creates a cardinality that allows at most n calls. +GTEST_API_ Cardinality AtMost(int n); + +// Creates a cardinality that allows any number of calls. +GTEST_API_ Cardinality AnyNumber(); + +// Creates a cardinality that allows between min and max calls. +GTEST_API_ Cardinality Between(int min, int max); + +// Creates a cardinality that allows exactly n calls. +GTEST_API_ Cardinality Exactly(int n); + +// Creates a cardinality from its implementation. +inline Cardinality MakeCardinality(const CardinalityInterface* c) { + return Cardinality(c); +} + +} // namespace testing + +GTEST_DISABLE_MSC_WARNINGS_POP_() // 4251 + +#endif // GMOCK_INCLUDE_GMOCK_GMOCK_CARDINALITIES_H_ diff --git a/build/_deps/googletest-src/googlemock/include/gmock/gmock-function-mocker.h b/build/_deps/googletest-src/googlemock/include/gmock/gmock-function-mocker.h new file mode 100644 index 0000000000000000000000000000000000000000..cc1535c806bf4f0080e87dc716fe666fc1e4c840 --- /dev/null +++ b/build/_deps/googletest-src/googlemock/include/gmock/gmock-function-mocker.h @@ -0,0 +1,253 @@ +// Copyright 2007, Google Inc. +// 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 Google Inc. 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 +// OWNER 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. + +// Google Mock - a framework for writing C++ mock classes. +// +// This file implements MOCK_METHOD. + +// GOOGLETEST_CM0002 DO NOT DELETE + +#ifndef THIRD_PARTY_GOOGLETEST_GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_FUNCTION_MOCKER_H_ // NOLINT +#define THIRD_PARTY_GOOGLETEST_GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_FUNCTION_MOCKER_H_ // NOLINT + +#include "gmock/gmock-generated-function-mockers.h" // NOLINT +#include "gmock/internal/gmock-pp.h" + +#define MOCK_METHOD(...) \ + GMOCK_PP_VARIADIC_CALL(GMOCK_INTERNAL_MOCK_METHOD_ARG_, __VA_ARGS__) + +#define GMOCK_INTERNAL_MOCK_METHOD_ARG_1(...) \ + GMOCK_INTERNAL_WRONG_ARITY(__VA_ARGS__) + +#define GMOCK_INTERNAL_MOCK_METHOD_ARG_2(...) \ + GMOCK_INTERNAL_WRONG_ARITY(__VA_ARGS__) + +#define GMOCK_INTERNAL_MOCK_METHOD_ARG_3(_Ret, _MethodName, _Args) \ + GMOCK_INTERNAL_MOCK_METHOD_ARG_4(_Ret, _MethodName, _Args, ()) + +#define GMOCK_INTERNAL_MOCK_METHOD_ARG_4(_Ret, _MethodName, _Args, _Spec) \ + GMOCK_INTERNAL_ASSERT_PARENTHESIS(_Args); \ + GMOCK_INTERNAL_ASSERT_PARENTHESIS(_Spec); \ + GMOCK_INTERNAL_ASSERT_VALID_SIGNATURE( \ + GMOCK_PP_NARG0 _Args, GMOCK_INTERNAL_SIGNATURE(_Ret, _Args)); \ + GMOCK_INTERNAL_ASSERT_VALID_SPEC(_Spec) \ + GMOCK_INTERNAL_MOCK_METHOD_IMPL( \ + GMOCK_PP_NARG0 _Args, _MethodName, GMOCK_INTERNAL_HAS_CONST(_Spec), \ + GMOCK_INTERNAL_HAS_OVERRIDE(_Spec), GMOCK_INTERNAL_HAS_FINAL(_Spec), \ + GMOCK_INTERNAL_HAS_NOEXCEPT(_Spec), GMOCK_INTERNAL_GET_CALLTYPE(_Spec), \ + (GMOCK_INTERNAL_SIGNATURE(_Ret, _Args))) + +#define GMOCK_INTERNAL_MOCK_METHOD_ARG_5(...) \ + GMOCK_INTERNAL_WRONG_ARITY(__VA_ARGS__) + +#define GMOCK_INTERNAL_MOCK_METHOD_ARG_6(...) \ + GMOCK_INTERNAL_WRONG_ARITY(__VA_ARGS__) + +#define GMOCK_INTERNAL_MOCK_METHOD_ARG_7(...) \ + GMOCK_INTERNAL_WRONG_ARITY(__VA_ARGS__) + +#define GMOCK_INTERNAL_WRONG_ARITY(...) \ + static_assert( \ + false, \ + "MOCK_METHOD must be called with 3 or 4 arguments. _Ret, " \ + "_MethodName, _Args and optionally _Spec. _Args and _Spec must be " \ + "enclosed in parentheses. If _Ret is a type with unprotected commas, " \ + "it must also be enclosed in parentheses.") + +#define GMOCK_INTERNAL_ASSERT_PARENTHESIS(_Tuple) \ + static_assert( \ + GMOCK_PP_IS_ENCLOSED_PARENS(_Tuple), \ + GMOCK_PP_STRINGIZE(_Tuple) " should be enclosed in parentheses.") + +#define GMOCK_INTERNAL_ASSERT_VALID_SIGNATURE(_N, ...) \ + static_assert( \ + std::is_function<__VA_ARGS__>::value, \ + "Signature must be a function type, maybe return type contains " \ + "unprotected comma."); \ + static_assert( \ + ::testing::tuple_size::ArgumentTuple>::value == _N, \ + "This method does not take " GMOCK_PP_STRINGIZE( \ + _N) " arguments. Parenthesize all types with unproctected commas.") + +#define GMOCK_INTERNAL_ASSERT_VALID_SPEC(_Spec) \ + GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_ASSERT_VALID_SPEC_ELEMENT, ~, _Spec) + +#define GMOCK_INTERNAL_MOCK_METHOD_IMPL(_N, _MethodName, _Constness, \ + _Override, _Final, _Noexcept, \ + _CallType, _Signature) \ + typename ::testing::internal::Function::Result \ + GMOCK_INTERNAL_EXPAND(_CallType) \ + _MethodName(GMOCK_PP_REPEAT(GMOCK_INTERNAL_PARAMETER, _Signature, _N)) \ + GMOCK_PP_IF(_Constness, const, ) GMOCK_PP_IF(_Noexcept, noexcept, ) \ + GMOCK_PP_IF(_Override, override, ) \ + GMOCK_PP_IF(_Final, final, ) { \ + GMOCK_MOCKER_(_N, _Constness, _MethodName) \ + .SetOwnerAndName(this, #_MethodName); \ + return GMOCK_MOCKER_(_N, _Constness, _MethodName) \ + .Invoke(GMOCK_PP_REPEAT(GMOCK_INTERNAL_FORWARD_ARG, _Signature, _N)); \ + } \ + ::testing::MockSpec gmock_##_MethodName( \ + GMOCK_PP_REPEAT(GMOCK_INTERNAL_MATCHER_PARAMETER, _Signature, _N)) \ + GMOCK_PP_IF(_Constness, const, ) { \ + GMOCK_MOCKER_(_N, _Constness, _MethodName).RegisterOwner(this); \ + return GMOCK_MOCKER_(_N, _Constness, _MethodName) \ + .With(GMOCK_PP_REPEAT(GMOCK_INTERNAL_MATCHER_ARGUMENT, , _N)); \ + } \ + ::testing::MockSpec gmock_##_MethodName( \ + const ::testing::internal::WithoutMatchers&, \ + GMOCK_PP_IF(_Constness, const, )::testing::internal::Function< \ + GMOCK_PP_REMOVE_PARENS(_Signature)>*) \ + const GMOCK_PP_IF(_Noexcept, noexcept, ) { \ + return GMOCK_PP_CAT(::testing::internal::AdjustConstness_, \ + GMOCK_PP_IF(_Constness, const, ))(this) \ + ->gmock_##_MethodName(GMOCK_PP_REPEAT( \ + GMOCK_INTERNAL_A_MATCHER_ARGUMENT, _Signature, _N)); \ + } \ + mutable ::testing::FunctionMocker \ + GMOCK_MOCKER_(_N, _Constness, _MethodName) + +#define GMOCK_INTERNAL_EXPAND(...) __VA_ARGS__ + +// Five Valid modifiers. +#define GMOCK_INTERNAL_HAS_CONST(_Tuple) \ + GMOCK_PP_HAS_COMMA(GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_DETECT_CONST, ~, _Tuple)) + +#define GMOCK_INTERNAL_HAS_OVERRIDE(_Tuple) \ + GMOCK_PP_HAS_COMMA( \ + GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_DETECT_OVERRIDE, ~, _Tuple)) + +#define GMOCK_INTERNAL_HAS_FINAL(_Tuple) \ + GMOCK_PP_HAS_COMMA(GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_DETECT_FINAL, ~, _Tuple)) + +#define GMOCK_INTERNAL_HAS_NOEXCEPT(_Tuple) \ + GMOCK_PP_HAS_COMMA( \ + GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_DETECT_NOEXCEPT, ~, _Tuple)) + +#define GMOCK_INTERNAL_GET_CALLTYPE(_Tuple) \ + GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_GET_CALLTYPE_IMPL, ~, _Tuple) + +#define GMOCK_INTERNAL_ASSERT_VALID_SPEC_ELEMENT(_i, _, _elem) \ + static_assert( \ + (GMOCK_PP_HAS_COMMA(GMOCK_INTERNAL_DETECT_CONST(_i, _, _elem)) + \ + GMOCK_PP_HAS_COMMA(GMOCK_INTERNAL_DETECT_OVERRIDE(_i, _, _elem)) + \ + GMOCK_PP_HAS_COMMA(GMOCK_INTERNAL_DETECT_FINAL(_i, _, _elem)) + \ + GMOCK_PP_HAS_COMMA(GMOCK_INTERNAL_DETECT_NOEXCEPT(_i, _, _elem)) + \ + GMOCK_INTERNAL_IS_CALLTYPE(_elem)) == 1, \ + GMOCK_PP_STRINGIZE( \ + _elem) " cannot be recognized as a valid specification modifier."); + +// Modifiers implementation. +#define GMOCK_INTERNAL_DETECT_CONST(_i, _, _elem) \ + GMOCK_PP_CAT(GMOCK_INTERNAL_DETECT_CONST_I_, _elem) + +#define GMOCK_INTERNAL_DETECT_CONST_I_const , + +#define GMOCK_INTERNAL_DETECT_OVERRIDE(_i, _, _elem) \ + GMOCK_PP_CAT(GMOCK_INTERNAL_DETECT_OVERRIDE_I_, _elem) + +#define GMOCK_INTERNAL_DETECT_OVERRIDE_I_override , + +#define GMOCK_INTERNAL_DETECT_FINAL(_i, _, _elem) \ + GMOCK_PP_CAT(GMOCK_INTERNAL_DETECT_FINAL_I_, _elem) + +#define GMOCK_INTERNAL_DETECT_FINAL_I_final , + +// TODO(iserna): Maybe noexcept should accept an argument here as well. +#define GMOCK_INTERNAL_DETECT_NOEXCEPT(_i, _, _elem) \ + GMOCK_PP_CAT(GMOCK_INTERNAL_DETECT_NOEXCEPT_I_, _elem) + +#define GMOCK_INTERNAL_DETECT_NOEXCEPT_I_noexcept , + +#define GMOCK_INTERNAL_GET_CALLTYPE_IMPL(_i, _, _elem) \ + GMOCK_PP_IF(GMOCK_INTERNAL_IS_CALLTYPE(_elem), \ + GMOCK_INTERNAL_GET_VALUE_CALLTYPE, GMOCK_PP_EMPTY) \ + (_elem) + +// TODO(iserna): GMOCK_INTERNAL_IS_CALLTYPE and +// GMOCK_INTERNAL_GET_VALUE_CALLTYPE needed more expansions to work on windows +// maybe they can be simplified somehow. +#define GMOCK_INTERNAL_IS_CALLTYPE(_arg) \ + GMOCK_INTERNAL_IS_CALLTYPE_I( \ + GMOCK_PP_CAT(GMOCK_INTERNAL_IS_CALLTYPE_HELPER_, _arg)) +#define GMOCK_INTERNAL_IS_CALLTYPE_I(_arg) GMOCK_PP_IS_ENCLOSED_PARENS(_arg) + +#define GMOCK_INTERNAL_GET_VALUE_CALLTYPE(_arg) \ + GMOCK_INTERNAL_GET_VALUE_CALLTYPE_I( \ + GMOCK_PP_CAT(GMOCK_INTERNAL_IS_CALLTYPE_HELPER_, _arg)) +#define GMOCK_INTERNAL_GET_VALUE_CALLTYPE_I(_arg) \ + GMOCK_PP_CAT(GMOCK_PP_IDENTITY, _arg) + +#define GMOCK_INTERNAL_IS_CALLTYPE_HELPER_Calltype + +#define GMOCK_INTERNAL_SIGNATURE(_Ret, _Args) \ + GMOCK_PP_IF(GMOCK_PP_IS_BEGIN_PARENS(_Ret), GMOCK_PP_REMOVE_PARENS, \ + GMOCK_PP_IDENTITY) \ + (_Ret)(GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_GET_TYPE, _, _Args)) + +#define GMOCK_INTERNAL_GET_TYPE(_i, _, _elem) \ + GMOCK_PP_COMMA_IF(_i) \ + GMOCK_PP_IF(GMOCK_PP_IS_BEGIN_PARENS(_elem), GMOCK_PP_REMOVE_PARENS, \ + GMOCK_PP_IDENTITY) \ + (_elem) + +#define GMOCK_INTERNAL_PARAMETER(_i, _Signature, _) \ + GMOCK_PP_COMMA_IF(_i) \ + GMOCK_INTERNAL_ARG_O(typename, GMOCK_PP_INC(_i), \ + GMOCK_PP_REMOVE_PARENS(_Signature)) \ + gmock_a##_i + +#define GMOCK_INTERNAL_FORWARD_ARG(_i, _Signature, _) \ + GMOCK_PP_COMMA_IF(_i) \ + ::std::forward( \ + gmock_a##_i) + +#define GMOCK_INTERNAL_MATCHER_PARAMETER(_i, _Signature, _) \ + GMOCK_PP_COMMA_IF(_i) \ + GMOCK_INTERNAL_MATCHER_O(typename, GMOCK_PP_INC(_i), \ + GMOCK_PP_REMOVE_PARENS(_Signature)) \ + gmock_a##_i + +#define GMOCK_INTERNAL_MATCHER_ARGUMENT(_i, _1, _2) \ + GMOCK_PP_COMMA_IF(_i) \ + gmock_a##_i + +#define GMOCK_INTERNAL_A_MATCHER_ARGUMENT(_i, _Signature, _) \ + GMOCK_PP_COMMA_IF(_i) \ + ::testing::A() + +#define GMOCK_INTERNAL_ARG_O(_tn, _i, ...) GMOCK_ARG_(_tn, _i, __VA_ARGS__) + +#define GMOCK_INTERNAL_MATCHER_O(_tn, _i, ...) \ + GMOCK_MATCHER_(_tn, _i, __VA_ARGS__) + +#endif // THIRD_PARTY_GOOGLETEST_GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_FUNCTION_MOCKER_H_ diff --git a/build/_deps/googletest-src/googlemock/include/gmock/gmock-generated-actions.h b/build/_deps/googletest-src/googlemock/include/gmock/gmock-generated-actions.h new file mode 100644 index 0000000000000000000000000000000000000000..981af78ff9a1711585bd17a2785f2509f385f7ca --- /dev/null +++ b/build/_deps/googletest-src/googlemock/include/gmock/gmock-generated-actions.h @@ -0,0 +1,1884 @@ +// This file was GENERATED by command: +// pump.py gmock-generated-actions.h.pump +// DO NOT EDIT BY HAND!!! + +// Copyright 2007, Google Inc. +// 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 Google Inc. 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 +// OWNER 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. + + +// Google Mock - a framework for writing C++ mock classes. +// +// This file implements some commonly used variadic actions. + +// GOOGLETEST_CM0002 DO NOT DELETE + +#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_ACTIONS_H_ +#define GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_ACTIONS_H_ + +#include +#include + +#include "gmock/gmock-actions.h" +#include "gmock/internal/gmock-port.h" + +namespace testing { +namespace internal { + +// A macro from the ACTION* family (defined later in this file) +// defines an action that can be used in a mock function. Typically, +// these actions only care about a subset of the arguments of the mock +// function. For example, if such an action only uses the second +// argument, it can be used in any mock function that takes >= 2 +// arguments where the type of the second argument is compatible. +// +// Therefore, the action implementation must be prepared to take more +// arguments than it needs. The ExcessiveArg type is used to +// represent those excessive arguments. In order to keep the compiler +// error messages tractable, we define it in the testing namespace +// instead of testing::internal. However, this is an INTERNAL TYPE +// and subject to change without notice, so a user MUST NOT USE THIS +// TYPE DIRECTLY. +struct ExcessiveArg {}; + +// A helper class needed for implementing the ACTION* macros. +template +class ActionHelper { + public: + static Result Perform(Impl* impl, const ::std::tuple<>& args) { + return impl->template gmock_PerformImpl<>(args, ExcessiveArg(), + ExcessiveArg(), ExcessiveArg(), ExcessiveArg(), ExcessiveArg(), + ExcessiveArg(), ExcessiveArg(), ExcessiveArg(), ExcessiveArg(), + ExcessiveArg()); + } + + template + static Result Perform(Impl* impl, const ::std::tuple& args) { + return impl->template gmock_PerformImpl(args, std::get<0>(args), + ExcessiveArg(), ExcessiveArg(), ExcessiveArg(), ExcessiveArg(), + ExcessiveArg(), ExcessiveArg(), ExcessiveArg(), ExcessiveArg(), + ExcessiveArg()); + } + + template + static Result Perform(Impl* impl, const ::std::tuple& args) { + return impl->template gmock_PerformImpl(args, std::get<0>(args), + std::get<1>(args), ExcessiveArg(), ExcessiveArg(), ExcessiveArg(), + ExcessiveArg(), ExcessiveArg(), ExcessiveArg(), ExcessiveArg(), + ExcessiveArg()); + } + + template + static Result Perform(Impl* impl, const ::std::tuple& args) { + return impl->template gmock_PerformImpl(args, + std::get<0>(args), std::get<1>(args), std::get<2>(args), + ExcessiveArg(), ExcessiveArg(), ExcessiveArg(), ExcessiveArg(), + ExcessiveArg(), ExcessiveArg(), ExcessiveArg()); + } + + template + static Result Perform(Impl* impl, const ::std::tuple& args) { + return impl->template gmock_PerformImpl(args, + std::get<0>(args), std::get<1>(args), std::get<2>(args), + std::get<3>(args), ExcessiveArg(), ExcessiveArg(), ExcessiveArg(), + ExcessiveArg(), ExcessiveArg(), ExcessiveArg()); + } + + template + static Result Perform(Impl* impl, const ::std::tuple& args) { + return impl->template gmock_PerformImpl(args, + std::get<0>(args), std::get<1>(args), std::get<2>(args), + std::get<3>(args), std::get<4>(args), ExcessiveArg(), ExcessiveArg(), + ExcessiveArg(), ExcessiveArg(), ExcessiveArg()); + } + + template + static Result Perform(Impl* impl, const ::std::tuple& args) { + return impl->template gmock_PerformImpl(args, + std::get<0>(args), std::get<1>(args), std::get<2>(args), + std::get<3>(args), std::get<4>(args), std::get<5>(args), + ExcessiveArg(), ExcessiveArg(), ExcessiveArg(), ExcessiveArg()); + } + + template + static Result Perform(Impl* impl, const ::std::tuple& args) { + return impl->template gmock_PerformImpl(args, + std::get<0>(args), std::get<1>(args), std::get<2>(args), + std::get<3>(args), std::get<4>(args), std::get<5>(args), + std::get<6>(args), ExcessiveArg(), ExcessiveArg(), ExcessiveArg()); + } + + template + static Result Perform(Impl* impl, const ::std::tuple& args) { + return impl->template gmock_PerformImpl(args, std::get<0>(args), std::get<1>(args), std::get<2>(args), + std::get<3>(args), std::get<4>(args), std::get<5>(args), + std::get<6>(args), std::get<7>(args), ExcessiveArg(), ExcessiveArg()); + } + + template + static Result Perform(Impl* impl, const ::std::tuple& args) { + return impl->template gmock_PerformImpl(args, std::get<0>(args), std::get<1>(args), std::get<2>(args), + std::get<3>(args), std::get<4>(args), std::get<5>(args), + std::get<6>(args), std::get<7>(args), std::get<8>(args), + ExcessiveArg()); + } + + template + static Result Perform(Impl* impl, const ::std::tuple& args) { + return impl->template gmock_PerformImpl(args, std::get<0>(args), std::get<1>(args), std::get<2>(args), + std::get<3>(args), std::get<4>(args), std::get<5>(args), + std::get<6>(args), std::get<7>(args), std::get<8>(args), + std::get<9>(args)); + } +}; + +} // namespace internal +} // namespace testing + +// The ACTION* family of macros can be used in a namespace scope to +// define custom actions easily. The syntax: +// +// ACTION(name) { statements; } +// +// will define an action with the given name that executes the +// statements. The value returned by the statements will be used as +// the return value of the action. Inside the statements, you can +// refer to the K-th (0-based) argument of the mock function by +// 'argK', and refer to its type by 'argK_type'. For example: +// +// ACTION(IncrementArg1) { +// arg1_type temp = arg1; +// return ++(*temp); +// } +// +// allows you to write +// +// ...WillOnce(IncrementArg1()); +// +// You can also refer to the entire argument tuple and its type by +// 'args' and 'args_type', and refer to the mock function type and its +// return type by 'function_type' and 'return_type'. +// +// Note that you don't need to specify the types of the mock function +// arguments. However rest assured that your code is still type-safe: +// you'll get a compiler error if *arg1 doesn't support the ++ +// operator, or if the type of ++(*arg1) isn't compatible with the +// mock function's return type, for example. +// +// Sometimes you'll want to parameterize the action. For that you can use +// another macro: +// +// ACTION_P(name, param_name) { statements; } +// +// For example: +// +// ACTION_P(Add, n) { return arg0 + n; } +// +// will allow you to write: +// +// ...WillOnce(Add(5)); +// +// Note that you don't need to provide the type of the parameter +// either. If you need to reference the type of a parameter named +// 'foo', you can write 'foo_type'. For example, in the body of +// ACTION_P(Add, n) above, you can write 'n_type' to refer to the type +// of 'n'. +// +// We also provide ACTION_P2, ACTION_P3, ..., up to ACTION_P10 to support +// multi-parameter actions. +// +// For the purpose of typing, you can view +// +// ACTION_Pk(Foo, p1, ..., pk) { ... } +// +// as shorthand for +// +// template +// FooActionPk Foo(p1_type p1, ..., pk_type pk) { ... } +// +// In particular, you can provide the template type arguments +// explicitly when invoking Foo(), as in Foo(5, false); +// although usually you can rely on the compiler to infer the types +// for you automatically. You can assign the result of expression +// Foo(p1, ..., pk) to a variable of type FooActionPk. This can be useful when composing actions. +// +// You can also overload actions with different numbers of parameters: +// +// ACTION_P(Plus, a) { ... } +// ACTION_P2(Plus, a, b) { ... } +// +// While it's tempting to always use the ACTION* macros when defining +// a new action, you should also consider implementing ActionInterface +// or using MakePolymorphicAction() instead, especially if you need to +// use the action a lot. While these approaches require more work, +// they give you more control on the types of the mock function +// arguments and the action parameters, which in general leads to +// better compiler error messages that pay off in the long run. They +// also allow overloading actions based on parameter types (as opposed +// to just based on the number of parameters). +// +// CAVEAT: +// +// ACTION*() can only be used in a namespace scope as templates cannot be +// declared inside of a local class. +// Users can, however, define any local functors (e.g. a lambda) that +// can be used as actions. +// +// MORE INFORMATION: +// +// To learn more about using these macros, please search for 'ACTION' on +// https://github.com/google/googletest/blob/master/googlemock/docs/cook_book.md + +// An internal macro needed for implementing ACTION*(). +#define GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_\ + const args_type& args GTEST_ATTRIBUTE_UNUSED_, \ + const arg0_type& arg0 GTEST_ATTRIBUTE_UNUSED_, \ + const arg1_type& arg1 GTEST_ATTRIBUTE_UNUSED_, \ + const arg2_type& arg2 GTEST_ATTRIBUTE_UNUSED_, \ + const arg3_type& arg3 GTEST_ATTRIBUTE_UNUSED_, \ + const arg4_type& arg4 GTEST_ATTRIBUTE_UNUSED_, \ + const arg5_type& arg5 GTEST_ATTRIBUTE_UNUSED_, \ + const arg6_type& arg6 GTEST_ATTRIBUTE_UNUSED_, \ + const arg7_type& arg7 GTEST_ATTRIBUTE_UNUSED_, \ + const arg8_type& arg8 GTEST_ATTRIBUTE_UNUSED_, \ + const arg9_type& arg9 GTEST_ATTRIBUTE_UNUSED_ + +// Sometimes you want to give an action explicit template parameters +// that cannot be inferred from its value parameters. ACTION() and +// ACTION_P*() don't support that. ACTION_TEMPLATE() remedies that +// and can be viewed as an extension to ACTION() and ACTION_P*(). +// +// The syntax: +// +// ACTION_TEMPLATE(ActionName, +// HAS_m_TEMPLATE_PARAMS(kind1, name1, ..., kind_m, name_m), +// AND_n_VALUE_PARAMS(p1, ..., p_n)) { statements; } +// +// defines an action template that takes m explicit template +// parameters and n value parameters. name_i is the name of the i-th +// template parameter, and kind_i specifies whether it's a typename, +// an integral constant, or a template. p_i is the name of the i-th +// value parameter. +// +// Example: +// +// // DuplicateArg(output) converts the k-th argument of the mock +// // function to type T and copies it to *output. +// ACTION_TEMPLATE(DuplicateArg, +// HAS_2_TEMPLATE_PARAMS(int, k, typename, T), +// AND_1_VALUE_PARAMS(output)) { +// *output = T(::std::get(args)); +// } +// ... +// int n; +// EXPECT_CALL(mock, Foo(_, _)) +// .WillOnce(DuplicateArg<1, unsigned char>(&n)); +// +// To create an instance of an action template, write: +// +// ActionName(v1, ..., v_n) +// +// where the ts are the template arguments and the vs are the value +// arguments. The value argument types are inferred by the compiler. +// If you want to explicitly specify the value argument types, you can +// provide additional template arguments: +// +// ActionName(v1, ..., v_n) +// +// where u_i is the desired type of v_i. +// +// ACTION_TEMPLATE and ACTION/ACTION_P* can be overloaded on the +// number of value parameters, but not on the number of template +// parameters. Without the restriction, the meaning of the following +// is unclear: +// +// OverloadedAction(x); +// +// Are we using a single-template-parameter action where 'bool' refers +// to the type of x, or are we using a two-template-parameter action +// where the compiler is asked to infer the type of x? +// +// Implementation notes: +// +// GMOCK_INTERNAL_*_HAS_m_TEMPLATE_PARAMS and +// GMOCK_INTERNAL_*_AND_n_VALUE_PARAMS are internal macros for +// implementing ACTION_TEMPLATE. The main trick we use is to create +// new macro invocations when expanding a macro. For example, we have +// +// #define ACTION_TEMPLATE(name, template_params, value_params) +// ... GMOCK_INTERNAL_DECL_##template_params ... +// +// which causes ACTION_TEMPLATE(..., HAS_1_TEMPLATE_PARAMS(typename, T), ...) +// to expand to +// +// ... GMOCK_INTERNAL_DECL_HAS_1_TEMPLATE_PARAMS(typename, T) ... +// +// Since GMOCK_INTERNAL_DECL_HAS_1_TEMPLATE_PARAMS is a macro, the +// preprocessor will continue to expand it to +// +// ... typename T ... +// +// This technique conforms to the C++ standard and is portable. It +// allows us to implement action templates using O(N) code, where N is +// the maximum number of template/value parameters supported. Without +// using it, we'd have to devote O(N^2) amount of code to implement all +// combinations of m and n. + +// Declares the template parameters. +#define GMOCK_INTERNAL_DECL_HAS_1_TEMPLATE_PARAMS(kind0, name0) kind0 name0 +#define GMOCK_INTERNAL_DECL_HAS_2_TEMPLATE_PARAMS(kind0, name0, kind1, \ + name1) kind0 name0, kind1 name1 +#define GMOCK_INTERNAL_DECL_HAS_3_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \ + kind2, name2) kind0 name0, kind1 name1, kind2 name2 +#define GMOCK_INTERNAL_DECL_HAS_4_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \ + kind2, name2, kind3, name3) kind0 name0, kind1 name1, kind2 name2, \ + kind3 name3 +#define GMOCK_INTERNAL_DECL_HAS_5_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \ + kind2, name2, kind3, name3, kind4, name4) kind0 name0, kind1 name1, \ + kind2 name2, kind3 name3, kind4 name4 +#define GMOCK_INTERNAL_DECL_HAS_6_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \ + kind2, name2, kind3, name3, kind4, name4, kind5, name5) kind0 name0, \ + kind1 name1, kind2 name2, kind3 name3, kind4 name4, kind5 name5 +#define GMOCK_INTERNAL_DECL_HAS_7_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \ + kind2, name2, kind3, name3, kind4, name4, kind5, name5, kind6, \ + name6) kind0 name0, kind1 name1, kind2 name2, kind3 name3, kind4 name4, \ + kind5 name5, kind6 name6 +#define GMOCK_INTERNAL_DECL_HAS_8_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \ + kind2, name2, kind3, name3, kind4, name4, kind5, name5, kind6, name6, \ + kind7, name7) kind0 name0, kind1 name1, kind2 name2, kind3 name3, \ + kind4 name4, kind5 name5, kind6 name6, kind7 name7 +#define GMOCK_INTERNAL_DECL_HAS_9_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \ + kind2, name2, kind3, name3, kind4, name4, kind5, name5, kind6, name6, \ + kind7, name7, kind8, name8) kind0 name0, kind1 name1, kind2 name2, \ + kind3 name3, kind4 name4, kind5 name5, kind6 name6, kind7 name7, \ + kind8 name8 +#define GMOCK_INTERNAL_DECL_HAS_10_TEMPLATE_PARAMS(kind0, name0, kind1, \ + name1, kind2, name2, kind3, name3, kind4, name4, kind5, name5, kind6, \ + name6, kind7, name7, kind8, name8, kind9, name9) kind0 name0, \ + kind1 name1, kind2 name2, kind3 name3, kind4 name4, kind5 name5, \ + kind6 name6, kind7 name7, kind8 name8, kind9 name9 + +// Lists the template parameters. +#define GMOCK_INTERNAL_LIST_HAS_1_TEMPLATE_PARAMS(kind0, name0) name0 +#define GMOCK_INTERNAL_LIST_HAS_2_TEMPLATE_PARAMS(kind0, name0, kind1, \ + name1) name0, name1 +#define GMOCK_INTERNAL_LIST_HAS_3_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \ + kind2, name2) name0, name1, name2 +#define GMOCK_INTERNAL_LIST_HAS_4_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \ + kind2, name2, kind3, name3) name0, name1, name2, name3 +#define GMOCK_INTERNAL_LIST_HAS_5_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \ + kind2, name2, kind3, name3, kind4, name4) name0, name1, name2, name3, \ + name4 +#define GMOCK_INTERNAL_LIST_HAS_6_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \ + kind2, name2, kind3, name3, kind4, name4, kind5, name5) name0, name1, \ + name2, name3, name4, name5 +#define GMOCK_INTERNAL_LIST_HAS_7_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \ + kind2, name2, kind3, name3, kind4, name4, kind5, name5, kind6, \ + name6) name0, name1, name2, name3, name4, name5, name6 +#define GMOCK_INTERNAL_LIST_HAS_8_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \ + kind2, name2, kind3, name3, kind4, name4, kind5, name5, kind6, name6, \ + kind7, name7) name0, name1, name2, name3, name4, name5, name6, name7 +#define GMOCK_INTERNAL_LIST_HAS_9_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \ + kind2, name2, kind3, name3, kind4, name4, kind5, name5, kind6, name6, \ + kind7, name7, kind8, name8) name0, name1, name2, name3, name4, name5, \ + name6, name7, name8 +#define GMOCK_INTERNAL_LIST_HAS_10_TEMPLATE_PARAMS(kind0, name0, kind1, \ + name1, kind2, name2, kind3, name3, kind4, name4, kind5, name5, kind6, \ + name6, kind7, name7, kind8, name8, kind9, name9) name0, name1, name2, \ + name3, name4, name5, name6, name7, name8, name9 + +// Declares the types of value parameters. +#define GMOCK_INTERNAL_DECL_TYPE_AND_0_VALUE_PARAMS() +#define GMOCK_INTERNAL_DECL_TYPE_AND_1_VALUE_PARAMS(p0) , typename p0##_type +#define GMOCK_INTERNAL_DECL_TYPE_AND_2_VALUE_PARAMS(p0, p1) , \ + typename p0##_type, typename p1##_type +#define GMOCK_INTERNAL_DECL_TYPE_AND_3_VALUE_PARAMS(p0, p1, p2) , \ + typename p0##_type, typename p1##_type, typename p2##_type +#define GMOCK_INTERNAL_DECL_TYPE_AND_4_VALUE_PARAMS(p0, p1, p2, p3) , \ + typename p0##_type, typename p1##_type, typename p2##_type, \ + typename p3##_type +#define GMOCK_INTERNAL_DECL_TYPE_AND_5_VALUE_PARAMS(p0, p1, p2, p3, p4) , \ + typename p0##_type, typename p1##_type, typename p2##_type, \ + typename p3##_type, typename p4##_type +#define GMOCK_INTERNAL_DECL_TYPE_AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, p5) , \ + typename p0##_type, typename p1##_type, typename p2##_type, \ + typename p3##_type, typename p4##_type, typename p5##_type +#define GMOCK_INTERNAL_DECL_TYPE_AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \ + p6) , typename p0##_type, typename p1##_type, typename p2##_type, \ + typename p3##_type, typename p4##_type, typename p5##_type, \ + typename p6##_type +#define GMOCK_INTERNAL_DECL_TYPE_AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \ + p6, p7) , typename p0##_type, typename p1##_type, typename p2##_type, \ + typename p3##_type, typename p4##_type, typename p5##_type, \ + typename p6##_type, typename p7##_type +#define GMOCK_INTERNAL_DECL_TYPE_AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \ + p6, p7, p8) , typename p0##_type, typename p1##_type, typename p2##_type, \ + typename p3##_type, typename p4##_type, typename p5##_type, \ + typename p6##_type, typename p7##_type, typename p8##_type +#define GMOCK_INTERNAL_DECL_TYPE_AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \ + p6, p7, p8, p9) , typename p0##_type, typename p1##_type, \ + typename p2##_type, typename p3##_type, typename p4##_type, \ + typename p5##_type, typename p6##_type, typename p7##_type, \ + typename p8##_type, typename p9##_type + +// Initializes the value parameters. +#define GMOCK_INTERNAL_INIT_AND_0_VALUE_PARAMS()\ + () +#define GMOCK_INTERNAL_INIT_AND_1_VALUE_PARAMS(p0)\ + (p0##_type gmock_p0) : p0(::std::move(gmock_p0)) +#define GMOCK_INTERNAL_INIT_AND_2_VALUE_PARAMS(p0, p1)\ + (p0##_type gmock_p0, p1##_type gmock_p1) : p0(::std::move(gmock_p0)), \ + p1(::std::move(gmock_p1)) +#define GMOCK_INTERNAL_INIT_AND_3_VALUE_PARAMS(p0, p1, p2)\ + (p0##_type gmock_p0, p1##_type gmock_p1, \ + p2##_type gmock_p2) : p0(::std::move(gmock_p0)), \ + p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)) +#define GMOCK_INTERNAL_INIT_AND_4_VALUE_PARAMS(p0, p1, p2, p3)\ + (p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \ + p3##_type gmock_p3) : p0(::std::move(gmock_p0)), \ + p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)), \ + p3(::std::move(gmock_p3)) +#define GMOCK_INTERNAL_INIT_AND_5_VALUE_PARAMS(p0, p1, p2, p3, p4)\ + (p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \ + p3##_type gmock_p3, p4##_type gmock_p4) : p0(::std::move(gmock_p0)), \ + p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)), \ + p3(::std::move(gmock_p3)), p4(::std::move(gmock_p4)) +#define GMOCK_INTERNAL_INIT_AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, p5)\ + (p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \ + p3##_type gmock_p3, p4##_type gmock_p4, \ + p5##_type gmock_p5) : p0(::std::move(gmock_p0)), \ + p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)), \ + p3(::std::move(gmock_p3)), p4(::std::move(gmock_p4)), \ + p5(::std::move(gmock_p5)) +#define GMOCK_INTERNAL_INIT_AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6)\ + (p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \ + p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \ + p6##_type gmock_p6) : p0(::std::move(gmock_p0)), \ + p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)), \ + p3(::std::move(gmock_p3)), p4(::std::move(gmock_p4)), \ + p5(::std::move(gmock_p5)), p6(::std::move(gmock_p6)) +#define GMOCK_INTERNAL_INIT_AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, p7)\ + (p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \ + p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \ + p6##_type gmock_p6, p7##_type gmock_p7) : p0(::std::move(gmock_p0)), \ + p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)), \ + p3(::std::move(gmock_p3)), p4(::std::move(gmock_p4)), \ + p5(::std::move(gmock_p5)), p6(::std::move(gmock_p6)), \ + p7(::std::move(gmock_p7)) +#define GMOCK_INTERNAL_INIT_AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \ + p7, p8)\ + (p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \ + p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \ + p6##_type gmock_p6, p7##_type gmock_p7, \ + p8##_type gmock_p8) : p0(::std::move(gmock_p0)), \ + p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)), \ + p3(::std::move(gmock_p3)), p4(::std::move(gmock_p4)), \ + p5(::std::move(gmock_p5)), p6(::std::move(gmock_p6)), \ + p7(::std::move(gmock_p7)), p8(::std::move(gmock_p8)) +#define GMOCK_INTERNAL_INIT_AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \ + p7, p8, p9)\ + (p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \ + p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \ + p6##_type gmock_p6, p7##_type gmock_p7, p8##_type gmock_p8, \ + p9##_type gmock_p9) : p0(::std::move(gmock_p0)), \ + p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)), \ + p3(::std::move(gmock_p3)), p4(::std::move(gmock_p4)), \ + p5(::std::move(gmock_p5)), p6(::std::move(gmock_p6)), \ + p7(::std::move(gmock_p7)), p8(::std::move(gmock_p8)), \ + p9(::std::move(gmock_p9)) + +// Declares the fields for storing the value parameters. +#define GMOCK_INTERNAL_DEFN_AND_0_VALUE_PARAMS() +#define GMOCK_INTERNAL_DEFN_AND_1_VALUE_PARAMS(p0) p0##_type p0; +#define GMOCK_INTERNAL_DEFN_AND_2_VALUE_PARAMS(p0, p1) p0##_type p0; \ + p1##_type p1; +#define GMOCK_INTERNAL_DEFN_AND_3_VALUE_PARAMS(p0, p1, p2) p0##_type p0; \ + p1##_type p1; p2##_type p2; +#define GMOCK_INTERNAL_DEFN_AND_4_VALUE_PARAMS(p0, p1, p2, p3) p0##_type p0; \ + p1##_type p1; p2##_type p2; p3##_type p3; +#define GMOCK_INTERNAL_DEFN_AND_5_VALUE_PARAMS(p0, p1, p2, p3, \ + p4) p0##_type p0; p1##_type p1; p2##_type p2; p3##_type p3; p4##_type p4; +#define GMOCK_INTERNAL_DEFN_AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, \ + p5) p0##_type p0; p1##_type p1; p2##_type p2; p3##_type p3; p4##_type p4; \ + p5##_type p5; +#define GMOCK_INTERNAL_DEFN_AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \ + p6) p0##_type p0; p1##_type p1; p2##_type p2; p3##_type p3; p4##_type p4; \ + p5##_type p5; p6##_type p6; +#define GMOCK_INTERNAL_DEFN_AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \ + p7) p0##_type p0; p1##_type p1; p2##_type p2; p3##_type p3; p4##_type p4; \ + p5##_type p5; p6##_type p6; p7##_type p7; +#define GMOCK_INTERNAL_DEFN_AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \ + p7, p8) p0##_type p0; p1##_type p1; p2##_type p2; p3##_type p3; \ + p4##_type p4; p5##_type p5; p6##_type p6; p7##_type p7; p8##_type p8; +#define GMOCK_INTERNAL_DEFN_AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \ + p7, p8, p9) p0##_type p0; p1##_type p1; p2##_type p2; p3##_type p3; \ + p4##_type p4; p5##_type p5; p6##_type p6; p7##_type p7; p8##_type p8; \ + p9##_type p9; + +// Lists the value parameters. +#define GMOCK_INTERNAL_LIST_AND_0_VALUE_PARAMS() +#define GMOCK_INTERNAL_LIST_AND_1_VALUE_PARAMS(p0) p0 +#define GMOCK_INTERNAL_LIST_AND_2_VALUE_PARAMS(p0, p1) p0, p1 +#define GMOCK_INTERNAL_LIST_AND_3_VALUE_PARAMS(p0, p1, p2) p0, p1, p2 +#define GMOCK_INTERNAL_LIST_AND_4_VALUE_PARAMS(p0, p1, p2, p3) p0, p1, p2, p3 +#define GMOCK_INTERNAL_LIST_AND_5_VALUE_PARAMS(p0, p1, p2, p3, p4) p0, p1, \ + p2, p3, p4 +#define GMOCK_INTERNAL_LIST_AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, p5) p0, \ + p1, p2, p3, p4, p5 +#define GMOCK_INTERNAL_LIST_AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \ + p6) p0, p1, p2, p3, p4, p5, p6 +#define GMOCK_INTERNAL_LIST_AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \ + p7) p0, p1, p2, p3, p4, p5, p6, p7 +#define GMOCK_INTERNAL_LIST_AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \ + p7, p8) p0, p1, p2, p3, p4, p5, p6, p7, p8 +#define GMOCK_INTERNAL_LIST_AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \ + p7, p8, p9) p0, p1, p2, p3, p4, p5, p6, p7, p8, p9 + +// Lists the value parameter types. +#define GMOCK_INTERNAL_LIST_TYPE_AND_0_VALUE_PARAMS() +#define GMOCK_INTERNAL_LIST_TYPE_AND_1_VALUE_PARAMS(p0) , p0##_type +#define GMOCK_INTERNAL_LIST_TYPE_AND_2_VALUE_PARAMS(p0, p1) , p0##_type, \ + p1##_type +#define GMOCK_INTERNAL_LIST_TYPE_AND_3_VALUE_PARAMS(p0, p1, p2) , p0##_type, \ + p1##_type, p2##_type +#define GMOCK_INTERNAL_LIST_TYPE_AND_4_VALUE_PARAMS(p0, p1, p2, p3) , \ + p0##_type, p1##_type, p2##_type, p3##_type +#define GMOCK_INTERNAL_LIST_TYPE_AND_5_VALUE_PARAMS(p0, p1, p2, p3, p4) , \ + p0##_type, p1##_type, p2##_type, p3##_type, p4##_type +#define GMOCK_INTERNAL_LIST_TYPE_AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, p5) , \ + p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, p5##_type +#define GMOCK_INTERNAL_LIST_TYPE_AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \ + p6) , p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, p5##_type, \ + p6##_type +#define GMOCK_INTERNAL_LIST_TYPE_AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \ + p6, p7) , p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \ + p5##_type, p6##_type, p7##_type +#define GMOCK_INTERNAL_LIST_TYPE_AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \ + p6, p7, p8) , p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \ + p5##_type, p6##_type, p7##_type, p8##_type +#define GMOCK_INTERNAL_LIST_TYPE_AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \ + p6, p7, p8, p9) , p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \ + p5##_type, p6##_type, p7##_type, p8##_type, p9##_type + +// Declares the value parameters. +#define GMOCK_INTERNAL_DECL_AND_0_VALUE_PARAMS() +#define GMOCK_INTERNAL_DECL_AND_1_VALUE_PARAMS(p0) p0##_type p0 +#define GMOCK_INTERNAL_DECL_AND_2_VALUE_PARAMS(p0, p1) p0##_type p0, \ + p1##_type p1 +#define GMOCK_INTERNAL_DECL_AND_3_VALUE_PARAMS(p0, p1, p2) p0##_type p0, \ + p1##_type p1, p2##_type p2 +#define GMOCK_INTERNAL_DECL_AND_4_VALUE_PARAMS(p0, p1, p2, p3) p0##_type p0, \ + p1##_type p1, p2##_type p2, p3##_type p3 +#define GMOCK_INTERNAL_DECL_AND_5_VALUE_PARAMS(p0, p1, p2, p3, \ + p4) p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, p4##_type p4 +#define GMOCK_INTERNAL_DECL_AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, \ + p5) p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, p4##_type p4, \ + p5##_type p5 +#define GMOCK_INTERNAL_DECL_AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \ + p6) p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, p4##_type p4, \ + p5##_type p5, p6##_type p6 +#define GMOCK_INTERNAL_DECL_AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \ + p7) p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, p4##_type p4, \ + p5##_type p5, p6##_type p6, p7##_type p7 +#define GMOCK_INTERNAL_DECL_AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \ + p7, p8) p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, \ + p4##_type p4, p5##_type p5, p6##_type p6, p7##_type p7, p8##_type p8 +#define GMOCK_INTERNAL_DECL_AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \ + p7, p8, p9) p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, \ + p4##_type p4, p5##_type p5, p6##_type p6, p7##_type p7, p8##_type p8, \ + p9##_type p9 + +// The suffix of the class template implementing the action template. +#define GMOCK_INTERNAL_COUNT_AND_0_VALUE_PARAMS() +#define GMOCK_INTERNAL_COUNT_AND_1_VALUE_PARAMS(p0) P +#define GMOCK_INTERNAL_COUNT_AND_2_VALUE_PARAMS(p0, p1) P2 +#define GMOCK_INTERNAL_COUNT_AND_3_VALUE_PARAMS(p0, p1, p2) P3 +#define GMOCK_INTERNAL_COUNT_AND_4_VALUE_PARAMS(p0, p1, p2, p3) P4 +#define GMOCK_INTERNAL_COUNT_AND_5_VALUE_PARAMS(p0, p1, p2, p3, p4) P5 +#define GMOCK_INTERNAL_COUNT_AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, p5) P6 +#define GMOCK_INTERNAL_COUNT_AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6) P7 +#define GMOCK_INTERNAL_COUNT_AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \ + p7) P8 +#define GMOCK_INTERNAL_COUNT_AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \ + p7, p8) P9 +#define GMOCK_INTERNAL_COUNT_AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \ + p7, p8, p9) P10 + +// The name of the class template implementing the action template. +#define GMOCK_ACTION_CLASS_(name, value_params)\ + GTEST_CONCAT_TOKEN_(name##Action, GMOCK_INTERNAL_COUNT_##value_params) + +#define ACTION_TEMPLATE(name, template_params, value_params)\ + template \ + class GMOCK_ACTION_CLASS_(name, value_params) {\ + public:\ + explicit GMOCK_ACTION_CLASS_(name, value_params)\ + GMOCK_INTERNAL_INIT_##value_params {}\ + template \ + class gmock_Impl : public ::testing::ActionInterface {\ + public:\ + typedef F function_type;\ + typedef typename ::testing::internal::Function::Result return_type;\ + typedef typename ::testing::internal::Function::ArgumentTuple\ + args_type;\ + explicit gmock_Impl GMOCK_INTERNAL_INIT_##value_params {}\ + virtual return_type Perform(const args_type& args) {\ + return ::testing::internal::ActionHelper::\ + Perform(this, args);\ + }\ + template \ + return_type gmock_PerformImpl(const args_type& args, \ + const arg0_type& arg0, const arg1_type& arg1, \ + const arg2_type& arg2, const arg3_type& arg3, \ + const arg4_type& arg4, const arg5_type& arg5, \ + const arg6_type& arg6, const arg7_type& arg7, \ + const arg8_type& arg8, const arg9_type& arg9) const;\ + GMOCK_INTERNAL_DEFN_##value_params\ + private:\ + GTEST_DISALLOW_ASSIGN_(gmock_Impl);\ + };\ + template operator ::testing::Action() const {\ + return ::testing::Action(\ + new gmock_Impl(GMOCK_INTERNAL_LIST_##value_params));\ + }\ + GMOCK_INTERNAL_DEFN_##value_params\ + private:\ + GTEST_DISALLOW_ASSIGN_(GMOCK_ACTION_CLASS_(name, value_params));\ + };\ + template \ + inline GMOCK_ACTION_CLASS_(name, value_params)<\ + GMOCK_INTERNAL_LIST_##template_params\ + GMOCK_INTERNAL_LIST_TYPE_##value_params> name(\ + GMOCK_INTERNAL_DECL_##value_params) {\ + return GMOCK_ACTION_CLASS_(name, value_params)<\ + GMOCK_INTERNAL_LIST_##template_params\ + GMOCK_INTERNAL_LIST_TYPE_##value_params>(\ + GMOCK_INTERNAL_LIST_##value_params);\ + }\ + template \ + template \ + template \ + typename ::testing::internal::Function::Result\ + GMOCK_ACTION_CLASS_(name, value_params)<\ + GMOCK_INTERNAL_LIST_##template_params\ + GMOCK_INTERNAL_LIST_TYPE_##value_params>::gmock_Impl::\ + gmock_PerformImpl(\ + GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const + +#define ACTION(name)\ + class name##Action {\ + public:\ + name##Action() {}\ + template \ + class gmock_Impl : public ::testing::ActionInterface {\ + public:\ + typedef F function_type;\ + typedef typename ::testing::internal::Function::Result return_type;\ + typedef typename ::testing::internal::Function::ArgumentTuple\ + args_type;\ + gmock_Impl() {}\ + virtual return_type Perform(const args_type& args) {\ + return ::testing::internal::ActionHelper::\ + Perform(this, args);\ + }\ + template \ + return_type gmock_PerformImpl(const args_type& args, \ + const arg0_type& arg0, const arg1_type& arg1, \ + const arg2_type& arg2, const arg3_type& arg3, \ + const arg4_type& arg4, const arg5_type& arg5, \ + const arg6_type& arg6, const arg7_type& arg7, \ + const arg8_type& arg8, const arg9_type& arg9) const;\ + private:\ + GTEST_DISALLOW_ASSIGN_(gmock_Impl);\ + };\ + template operator ::testing::Action() const {\ + return ::testing::Action(new gmock_Impl());\ + }\ + private:\ + GTEST_DISALLOW_ASSIGN_(name##Action);\ + };\ + inline name##Action name() {\ + return name##Action();\ + }\ + template \ + template \ + typename ::testing::internal::Function::Result\ + name##Action::gmock_Impl::gmock_PerformImpl(\ + GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const + +#define ACTION_P(name, p0)\ + template \ + class name##ActionP {\ + public:\ + explicit name##ActionP(p0##_type gmock_p0) : \ + p0(::std::forward(gmock_p0)) {}\ + template \ + class gmock_Impl : public ::testing::ActionInterface {\ + public:\ + typedef F function_type;\ + typedef typename ::testing::internal::Function::Result return_type;\ + typedef typename ::testing::internal::Function::ArgumentTuple\ + args_type;\ + explicit gmock_Impl(p0##_type gmock_p0) : \ + p0(::std::forward(gmock_p0)) {}\ + virtual return_type Perform(const args_type& args) {\ + return ::testing::internal::ActionHelper::\ + Perform(this, args);\ + }\ + template \ + return_type gmock_PerformImpl(const args_type& args, \ + const arg0_type& arg0, const arg1_type& arg1, \ + const arg2_type& arg2, const arg3_type& arg3, \ + const arg4_type& arg4, const arg5_type& arg5, \ + const arg6_type& arg6, const arg7_type& arg7, \ + const arg8_type& arg8, const arg9_type& arg9) const;\ + p0##_type p0;\ + private:\ + GTEST_DISALLOW_ASSIGN_(gmock_Impl);\ + };\ + template operator ::testing::Action() const {\ + return ::testing::Action(new gmock_Impl(p0));\ + }\ + p0##_type p0;\ + private:\ + GTEST_DISALLOW_ASSIGN_(name##ActionP);\ + };\ + template \ + inline name##ActionP name(p0##_type p0) {\ + return name##ActionP(p0);\ + }\ + template \ + template \ + template \ + typename ::testing::internal::Function::Result\ + name##ActionP::gmock_Impl::gmock_PerformImpl(\ + GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const + +#define ACTION_P2(name, p0, p1)\ + template \ + class name##ActionP2 {\ + public:\ + name##ActionP2(p0##_type gmock_p0, \ + p1##_type gmock_p1) : p0(::std::forward(gmock_p0)), \ + p1(::std::forward(gmock_p1)) {}\ + template \ + class gmock_Impl : public ::testing::ActionInterface {\ + public:\ + typedef F function_type;\ + typedef typename ::testing::internal::Function::Result return_type;\ + typedef typename ::testing::internal::Function::ArgumentTuple\ + args_type;\ + gmock_Impl(p0##_type gmock_p0, \ + p1##_type gmock_p1) : p0(::std::forward(gmock_p0)), \ + p1(::std::forward(gmock_p1)) {}\ + virtual return_type Perform(const args_type& args) {\ + return ::testing::internal::ActionHelper::\ + Perform(this, args);\ + }\ + template \ + return_type gmock_PerformImpl(const args_type& args, \ + const arg0_type& arg0, const arg1_type& arg1, \ + const arg2_type& arg2, const arg3_type& arg3, \ + const arg4_type& arg4, const arg5_type& arg5, \ + const arg6_type& arg6, const arg7_type& arg7, \ + const arg8_type& arg8, const arg9_type& arg9) const;\ + p0##_type p0;\ + p1##_type p1;\ + private:\ + GTEST_DISALLOW_ASSIGN_(gmock_Impl);\ + };\ + template operator ::testing::Action() const {\ + return ::testing::Action(new gmock_Impl(p0, p1));\ + }\ + p0##_type p0;\ + p1##_type p1;\ + private:\ + GTEST_DISALLOW_ASSIGN_(name##ActionP2);\ + };\ + template \ + inline name##ActionP2 name(p0##_type p0, \ + p1##_type p1) {\ + return name##ActionP2(p0, p1);\ + }\ + template \ + template \ + template \ + typename ::testing::internal::Function::Result\ + name##ActionP2::gmock_Impl::gmock_PerformImpl(\ + GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const + +#define ACTION_P3(name, p0, p1, p2)\ + template \ + class name##ActionP3 {\ + public:\ + name##ActionP3(p0##_type gmock_p0, p1##_type gmock_p1, \ + p2##_type gmock_p2) : p0(::std::forward(gmock_p0)), \ + p1(::std::forward(gmock_p1)), \ + p2(::std::forward(gmock_p2)) {}\ + template \ + class gmock_Impl : public ::testing::ActionInterface {\ + public:\ + typedef F function_type;\ + typedef typename ::testing::internal::Function::Result return_type;\ + typedef typename ::testing::internal::Function::ArgumentTuple\ + args_type;\ + gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, \ + p2##_type gmock_p2) : p0(::std::forward(gmock_p0)), \ + p1(::std::forward(gmock_p1)), \ + p2(::std::forward(gmock_p2)) {}\ + virtual return_type Perform(const args_type& args) {\ + return ::testing::internal::ActionHelper::\ + Perform(this, args);\ + }\ + template \ + return_type gmock_PerformImpl(const args_type& args, \ + const arg0_type& arg0, const arg1_type& arg1, \ + const arg2_type& arg2, const arg3_type& arg3, \ + const arg4_type& arg4, const arg5_type& arg5, \ + const arg6_type& arg6, const arg7_type& arg7, \ + const arg8_type& arg8, const arg9_type& arg9) const;\ + p0##_type p0;\ + p1##_type p1;\ + p2##_type p2;\ + private:\ + GTEST_DISALLOW_ASSIGN_(gmock_Impl);\ + };\ + template operator ::testing::Action() const {\ + return ::testing::Action(new gmock_Impl(p0, p1, p2));\ + }\ + p0##_type p0;\ + p1##_type p1;\ + p2##_type p2;\ + private:\ + GTEST_DISALLOW_ASSIGN_(name##ActionP3);\ + };\ + template \ + inline name##ActionP3 name(p0##_type p0, \ + p1##_type p1, p2##_type p2) {\ + return name##ActionP3(p0, p1, p2);\ + }\ + template \ + template \ + template \ + typename ::testing::internal::Function::Result\ + name##ActionP3::gmock_Impl::gmock_PerformImpl(\ + GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const + +#define ACTION_P4(name, p0, p1, p2, p3)\ + template \ + class name##ActionP4 {\ + public:\ + name##ActionP4(p0##_type gmock_p0, p1##_type gmock_p1, \ + p2##_type gmock_p2, \ + p3##_type gmock_p3) : p0(::std::forward(gmock_p0)), \ + p1(::std::forward(gmock_p1)), \ + p2(::std::forward(gmock_p2)), \ + p3(::std::forward(gmock_p3)) {}\ + template \ + class gmock_Impl : public ::testing::ActionInterface {\ + public:\ + typedef F function_type;\ + typedef typename ::testing::internal::Function::Result return_type;\ + typedef typename ::testing::internal::Function::ArgumentTuple\ + args_type;\ + gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \ + p3##_type gmock_p3) : p0(::std::forward(gmock_p0)), \ + p1(::std::forward(gmock_p1)), \ + p2(::std::forward(gmock_p2)), \ + p3(::std::forward(gmock_p3)) {}\ + virtual return_type Perform(const args_type& args) {\ + return ::testing::internal::ActionHelper::\ + Perform(this, args);\ + }\ + template \ + return_type gmock_PerformImpl(const args_type& args, \ + const arg0_type& arg0, const arg1_type& arg1, \ + const arg2_type& arg2, const arg3_type& arg3, \ + const arg4_type& arg4, const arg5_type& arg5, \ + const arg6_type& arg6, const arg7_type& arg7, \ + const arg8_type& arg8, const arg9_type& arg9) const;\ + p0##_type p0;\ + p1##_type p1;\ + p2##_type p2;\ + p3##_type p3;\ + private:\ + GTEST_DISALLOW_ASSIGN_(gmock_Impl);\ + };\ + template operator ::testing::Action() const {\ + return ::testing::Action(new gmock_Impl(p0, p1, p2, p3));\ + }\ + p0##_type p0;\ + p1##_type p1;\ + p2##_type p2;\ + p3##_type p3;\ + private:\ + GTEST_DISALLOW_ASSIGN_(name##ActionP4);\ + };\ + template \ + inline name##ActionP4 name(p0##_type p0, p1##_type p1, p2##_type p2, \ + p3##_type p3) {\ + return name##ActionP4(p0, p1, \ + p2, p3);\ + }\ + template \ + template \ + template \ + typename ::testing::internal::Function::Result\ + name##ActionP4::gmock_Impl::gmock_PerformImpl(\ + GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const + +#define ACTION_P5(name, p0, p1, p2, p3, p4)\ + template \ + class name##ActionP5 {\ + public:\ + name##ActionP5(p0##_type gmock_p0, p1##_type gmock_p1, \ + p2##_type gmock_p2, p3##_type gmock_p3, \ + p4##_type gmock_p4) : p0(::std::forward(gmock_p0)), \ + p1(::std::forward(gmock_p1)), \ + p2(::std::forward(gmock_p2)), \ + p3(::std::forward(gmock_p3)), \ + p4(::std::forward(gmock_p4)) {}\ + template \ + class gmock_Impl : public ::testing::ActionInterface {\ + public:\ + typedef F function_type;\ + typedef typename ::testing::internal::Function::Result return_type;\ + typedef typename ::testing::internal::Function::ArgumentTuple\ + args_type;\ + gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \ + p3##_type gmock_p3, \ + p4##_type gmock_p4) : p0(::std::forward(gmock_p0)), \ + p1(::std::forward(gmock_p1)), \ + p2(::std::forward(gmock_p2)), \ + p3(::std::forward(gmock_p3)), \ + p4(::std::forward(gmock_p4)) {}\ + virtual return_type Perform(const args_type& args) {\ + return ::testing::internal::ActionHelper::\ + Perform(this, args);\ + }\ + template \ + return_type gmock_PerformImpl(const args_type& args, \ + const arg0_type& arg0, const arg1_type& arg1, \ + const arg2_type& arg2, const arg3_type& arg3, \ + const arg4_type& arg4, const arg5_type& arg5, \ + const arg6_type& arg6, const arg7_type& arg7, \ + const arg8_type& arg8, const arg9_type& arg9) const;\ + p0##_type p0;\ + p1##_type p1;\ + p2##_type p2;\ + p3##_type p3;\ + p4##_type p4;\ + private:\ + GTEST_DISALLOW_ASSIGN_(gmock_Impl);\ + };\ + template operator ::testing::Action() const {\ + return ::testing::Action(new gmock_Impl(p0, p1, p2, p3, p4));\ + }\ + p0##_type p0;\ + p1##_type p1;\ + p2##_type p2;\ + p3##_type p3;\ + p4##_type p4;\ + private:\ + GTEST_DISALLOW_ASSIGN_(name##ActionP5);\ + };\ + template \ + inline name##ActionP5 name(p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, \ + p4##_type p4) {\ + return name##ActionP5(p0, p1, p2, p3, p4);\ + }\ + template \ + template \ + template \ + typename ::testing::internal::Function::Result\ + name##ActionP5::gmock_Impl::gmock_PerformImpl(\ + GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const + +#define ACTION_P6(name, p0, p1, p2, p3, p4, p5)\ + template \ + class name##ActionP6 {\ + public:\ + name##ActionP6(p0##_type gmock_p0, p1##_type gmock_p1, \ + p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \ + p5##_type gmock_p5) : p0(::std::forward(gmock_p0)), \ + p1(::std::forward(gmock_p1)), \ + p2(::std::forward(gmock_p2)), \ + p3(::std::forward(gmock_p3)), \ + p4(::std::forward(gmock_p4)), \ + p5(::std::forward(gmock_p5)) {}\ + template \ + class gmock_Impl : public ::testing::ActionInterface {\ + public:\ + typedef F function_type;\ + typedef typename ::testing::internal::Function::Result return_type;\ + typedef typename ::testing::internal::Function::ArgumentTuple\ + args_type;\ + gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \ + p3##_type gmock_p3, p4##_type gmock_p4, \ + p5##_type gmock_p5) : p0(::std::forward(gmock_p0)), \ + p1(::std::forward(gmock_p1)), \ + p2(::std::forward(gmock_p2)), \ + p3(::std::forward(gmock_p3)), \ + p4(::std::forward(gmock_p4)), \ + p5(::std::forward(gmock_p5)) {}\ + virtual return_type Perform(const args_type& args) {\ + return ::testing::internal::ActionHelper::\ + Perform(this, args);\ + }\ + template \ + return_type gmock_PerformImpl(const args_type& args, \ + const arg0_type& arg0, const arg1_type& arg1, \ + const arg2_type& arg2, const arg3_type& arg3, \ + const arg4_type& arg4, const arg5_type& arg5, \ + const arg6_type& arg6, const arg7_type& arg7, \ + const arg8_type& arg8, const arg9_type& arg9) const;\ + p0##_type p0;\ + p1##_type p1;\ + p2##_type p2;\ + p3##_type p3;\ + p4##_type p4;\ + p5##_type p5;\ + private:\ + GTEST_DISALLOW_ASSIGN_(gmock_Impl);\ + };\ + template operator ::testing::Action() const {\ + return ::testing::Action(new gmock_Impl(p0, p1, p2, p3, p4, p5));\ + }\ + p0##_type p0;\ + p1##_type p1;\ + p2##_type p2;\ + p3##_type p3;\ + p4##_type p4;\ + p5##_type p5;\ + private:\ + GTEST_DISALLOW_ASSIGN_(name##ActionP6);\ + };\ + template \ + inline name##ActionP6 name(p0##_type p0, p1##_type p1, p2##_type p2, \ + p3##_type p3, p4##_type p4, p5##_type p5) {\ + return name##ActionP6(p0, p1, p2, p3, p4, p5);\ + }\ + template \ + template \ + template \ + typename ::testing::internal::Function::Result\ + name##ActionP6::gmock_Impl::gmock_PerformImpl(\ + GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const + +#define ACTION_P7(name, p0, p1, p2, p3, p4, p5, p6)\ + template \ + class name##ActionP7 {\ + public:\ + name##ActionP7(p0##_type gmock_p0, p1##_type gmock_p1, \ + p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \ + p5##_type gmock_p5, \ + p6##_type gmock_p6) : p0(::std::forward(gmock_p0)), \ + p1(::std::forward(gmock_p1)), \ + p2(::std::forward(gmock_p2)), \ + p3(::std::forward(gmock_p3)), \ + p4(::std::forward(gmock_p4)), \ + p5(::std::forward(gmock_p5)), \ + p6(::std::forward(gmock_p6)) {}\ + template \ + class gmock_Impl : public ::testing::ActionInterface {\ + public:\ + typedef F function_type;\ + typedef typename ::testing::internal::Function::Result return_type;\ + typedef typename ::testing::internal::Function::ArgumentTuple\ + args_type;\ + gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \ + p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \ + p6##_type gmock_p6) : p0(::std::forward(gmock_p0)), \ + p1(::std::forward(gmock_p1)), \ + p2(::std::forward(gmock_p2)), \ + p3(::std::forward(gmock_p3)), \ + p4(::std::forward(gmock_p4)), \ + p5(::std::forward(gmock_p5)), \ + p6(::std::forward(gmock_p6)) {}\ + virtual return_type Perform(const args_type& args) {\ + return ::testing::internal::ActionHelper::\ + Perform(this, args);\ + }\ + template \ + return_type gmock_PerformImpl(const args_type& args, \ + const arg0_type& arg0, const arg1_type& arg1, \ + const arg2_type& arg2, const arg3_type& arg3, \ + const arg4_type& arg4, const arg5_type& arg5, \ + const arg6_type& arg6, const arg7_type& arg7, \ + const arg8_type& arg8, const arg9_type& arg9) const;\ + p0##_type p0;\ + p1##_type p1;\ + p2##_type p2;\ + p3##_type p3;\ + p4##_type p4;\ + p5##_type p5;\ + p6##_type p6;\ + private:\ + GTEST_DISALLOW_ASSIGN_(gmock_Impl);\ + };\ + template operator ::testing::Action() const {\ + return ::testing::Action(new gmock_Impl(p0, p1, p2, p3, p4, p5, \ + p6));\ + }\ + p0##_type p0;\ + p1##_type p1;\ + p2##_type p2;\ + p3##_type p3;\ + p4##_type p4;\ + p5##_type p5;\ + p6##_type p6;\ + private:\ + GTEST_DISALLOW_ASSIGN_(name##ActionP7);\ + };\ + template \ + inline name##ActionP7 name(p0##_type p0, p1##_type p1, \ + p2##_type p2, p3##_type p3, p4##_type p4, p5##_type p5, \ + p6##_type p6) {\ + return name##ActionP7(p0, p1, p2, p3, p4, p5, p6);\ + }\ + template \ + template \ + template \ + typename ::testing::internal::Function::Result\ + name##ActionP7::gmock_Impl::gmock_PerformImpl(\ + GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const + +#define ACTION_P8(name, p0, p1, p2, p3, p4, p5, p6, p7)\ + template \ + class name##ActionP8 {\ + public:\ + name##ActionP8(p0##_type gmock_p0, p1##_type gmock_p1, \ + p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \ + p5##_type gmock_p5, p6##_type gmock_p6, \ + p7##_type gmock_p7) : p0(::std::forward(gmock_p0)), \ + p1(::std::forward(gmock_p1)), \ + p2(::std::forward(gmock_p2)), \ + p3(::std::forward(gmock_p3)), \ + p4(::std::forward(gmock_p4)), \ + p5(::std::forward(gmock_p5)), \ + p6(::std::forward(gmock_p6)), \ + p7(::std::forward(gmock_p7)) {}\ + template \ + class gmock_Impl : public ::testing::ActionInterface {\ + public:\ + typedef F function_type;\ + typedef typename ::testing::internal::Function::Result return_type;\ + typedef typename ::testing::internal::Function::ArgumentTuple\ + args_type;\ + gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \ + p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \ + p6##_type gmock_p6, \ + p7##_type gmock_p7) : p0(::std::forward(gmock_p0)), \ + p1(::std::forward(gmock_p1)), \ + p2(::std::forward(gmock_p2)), \ + p3(::std::forward(gmock_p3)), \ + p4(::std::forward(gmock_p4)), \ + p5(::std::forward(gmock_p5)), \ + p6(::std::forward(gmock_p6)), \ + p7(::std::forward(gmock_p7)) {}\ + virtual return_type Perform(const args_type& args) {\ + return ::testing::internal::ActionHelper::\ + Perform(this, args);\ + }\ + template \ + return_type gmock_PerformImpl(const args_type& args, \ + const arg0_type& arg0, const arg1_type& arg1, \ + const arg2_type& arg2, const arg3_type& arg3, \ + const arg4_type& arg4, const arg5_type& arg5, \ + const arg6_type& arg6, const arg7_type& arg7, \ + const arg8_type& arg8, const arg9_type& arg9) const;\ + p0##_type p0;\ + p1##_type p1;\ + p2##_type p2;\ + p3##_type p3;\ + p4##_type p4;\ + p5##_type p5;\ + p6##_type p6;\ + p7##_type p7;\ + private:\ + GTEST_DISALLOW_ASSIGN_(gmock_Impl);\ + };\ + template operator ::testing::Action() const {\ + return ::testing::Action(new gmock_Impl(p0, p1, p2, p3, p4, p5, \ + p6, p7));\ + }\ + p0##_type p0;\ + p1##_type p1;\ + p2##_type p2;\ + p3##_type p3;\ + p4##_type p4;\ + p5##_type p5;\ + p6##_type p6;\ + p7##_type p7;\ + private:\ + GTEST_DISALLOW_ASSIGN_(name##ActionP8);\ + };\ + template \ + inline name##ActionP8 name(p0##_type p0, \ + p1##_type p1, p2##_type p2, p3##_type p3, p4##_type p4, p5##_type p5, \ + p6##_type p6, p7##_type p7) {\ + return name##ActionP8(p0, p1, p2, p3, p4, p5, \ + p6, p7);\ + }\ + template \ + template \ + template \ + typename ::testing::internal::Function::Result\ + name##ActionP8::gmock_Impl::gmock_PerformImpl(\ + GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const + +#define ACTION_P9(name, p0, p1, p2, p3, p4, p5, p6, p7, p8)\ + template \ + class name##ActionP9 {\ + public:\ + name##ActionP9(p0##_type gmock_p0, p1##_type gmock_p1, \ + p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \ + p5##_type gmock_p5, p6##_type gmock_p6, p7##_type gmock_p7, \ + p8##_type gmock_p8) : p0(::std::forward(gmock_p0)), \ + p1(::std::forward(gmock_p1)), \ + p2(::std::forward(gmock_p2)), \ + p3(::std::forward(gmock_p3)), \ + p4(::std::forward(gmock_p4)), \ + p5(::std::forward(gmock_p5)), \ + p6(::std::forward(gmock_p6)), \ + p7(::std::forward(gmock_p7)), \ + p8(::std::forward(gmock_p8)) {}\ + template \ + class gmock_Impl : public ::testing::ActionInterface {\ + public:\ + typedef F function_type;\ + typedef typename ::testing::internal::Function::Result return_type;\ + typedef typename ::testing::internal::Function::ArgumentTuple\ + args_type;\ + gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \ + p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \ + p6##_type gmock_p6, p7##_type gmock_p7, \ + p8##_type gmock_p8) : p0(::std::forward(gmock_p0)), \ + p1(::std::forward(gmock_p1)), \ + p2(::std::forward(gmock_p2)), \ + p3(::std::forward(gmock_p3)), \ + p4(::std::forward(gmock_p4)), \ + p5(::std::forward(gmock_p5)), \ + p6(::std::forward(gmock_p6)), \ + p7(::std::forward(gmock_p7)), \ + p8(::std::forward(gmock_p8)) {}\ + virtual return_type Perform(const args_type& args) {\ + return ::testing::internal::ActionHelper::\ + Perform(this, args);\ + }\ + template \ + return_type gmock_PerformImpl(const args_type& args, \ + const arg0_type& arg0, const arg1_type& arg1, \ + const arg2_type& arg2, const arg3_type& arg3, \ + const arg4_type& arg4, const arg5_type& arg5, \ + const arg6_type& arg6, const arg7_type& arg7, \ + const arg8_type& arg8, const arg9_type& arg9) const;\ + p0##_type p0;\ + p1##_type p1;\ + p2##_type p2;\ + p3##_type p3;\ + p4##_type p4;\ + p5##_type p5;\ + p6##_type p6;\ + p7##_type p7;\ + p8##_type p8;\ + private:\ + GTEST_DISALLOW_ASSIGN_(gmock_Impl);\ + };\ + template operator ::testing::Action() const {\ + return ::testing::Action(new gmock_Impl(p0, p1, p2, p3, p4, p5, \ + p6, p7, p8));\ + }\ + p0##_type p0;\ + p1##_type p1;\ + p2##_type p2;\ + p3##_type p3;\ + p4##_type p4;\ + p5##_type p5;\ + p6##_type p6;\ + p7##_type p7;\ + p8##_type p8;\ + private:\ + GTEST_DISALLOW_ASSIGN_(name##ActionP9);\ + };\ + template \ + inline name##ActionP9 name(p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, \ + p4##_type p4, p5##_type p5, p6##_type p6, p7##_type p7, \ + p8##_type p8) {\ + return name##ActionP9(p0, p1, p2, \ + p3, p4, p5, p6, p7, p8);\ + }\ + template \ + template \ + template \ + typename ::testing::internal::Function::Result\ + name##ActionP9::gmock_Impl::gmock_PerformImpl(\ + GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const + +#define ACTION_P10(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)\ + template \ + class name##ActionP10 {\ + public:\ + name##ActionP10(p0##_type gmock_p0, p1##_type gmock_p1, \ + p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \ + p5##_type gmock_p5, p6##_type gmock_p6, p7##_type gmock_p7, \ + p8##_type gmock_p8, \ + p9##_type gmock_p9) : p0(::std::forward(gmock_p0)), \ + p1(::std::forward(gmock_p1)), \ + p2(::std::forward(gmock_p2)), \ + p3(::std::forward(gmock_p3)), \ + p4(::std::forward(gmock_p4)), \ + p5(::std::forward(gmock_p5)), \ + p6(::std::forward(gmock_p6)), \ + p7(::std::forward(gmock_p7)), \ + p8(::std::forward(gmock_p8)), \ + p9(::std::forward(gmock_p9)) {}\ + template \ + class gmock_Impl : public ::testing::ActionInterface {\ + public:\ + typedef F function_type;\ + typedef typename ::testing::internal::Function::Result return_type;\ + typedef typename ::testing::internal::Function::ArgumentTuple\ + args_type;\ + gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \ + p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \ + p6##_type gmock_p6, p7##_type gmock_p7, p8##_type gmock_p8, \ + p9##_type gmock_p9) : p0(::std::forward(gmock_p0)), \ + p1(::std::forward(gmock_p1)), \ + p2(::std::forward(gmock_p2)), \ + p3(::std::forward(gmock_p3)), \ + p4(::std::forward(gmock_p4)), \ + p5(::std::forward(gmock_p5)), \ + p6(::std::forward(gmock_p6)), \ + p7(::std::forward(gmock_p7)), \ + p8(::std::forward(gmock_p8)), \ + p9(::std::forward(gmock_p9)) {}\ + virtual return_type Perform(const args_type& args) {\ + return ::testing::internal::ActionHelper::\ + Perform(this, args);\ + }\ + template \ + return_type gmock_PerformImpl(const args_type& args, \ + const arg0_type& arg0, const arg1_type& arg1, \ + const arg2_type& arg2, const arg3_type& arg3, \ + const arg4_type& arg4, const arg5_type& arg5, \ + const arg6_type& arg6, const arg7_type& arg7, \ + const arg8_type& arg8, const arg9_type& arg9) const;\ + p0##_type p0;\ + p1##_type p1;\ + p2##_type p2;\ + p3##_type p3;\ + p4##_type p4;\ + p5##_type p5;\ + p6##_type p6;\ + p7##_type p7;\ + p8##_type p8;\ + p9##_type p9;\ + private:\ + GTEST_DISALLOW_ASSIGN_(gmock_Impl);\ + };\ + template operator ::testing::Action() const {\ + return ::testing::Action(new gmock_Impl(p0, p1, p2, p3, p4, p5, \ + p6, p7, p8, p9));\ + }\ + p0##_type p0;\ + p1##_type p1;\ + p2##_type p2;\ + p3##_type p3;\ + p4##_type p4;\ + p5##_type p5;\ + p6##_type p6;\ + p7##_type p7;\ + p8##_type p8;\ + p9##_type p9;\ + private:\ + GTEST_DISALLOW_ASSIGN_(name##ActionP10);\ + };\ + template \ + inline name##ActionP10 name(p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, \ + p4##_type p4, p5##_type p5, p6##_type p6, p7##_type p7, p8##_type p8, \ + p9##_type p9) {\ + return name##ActionP10(p0, \ + p1, p2, p3, p4, p5, p6, p7, p8, p9);\ + }\ + template \ + template \ + template \ + typename ::testing::internal::Function::Result\ + name##ActionP10::gmock_Impl::gmock_PerformImpl(\ + GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const + +namespace testing { + + +// The ACTION*() macros trigger warning C4100 (unreferenced formal +// parameter) in MSVC with -W4. Unfortunately they cannot be fixed in +// the macro definition, as the warnings are generated when the macro +// is expanded and macro expansion cannot contain #pragma. Therefore +// we suppress them here. +#ifdef _MSC_VER +# pragma warning(push) +# pragma warning(disable:4100) +#endif + +// Various overloads for InvokeArgument(). +// +// The InvokeArgument(a1, a2, ..., a_k) action invokes the N-th +// (0-based) argument, which must be a k-ary callable, of the mock +// function, with arguments a1, a2, ..., a_k. +// +// Notes: +// +// 1. The arguments are passed by value by default. If you need to +// pass an argument by reference, wrap it inside ByRef(). For +// example, +// +// InvokeArgument<1>(5, string("Hello"), ByRef(foo)) +// +// passes 5 and string("Hello") by value, and passes foo by +// reference. +// +// 2. If the callable takes an argument by reference but ByRef() is +// not used, it will receive the reference to a copy of the value, +// instead of the original value. For example, when the 0-th +// argument of the mock function takes a const string&, the action +// +// InvokeArgument<0>(string("Hello")) +// +// makes a copy of the temporary string("Hello") object and passes a +// reference of the copy, instead of the original temporary object, +// to the callable. This makes it easy for a user to define an +// InvokeArgument action from temporary values and have it performed +// later. + +namespace internal { +namespace invoke_argument { + +// Appears in InvokeArgumentAdl's argument list to help avoid +// accidental calls to user functions of the same name. +struct AdlTag {}; + +// InvokeArgumentAdl - a helper for InvokeArgument. +// The basic overloads are provided here for generic functors. +// Overloads for other custom-callables are provided in the +// internal/custom/callback-actions.h header. + +template +R InvokeArgumentAdl(AdlTag, F f) { + return f(); +} +template +R InvokeArgumentAdl(AdlTag, F f, A1 a1) { + return f(a1); +} +template +R InvokeArgumentAdl(AdlTag, F f, A1 a1, A2 a2) { + return f(a1, a2); +} +template +R InvokeArgumentAdl(AdlTag, F f, A1 a1, A2 a2, A3 a3) { + return f(a1, a2, a3); +} +template +R InvokeArgumentAdl(AdlTag, F f, A1 a1, A2 a2, A3 a3, A4 a4) { + return f(a1, a2, a3, a4); +} +template +R InvokeArgumentAdl(AdlTag, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) { + return f(a1, a2, a3, a4, a5); +} +template +R InvokeArgumentAdl(AdlTag, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) { + return f(a1, a2, a3, a4, a5, a6); +} +template +R InvokeArgumentAdl(AdlTag, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, + A7 a7) { + return f(a1, a2, a3, a4, a5, a6, a7); +} +template +R InvokeArgumentAdl(AdlTag, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, + A7 a7, A8 a8) { + return f(a1, a2, a3, a4, a5, a6, a7, a8); +} +template +R InvokeArgumentAdl(AdlTag, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, + A7 a7, A8 a8, A9 a9) { + return f(a1, a2, a3, a4, a5, a6, a7, a8, a9); +} +template +R InvokeArgumentAdl(AdlTag, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, + A7 a7, A8 a8, A9 a9, A10 a10) { + return f(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10); +} +} // namespace invoke_argument +} // namespace internal + +ACTION_TEMPLATE(InvokeArgument, + HAS_1_TEMPLATE_PARAMS(int, k), + AND_0_VALUE_PARAMS()) { + using internal::invoke_argument::InvokeArgumentAdl; + return InvokeArgumentAdl( + internal::invoke_argument::AdlTag(), + ::std::get(args)); +} + +ACTION_TEMPLATE(InvokeArgument, + HAS_1_TEMPLATE_PARAMS(int, k), + AND_1_VALUE_PARAMS(p0)) { + using internal::invoke_argument::InvokeArgumentAdl; + return InvokeArgumentAdl( + internal::invoke_argument::AdlTag(), + ::std::get(args), p0); +} + +ACTION_TEMPLATE(InvokeArgument, + HAS_1_TEMPLATE_PARAMS(int, k), + AND_2_VALUE_PARAMS(p0, p1)) { + using internal::invoke_argument::InvokeArgumentAdl; + return InvokeArgumentAdl( + internal::invoke_argument::AdlTag(), + ::std::get(args), p0, p1); +} + +ACTION_TEMPLATE(InvokeArgument, + HAS_1_TEMPLATE_PARAMS(int, k), + AND_3_VALUE_PARAMS(p0, p1, p2)) { + using internal::invoke_argument::InvokeArgumentAdl; + return InvokeArgumentAdl( + internal::invoke_argument::AdlTag(), + ::std::get(args), p0, p1, p2); +} + +ACTION_TEMPLATE(InvokeArgument, + HAS_1_TEMPLATE_PARAMS(int, k), + AND_4_VALUE_PARAMS(p0, p1, p2, p3)) { + using internal::invoke_argument::InvokeArgumentAdl; + return InvokeArgumentAdl( + internal::invoke_argument::AdlTag(), + ::std::get(args), p0, p1, p2, p3); +} + +ACTION_TEMPLATE(InvokeArgument, + HAS_1_TEMPLATE_PARAMS(int, k), + AND_5_VALUE_PARAMS(p0, p1, p2, p3, p4)) { + using internal::invoke_argument::InvokeArgumentAdl; + return InvokeArgumentAdl( + internal::invoke_argument::AdlTag(), + ::std::get(args), p0, p1, p2, p3, p4); +} + +ACTION_TEMPLATE(InvokeArgument, + HAS_1_TEMPLATE_PARAMS(int, k), + AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, p5)) { + using internal::invoke_argument::InvokeArgumentAdl; + return InvokeArgumentAdl( + internal::invoke_argument::AdlTag(), + ::std::get(args), p0, p1, p2, p3, p4, p5); +} + +ACTION_TEMPLATE(InvokeArgument, + HAS_1_TEMPLATE_PARAMS(int, k), + AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6)) { + using internal::invoke_argument::InvokeArgumentAdl; + return InvokeArgumentAdl( + internal::invoke_argument::AdlTag(), + ::std::get(args), p0, p1, p2, p3, p4, p5, p6); +} + +ACTION_TEMPLATE(InvokeArgument, + HAS_1_TEMPLATE_PARAMS(int, k), + AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, p7)) { + using internal::invoke_argument::InvokeArgumentAdl; + return InvokeArgumentAdl( + internal::invoke_argument::AdlTag(), + ::std::get(args), p0, p1, p2, p3, p4, p5, p6, p7); +} + +ACTION_TEMPLATE(InvokeArgument, + HAS_1_TEMPLATE_PARAMS(int, k), + AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, p7, p8)) { + using internal::invoke_argument::InvokeArgumentAdl; + return InvokeArgumentAdl( + internal::invoke_argument::AdlTag(), + ::std::get(args), p0, p1, p2, p3, p4, p5, p6, p7, p8); +} + +ACTION_TEMPLATE(InvokeArgument, + HAS_1_TEMPLATE_PARAMS(int, k), + AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)) { + using internal::invoke_argument::InvokeArgumentAdl; + return InvokeArgumentAdl( + internal::invoke_argument::AdlTag(), + ::std::get(args), p0, p1, p2, p3, p4, p5, p6, p7, p8, p9); +} + +// Various overloads for ReturnNew(). +// +// The ReturnNew(a1, a2, ..., a_k) action returns a pointer to a new +// instance of type T, constructed on the heap with constructor arguments +// a1, a2, ..., and a_k. The caller assumes ownership of the returned value. +ACTION_TEMPLATE(ReturnNew, + HAS_1_TEMPLATE_PARAMS(typename, T), + AND_0_VALUE_PARAMS()) { + return new T(); +} + +ACTION_TEMPLATE(ReturnNew, + HAS_1_TEMPLATE_PARAMS(typename, T), + AND_1_VALUE_PARAMS(p0)) { + return new T(p0); +} + +ACTION_TEMPLATE(ReturnNew, + HAS_1_TEMPLATE_PARAMS(typename, T), + AND_2_VALUE_PARAMS(p0, p1)) { + return new T(p0, p1); +} + +ACTION_TEMPLATE(ReturnNew, + HAS_1_TEMPLATE_PARAMS(typename, T), + AND_3_VALUE_PARAMS(p0, p1, p2)) { + return new T(p0, p1, p2); +} + +ACTION_TEMPLATE(ReturnNew, + HAS_1_TEMPLATE_PARAMS(typename, T), + AND_4_VALUE_PARAMS(p0, p1, p2, p3)) { + return new T(p0, p1, p2, p3); +} + +ACTION_TEMPLATE(ReturnNew, + HAS_1_TEMPLATE_PARAMS(typename, T), + AND_5_VALUE_PARAMS(p0, p1, p2, p3, p4)) { + return new T(p0, p1, p2, p3, p4); +} + +ACTION_TEMPLATE(ReturnNew, + HAS_1_TEMPLATE_PARAMS(typename, T), + AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, p5)) { + return new T(p0, p1, p2, p3, p4, p5); +} + +ACTION_TEMPLATE(ReturnNew, + HAS_1_TEMPLATE_PARAMS(typename, T), + AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6)) { + return new T(p0, p1, p2, p3, p4, p5, p6); +} + +ACTION_TEMPLATE(ReturnNew, + HAS_1_TEMPLATE_PARAMS(typename, T), + AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, p7)) { + return new T(p0, p1, p2, p3, p4, p5, p6, p7); +} + +ACTION_TEMPLATE(ReturnNew, + HAS_1_TEMPLATE_PARAMS(typename, T), + AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, p7, p8)) { + return new T(p0, p1, p2, p3, p4, p5, p6, p7, p8); +} + +ACTION_TEMPLATE(ReturnNew, + HAS_1_TEMPLATE_PARAMS(typename, T), + AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)) { + return new T(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9); +} + +#ifdef _MSC_VER +# pragma warning(pop) +#endif + +} // namespace testing + +// Include any custom callback actions added by the local installation. +// We must include this header at the end to make sure it can use the +// declarations from this file. +#include "gmock/internal/custom/gmock-generated-actions.h" + +#endif // GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_ACTIONS_H_ diff --git a/build/_deps/googletest-src/googlemock/include/gmock/gmock-generated-actions.h.pump b/build/_deps/googletest-src/googlemock/include/gmock/gmock-generated-actions.h.pump new file mode 100644 index 0000000000000000000000000000000000000000..209603c5a90135ec53abae541d08243ba182e0b8 --- /dev/null +++ b/build/_deps/googletest-src/googlemock/include/gmock/gmock-generated-actions.h.pump @@ -0,0 +1,627 @@ +$$ -*- mode: c++; -*- +$$ This is a Pump source file. Please use Pump to convert it to +$$ gmock-generated-actions.h. +$$ +$var n = 10 $$ The maximum arity we support. +$$}} This meta comment fixes auto-indentation in editors. +// Copyright 2007, Google Inc. +// 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 Google Inc. 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 +// OWNER 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. + + +// Google Mock - a framework for writing C++ mock classes. +// +// This file implements some commonly used variadic actions. + +// GOOGLETEST_CM0002 DO NOT DELETE + +#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_ACTIONS_H_ +#define GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_ACTIONS_H_ + +#include +#include + +#include "gmock/gmock-actions.h" +#include "gmock/internal/gmock-port.h" + +namespace testing { +namespace internal { + +// A macro from the ACTION* family (defined later in this file) +// defines an action that can be used in a mock function. Typically, +// these actions only care about a subset of the arguments of the mock +// function. For example, if such an action only uses the second +// argument, it can be used in any mock function that takes >= 2 +// arguments where the type of the second argument is compatible. +// +// Therefore, the action implementation must be prepared to take more +// arguments than it needs. The ExcessiveArg type is used to +// represent those excessive arguments. In order to keep the compiler +// error messages tractable, we define it in the testing namespace +// instead of testing::internal. However, this is an INTERNAL TYPE +// and subject to change without notice, so a user MUST NOT USE THIS +// TYPE DIRECTLY. +struct ExcessiveArg {}; + +// A helper class needed for implementing the ACTION* macros. +template +class ActionHelper { + public: +$range i 0..n +$for i + +[[ +$var template = [[$if i==0 [[]] $else [[ +$range j 0..i-1 + template <$for j, [[typename A$j]]> +]]]] +$range j 0..i-1 +$var As = [[$for j, [[A$j]]]] +$var as = [[$for j, [[std::get<$j>(args)]]]] +$range k 1..n-i +$var eas = [[$for k, [[ExcessiveArg()]]]] +$var arg_list = [[$if (i==0) | (i==n) [[$as$eas]] $else [[$as, $eas]]]] +$template + static Result Perform(Impl* impl, const ::std::tuple<$As>& args) { + return impl->template gmock_PerformImpl<$As>(args, $arg_list); + } + +]] +}; + +} // namespace internal +} // namespace testing + +// The ACTION* family of macros can be used in a namespace scope to +// define custom actions easily. The syntax: +// +// ACTION(name) { statements; } +// +// will define an action with the given name that executes the +// statements. The value returned by the statements will be used as +// the return value of the action. Inside the statements, you can +// refer to the K-th (0-based) argument of the mock function by +// 'argK', and refer to its type by 'argK_type'. For example: +// +// ACTION(IncrementArg1) { +// arg1_type temp = arg1; +// return ++(*temp); +// } +// +// allows you to write +// +// ...WillOnce(IncrementArg1()); +// +// You can also refer to the entire argument tuple and its type by +// 'args' and 'args_type', and refer to the mock function type and its +// return type by 'function_type' and 'return_type'. +// +// Note that you don't need to specify the types of the mock function +// arguments. However rest assured that your code is still type-safe: +// you'll get a compiler error if *arg1 doesn't support the ++ +// operator, or if the type of ++(*arg1) isn't compatible with the +// mock function's return type, for example. +// +// Sometimes you'll want to parameterize the action. For that you can use +// another macro: +// +// ACTION_P(name, param_name) { statements; } +// +// For example: +// +// ACTION_P(Add, n) { return arg0 + n; } +// +// will allow you to write: +// +// ...WillOnce(Add(5)); +// +// Note that you don't need to provide the type of the parameter +// either. If you need to reference the type of a parameter named +// 'foo', you can write 'foo_type'. For example, in the body of +// ACTION_P(Add, n) above, you can write 'n_type' to refer to the type +// of 'n'. +// +// We also provide ACTION_P2, ACTION_P3, ..., up to ACTION_P$n to support +// multi-parameter actions. +// +// For the purpose of typing, you can view +// +// ACTION_Pk(Foo, p1, ..., pk) { ... } +// +// as shorthand for +// +// template +// FooActionPk Foo(p1_type p1, ..., pk_type pk) { ... } +// +// In particular, you can provide the template type arguments +// explicitly when invoking Foo(), as in Foo(5, false); +// although usually you can rely on the compiler to infer the types +// for you automatically. You can assign the result of expression +// Foo(p1, ..., pk) to a variable of type FooActionPk. This can be useful when composing actions. +// +// You can also overload actions with different numbers of parameters: +// +// ACTION_P(Plus, a) { ... } +// ACTION_P2(Plus, a, b) { ... } +// +// While it's tempting to always use the ACTION* macros when defining +// a new action, you should also consider implementing ActionInterface +// or using MakePolymorphicAction() instead, especially if you need to +// use the action a lot. While these approaches require more work, +// they give you more control on the types of the mock function +// arguments and the action parameters, which in general leads to +// better compiler error messages that pay off in the long run. They +// also allow overloading actions based on parameter types (as opposed +// to just based on the number of parameters). +// +// CAVEAT: +// +// ACTION*() can only be used in a namespace scope as templates cannot be +// declared inside of a local class. +// Users can, however, define any local functors (e.g. a lambda) that +// can be used as actions. +// +// MORE INFORMATION: +// +// To learn more about using these macros, please search for 'ACTION' on +// https://github.com/google/googletest/blob/master/googlemock/docs/cook_book.md + +$range i 0..n +$range k 0..n-1 + +// An internal macro needed for implementing ACTION*(). +#define GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_\ + const args_type& args GTEST_ATTRIBUTE_UNUSED_ +$for k [[, \ + const arg$k[[]]_type& arg$k GTEST_ATTRIBUTE_UNUSED_]] + + +// Sometimes you want to give an action explicit template parameters +// that cannot be inferred from its value parameters. ACTION() and +// ACTION_P*() don't support that. ACTION_TEMPLATE() remedies that +// and can be viewed as an extension to ACTION() and ACTION_P*(). +// +// The syntax: +// +// ACTION_TEMPLATE(ActionName, +// HAS_m_TEMPLATE_PARAMS(kind1, name1, ..., kind_m, name_m), +// AND_n_VALUE_PARAMS(p1, ..., p_n)) { statements; } +// +// defines an action template that takes m explicit template +// parameters and n value parameters. name_i is the name of the i-th +// template parameter, and kind_i specifies whether it's a typename, +// an integral constant, or a template. p_i is the name of the i-th +// value parameter. +// +// Example: +// +// // DuplicateArg(output) converts the k-th argument of the mock +// // function to type T and copies it to *output. +// ACTION_TEMPLATE(DuplicateArg, +// HAS_2_TEMPLATE_PARAMS(int, k, typename, T), +// AND_1_VALUE_PARAMS(output)) { +// *output = T(::std::get(args)); +// } +// ... +// int n; +// EXPECT_CALL(mock, Foo(_, _)) +// .WillOnce(DuplicateArg<1, unsigned char>(&n)); +// +// To create an instance of an action template, write: +// +// ActionName(v1, ..., v_n) +// +// where the ts are the template arguments and the vs are the value +// arguments. The value argument types are inferred by the compiler. +// If you want to explicitly specify the value argument types, you can +// provide additional template arguments: +// +// ActionName(v1, ..., v_n) +// +// where u_i is the desired type of v_i. +// +// ACTION_TEMPLATE and ACTION/ACTION_P* can be overloaded on the +// number of value parameters, but not on the number of template +// parameters. Without the restriction, the meaning of the following +// is unclear: +// +// OverloadedAction(x); +// +// Are we using a single-template-parameter action where 'bool' refers +// to the type of x, or are we using a two-template-parameter action +// where the compiler is asked to infer the type of x? +// +// Implementation notes: +// +// GMOCK_INTERNAL_*_HAS_m_TEMPLATE_PARAMS and +// GMOCK_INTERNAL_*_AND_n_VALUE_PARAMS are internal macros for +// implementing ACTION_TEMPLATE. The main trick we use is to create +// new macro invocations when expanding a macro. For example, we have +// +// #define ACTION_TEMPLATE(name, template_params, value_params) +// ... GMOCK_INTERNAL_DECL_##template_params ... +// +// which causes ACTION_TEMPLATE(..., HAS_1_TEMPLATE_PARAMS(typename, T), ...) +// to expand to +// +// ... GMOCK_INTERNAL_DECL_HAS_1_TEMPLATE_PARAMS(typename, T) ... +// +// Since GMOCK_INTERNAL_DECL_HAS_1_TEMPLATE_PARAMS is a macro, the +// preprocessor will continue to expand it to +// +// ... typename T ... +// +// This technique conforms to the C++ standard and is portable. It +// allows us to implement action templates using O(N) code, where N is +// the maximum number of template/value parameters supported. Without +// using it, we'd have to devote O(N^2) amount of code to implement all +// combinations of m and n. + +// Declares the template parameters. + +$range j 1..n +$for j [[ +$range m 0..j-1 +#define GMOCK_INTERNAL_DECL_HAS_$j[[]] +_TEMPLATE_PARAMS($for m, [[kind$m, name$m]]) $for m, [[kind$m name$m]] + + +]] + +// Lists the template parameters. + +$for j [[ +$range m 0..j-1 +#define GMOCK_INTERNAL_LIST_HAS_$j[[]] +_TEMPLATE_PARAMS($for m, [[kind$m, name$m]]) $for m, [[name$m]] + + +]] + +// Declares the types of value parameters. + +$for i [[ +$range j 0..i-1 +#define GMOCK_INTERNAL_DECL_TYPE_AND_$i[[]] +_VALUE_PARAMS($for j, [[p$j]]) $for j [[, typename p$j##_type]] + + +]] + +// Initializes the value parameters. + +$for i [[ +$range j 0..i-1 +#define GMOCK_INTERNAL_INIT_AND_$i[[]]_VALUE_PARAMS($for j, [[p$j]])\ + ($for j, [[p$j##_type gmock_p$j]])$if i>0 [[ : ]]$for j, [[p$j(::std::move(gmock_p$j))]] + + +]] + +// Declares the fields for storing the value parameters. + +$for i [[ +$range j 0..i-1 +#define GMOCK_INTERNAL_DEFN_AND_$i[[]] +_VALUE_PARAMS($for j, [[p$j]]) $for j [[p$j##_type p$j; ]] + + +]] + +// Lists the value parameters. + +$for i [[ +$range j 0..i-1 +#define GMOCK_INTERNAL_LIST_AND_$i[[]] +_VALUE_PARAMS($for j, [[p$j]]) $for j, [[p$j]] + + +]] + +// Lists the value parameter types. + +$for i [[ +$range j 0..i-1 +#define GMOCK_INTERNAL_LIST_TYPE_AND_$i[[]] +_VALUE_PARAMS($for j, [[p$j]]) $for j [[, p$j##_type]] + + +]] + +// Declares the value parameters. + +$for i [[ +$range j 0..i-1 +#define GMOCK_INTERNAL_DECL_AND_$i[[]]_VALUE_PARAMS($for j, [[p$j]]) [[]] +$for j, [[p$j##_type p$j]] + + +]] + +// The suffix of the class template implementing the action template. +$for i [[ + + +$range j 0..i-1 +#define GMOCK_INTERNAL_COUNT_AND_$i[[]]_VALUE_PARAMS($for j, [[p$j]]) [[]] +$if i==1 [[P]] $elif i>=2 [[P$i]] +]] + + +// The name of the class template implementing the action template. +#define GMOCK_ACTION_CLASS_(name, value_params)\ + GTEST_CONCAT_TOKEN_(name##Action, GMOCK_INTERNAL_COUNT_##value_params) + +$range k 0..n-1 + +#define ACTION_TEMPLATE(name, template_params, value_params)\ + template \ + class GMOCK_ACTION_CLASS_(name, value_params) {\ + public:\ + explicit GMOCK_ACTION_CLASS_(name, value_params)\ + GMOCK_INTERNAL_INIT_##value_params {}\ + template \ + class gmock_Impl : public ::testing::ActionInterface {\ + public:\ + typedef F function_type;\ + typedef typename ::testing::internal::Function::Result return_type;\ + typedef typename ::testing::internal::Function::ArgumentTuple\ + args_type;\ + explicit gmock_Impl GMOCK_INTERNAL_INIT_##value_params {}\ + virtual return_type Perform(const args_type& args) {\ + return ::testing::internal::ActionHelper::\ + Perform(this, args);\ + }\ + template <$for k, [[typename arg$k[[]]_type]]>\ + return_type gmock_PerformImpl(const args_type& args[[]] +$for k [[, const arg$k[[]]_type& arg$k]]) const;\ + GMOCK_INTERNAL_DEFN_##value_params\ + private:\ + GTEST_DISALLOW_ASSIGN_(gmock_Impl);\ + };\ + template operator ::testing::Action() const {\ + return ::testing::Action(\ + new gmock_Impl(GMOCK_INTERNAL_LIST_##value_params));\ + }\ + GMOCK_INTERNAL_DEFN_##value_params\ + private:\ + GTEST_DISALLOW_ASSIGN_(GMOCK_ACTION_CLASS_(name, value_params));\ + };\ + template \ + inline GMOCK_ACTION_CLASS_(name, value_params)<\ + GMOCK_INTERNAL_LIST_##template_params\ + GMOCK_INTERNAL_LIST_TYPE_##value_params> name(\ + GMOCK_INTERNAL_DECL_##value_params) {\ + return GMOCK_ACTION_CLASS_(name, value_params)<\ + GMOCK_INTERNAL_LIST_##template_params\ + GMOCK_INTERNAL_LIST_TYPE_##value_params>(\ + GMOCK_INTERNAL_LIST_##value_params);\ + }\ + template \ + template \ + template \ + typename ::testing::internal::Function::Result\ + GMOCK_ACTION_CLASS_(name, value_params)<\ + GMOCK_INTERNAL_LIST_##template_params\ + GMOCK_INTERNAL_LIST_TYPE_##value_params>::gmock_Impl::\ + gmock_PerformImpl(\ + GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const + +$for i + +[[ +$var template = [[$if i==0 [[]] $else [[ +$range j 0..i-1 + + template <$for j, [[typename p$j##_type]]>\ +]]]] +$var class_name = [[name##Action[[$if i==0 [[]] $elif i==1 [[P]] + $else [[P$i]]]]]] +$range j 0..i-1 +$var ctor_param_list = [[$for j, [[p$j##_type gmock_p$j]]]] +$var param_types_and_names = [[$for j, [[p$j##_type p$j]]]] +$var inits = [[$if i==0 [[]] $else [[ : $for j, [[p$j(::std::forward(gmock_p$j))]]]]]] +$var param_field_decls = [[$for j +[[ + + p$j##_type p$j;\ +]]]] +$var param_field_decls2 = [[$for j +[[ + + p$j##_type p$j;\ +]]]] +$var params = [[$for j, [[p$j]]]] +$var param_types = [[$if i==0 [[]] $else [[<$for j, [[p$j##_type]]>]]]] +$var typename_arg_types = [[$for k, [[typename arg$k[[]]_type]]]] +$var arg_types_and_names = [[$for k, [[const arg$k[[]]_type& arg$k]]]] +$var macro_name = [[$if i==0 [[ACTION]] $elif i==1 [[ACTION_P]] + $else [[ACTION_P$i]]]] + +#define $macro_name(name$for j [[, p$j]])\$template + class $class_name {\ + public:\ + [[$if i==1 [[explicit ]]]]$class_name($ctor_param_list)$inits {}\ + template \ + class gmock_Impl : public ::testing::ActionInterface {\ + public:\ + typedef F function_type;\ + typedef typename ::testing::internal::Function::Result return_type;\ + typedef typename ::testing::internal::Function::ArgumentTuple\ + args_type;\ + [[$if i==1 [[explicit ]]]]gmock_Impl($ctor_param_list)$inits {}\ + virtual return_type Perform(const args_type& args) {\ + return ::testing::internal::ActionHelper::\ + Perform(this, args);\ + }\ + template <$typename_arg_types>\ + return_type gmock_PerformImpl(const args_type& args, [[]] +$arg_types_and_names) const;\$param_field_decls + private:\ + GTEST_DISALLOW_ASSIGN_(gmock_Impl);\ + };\ + template operator ::testing::Action() const {\ + return ::testing::Action(new gmock_Impl($params));\ + }\$param_field_decls2 + private:\ + GTEST_DISALLOW_ASSIGN_($class_name);\ + };\$template + inline $class_name$param_types name($param_types_and_names) {\ + return $class_name$param_types($params);\ + }\$template + template \ + template <$typename_arg_types>\ + typename ::testing::internal::Function::Result\ + $class_name$param_types::gmock_Impl::gmock_PerformImpl(\ + GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const +]] +$$ } // This meta comment fixes auto-indentation in Emacs. It won't +$$ // show up in the generated code. + + +namespace testing { + + +// The ACTION*() macros trigger warning C4100 (unreferenced formal +// parameter) in MSVC with -W4. Unfortunately they cannot be fixed in +// the macro definition, as the warnings are generated when the macro +// is expanded and macro expansion cannot contain #pragma. Therefore +// we suppress them here. +#ifdef _MSC_VER +# pragma warning(push) +# pragma warning(disable:4100) +#endif + +// Various overloads for InvokeArgument(). +// +// The InvokeArgument(a1, a2, ..., a_k) action invokes the N-th +// (0-based) argument, which must be a k-ary callable, of the mock +// function, with arguments a1, a2, ..., a_k. +// +// Notes: +// +// 1. The arguments are passed by value by default. If you need to +// pass an argument by reference, wrap it inside ByRef(). For +// example, +// +// InvokeArgument<1>(5, string("Hello"), ByRef(foo)) +// +// passes 5 and string("Hello") by value, and passes foo by +// reference. +// +// 2. If the callable takes an argument by reference but ByRef() is +// not used, it will receive the reference to a copy of the value, +// instead of the original value. For example, when the 0-th +// argument of the mock function takes a const string&, the action +// +// InvokeArgument<0>(string("Hello")) +// +// makes a copy of the temporary string("Hello") object and passes a +// reference of the copy, instead of the original temporary object, +// to the callable. This makes it easy for a user to define an +// InvokeArgument action from temporary values and have it performed +// later. + +namespace internal { +namespace invoke_argument { + +// Appears in InvokeArgumentAdl's argument list to help avoid +// accidental calls to user functions of the same name. +struct AdlTag {}; + +// InvokeArgumentAdl - a helper for InvokeArgument. +// The basic overloads are provided here for generic functors. +// Overloads for other custom-callables are provided in the +// internal/custom/callback-actions.h header. + +$range i 0..n +$for i +[[ +$range j 1..i + +template +R InvokeArgumentAdl(AdlTag, F f[[$for j [[, A$j a$j]]]]) { + return f([[$for j, [[a$j]]]]); +} +]] + +} // namespace invoke_argument +} // namespace internal + +$range i 0..n +$for i [[ +$range j 0..i-1 + +ACTION_TEMPLATE(InvokeArgument, + HAS_1_TEMPLATE_PARAMS(int, k), + AND_$i[[]]_VALUE_PARAMS($for j, [[p$j]])) { + using internal::invoke_argument::InvokeArgumentAdl; + return InvokeArgumentAdl( + internal::invoke_argument::AdlTag(), + ::std::get(args)$for j [[, p$j]]); +} + +]] + +// Various overloads for ReturnNew(). +// +// The ReturnNew(a1, a2, ..., a_k) action returns a pointer to a new +// instance of type T, constructed on the heap with constructor arguments +// a1, a2, ..., and a_k. The caller assumes ownership of the returned value. +$range i 0..n +$for i [[ +$range j 0..i-1 +$var ps = [[$for j, [[p$j]]]] + +ACTION_TEMPLATE(ReturnNew, + HAS_1_TEMPLATE_PARAMS(typename, T), + AND_$i[[]]_VALUE_PARAMS($ps)) { + return new T($ps); +} + +]] + +#ifdef _MSC_VER +# pragma warning(pop) +#endif + +} // namespace testing + +// Include any custom callback actions added by the local installation. +// We must include this header at the end to make sure it can use the +// declarations from this file. +#include "gmock/internal/custom/gmock-generated-actions.h" + +#endif // GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_ACTIONS_H_ diff --git a/build/_deps/googletest-src/googlemock/include/gmock/gmock-generated-function-mockers.h b/build/_deps/googletest-src/googlemock/include/gmock/gmock-generated-function-mockers.h new file mode 100644 index 0000000000000000000000000000000000000000..cd9578178c00e03f815133514717f71a04b5ce92 --- /dev/null +++ b/build/_deps/googletest-src/googlemock/include/gmock/gmock-generated-function-mockers.h @@ -0,0 +1,752 @@ +// This file was GENERATED by command: +// pump.py gmock-generated-function-mockers.h.pump +// DO NOT EDIT BY HAND!!! + +// Copyright 2007, Google Inc. +// 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 Google Inc. 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 +// OWNER 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. + + +// Google Mock - a framework for writing C++ mock classes. +// +// This file implements function mockers of various arities. + +// GOOGLETEST_CM0002 DO NOT DELETE + +#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_FUNCTION_MOCKERS_H_ +#define GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_FUNCTION_MOCKERS_H_ + +#include +#include + +#include "gmock/gmock-spec-builders.h" +#include "gmock/internal/gmock-internal-utils.h" + +namespace testing { +namespace internal { +// Removes the given pointer; this is a helper for the expectation setter method +// for parameterless matchers. +// +// We want to make sure that the user cannot set a parameterless expectation on +// overloaded methods, including methods which are overloaded on const. Example: +// +// class MockClass { +// MOCK_METHOD0(GetName, string&()); +// MOCK_CONST_METHOD0(GetName, const string&()); +// }; +// +// TEST() { +// // This should be an error, as it's not clear which overload is expected. +// EXPECT_CALL(mock, GetName).WillOnce(ReturnRef(value)); +// } +// +// Here are the generated expectation-setter methods: +// +// class MockClass { +// // Overload 1 +// MockSpec gmock_GetName() { ... } +// // Overload 2. Declared const so that the compiler will generate an +// // error when trying to resolve between this and overload 4 in +// // 'gmock_GetName(WithoutMatchers(), nullptr)'. +// MockSpec gmock_GetName( +// const WithoutMatchers&, const Function*) const { +// // Removes const from this, calls overload 1 +// return AdjustConstness_(this)->gmock_GetName(); +// } +// +// // Overload 3 +// const string& gmock_GetName() const { ... } +// // Overload 4 +// MockSpec gmock_GetName( +// const WithoutMatchers&, const Function*) const { +// // Does not remove const, calls overload 3 +// return AdjustConstness_const(this)->gmock_GetName(); +// } +// } +// +template +const MockType* AdjustConstness_const(const MockType* mock) { + return mock; +} + +// Removes const from and returns the given pointer; this is a helper for the +// expectation setter method for parameterless matchers. +template +MockType* AdjustConstness_(const MockType* mock) { + return const_cast(mock); +} + +} // namespace internal + +// The style guide prohibits "using" statements in a namespace scope +// inside a header file. However, the FunctionMocker class template +// is meant to be defined in the ::testing namespace. The following +// line is just a trick for working around a bug in MSVC 8.0, which +// cannot handle it if we define FunctionMocker in ::testing. +using internal::FunctionMocker; + +// GMOCK_RESULT_(tn, F) expands to the result type of function type F. +// We define this as a variadic macro in case F contains unprotected +// commas (the same reason that we use variadic macros in other places +// in this file). +// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!! +#define GMOCK_RESULT_(tn, ...) \ + tn ::testing::internal::Function<__VA_ARGS__>::Result + +// The type of argument N of the given function type. +// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!! +#define GMOCK_ARG_(tn, N, ...) \ + tn ::testing::internal::Function<__VA_ARGS__>::template Arg::type + +// The matcher type for argument N of the given function type. +// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!! +#define GMOCK_MATCHER_(tn, N, ...) \ + const ::testing::Matcher& + +// The variable for mocking the given method. +// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!! +#define GMOCK_MOCKER_(arity, constness, Method) \ + GTEST_CONCAT_TOKEN_(gmock##constness##arity##_##Method##_, __LINE__) + +// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!! +#define GMOCK_METHOD0_(tn, constness, ct, Method, ...) \ + static_assert(0 == \ + ::testing::internal::Function<__VA_ARGS__>::ArgumentCount, \ + "MOCK_METHOD must match argument count.");\ + GMOCK_RESULT_(tn, __VA_ARGS__) ct Method( \ + ) constness { \ + GMOCK_MOCKER_(0, constness, Method).SetOwnerAndName(this, #Method); \ + return GMOCK_MOCKER_(0, constness, Method).Invoke(); \ + } \ + ::testing::MockSpec<__VA_ARGS__> \ + gmock_##Method() constness { \ + GMOCK_MOCKER_(0, constness, Method).RegisterOwner(this); \ + return GMOCK_MOCKER_(0, constness, Method).With(); \ + } \ + ::testing::MockSpec<__VA_ARGS__> gmock_##Method( \ + const ::testing::internal::WithoutMatchers&, \ + constness ::testing::internal::Function<__VA_ARGS__>* ) const { \ + return ::testing::internal::AdjustConstness_##constness(this)-> \ + gmock_##Method(); \ + } \ + mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(0, constness, \ + Method) + +// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!! +#define GMOCK_METHOD1_(tn, constness, ct, Method, ...) \ + static_assert(1 == \ + ::testing::internal::Function<__VA_ARGS__>::ArgumentCount, \ + "MOCK_METHOD must match argument count.");\ + GMOCK_RESULT_(tn, __VA_ARGS__) ct Method( \ + GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1) constness { \ + GMOCK_MOCKER_(1, constness, Method).SetOwnerAndName(this, #Method); \ + return GMOCK_MOCKER_(1, constness, \ + Method).Invoke(::std::forward(gmock_a1)); \ + } \ + ::testing::MockSpec<__VA_ARGS__> \ + gmock_##Method(GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1) constness { \ + GMOCK_MOCKER_(1, constness, Method).RegisterOwner(this); \ + return GMOCK_MOCKER_(1, constness, Method).With(gmock_a1); \ + } \ + ::testing::MockSpec<__VA_ARGS__> gmock_##Method( \ + const ::testing::internal::WithoutMatchers&, \ + constness ::testing::internal::Function<__VA_ARGS__>* ) const { \ + return ::testing::internal::AdjustConstness_##constness(this)-> \ + gmock_##Method(::testing::A()); \ + } \ + mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(1, constness, \ + Method) + +// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!! +#define GMOCK_METHOD2_(tn, constness, ct, Method, ...) \ + static_assert(2 == \ + ::testing::internal::Function<__VA_ARGS__>::ArgumentCount, \ + "MOCK_METHOD must match argument count.");\ + GMOCK_RESULT_(tn, __VA_ARGS__) ct Method( \ + GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1, GMOCK_ARG_(tn, 2, \ + __VA_ARGS__) gmock_a2) constness { \ + GMOCK_MOCKER_(2, constness, Method).SetOwnerAndName(this, #Method); \ + return GMOCK_MOCKER_(2, constness, \ + Method).Invoke(::std::forward(gmock_a1), \ + ::std::forward(gmock_a2)); \ + } \ + ::testing::MockSpec<__VA_ARGS__> \ + gmock_##Method(GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1, \ + GMOCK_MATCHER_(tn, 2, __VA_ARGS__) gmock_a2) constness { \ + GMOCK_MOCKER_(2, constness, Method).RegisterOwner(this); \ + return GMOCK_MOCKER_(2, constness, Method).With(gmock_a1, gmock_a2); \ + } \ + ::testing::MockSpec<__VA_ARGS__> gmock_##Method( \ + const ::testing::internal::WithoutMatchers&, \ + constness ::testing::internal::Function<__VA_ARGS__>* ) const { \ + return ::testing::internal::AdjustConstness_##constness(this)-> \ + gmock_##Method(::testing::A(), \ + ::testing::A()); \ + } \ + mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(2, constness, \ + Method) + +// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!! +#define GMOCK_METHOD3_(tn, constness, ct, Method, ...) \ + static_assert(3 == \ + ::testing::internal::Function<__VA_ARGS__>::ArgumentCount, \ + "MOCK_METHOD must match argument count.");\ + GMOCK_RESULT_(tn, __VA_ARGS__) ct Method( \ + GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1, GMOCK_ARG_(tn, 2, \ + __VA_ARGS__) gmock_a2, GMOCK_ARG_(tn, 3, \ + __VA_ARGS__) gmock_a3) constness { \ + GMOCK_MOCKER_(3, constness, Method).SetOwnerAndName(this, #Method); \ + return GMOCK_MOCKER_(3, constness, \ + Method).Invoke(::std::forward(gmock_a1), \ + ::std::forward(gmock_a2), \ + ::std::forward(gmock_a3)); \ + } \ + ::testing::MockSpec<__VA_ARGS__> \ + gmock_##Method(GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1, \ + GMOCK_MATCHER_(tn, 2, __VA_ARGS__) gmock_a2, \ + GMOCK_MATCHER_(tn, 3, __VA_ARGS__) gmock_a3) constness { \ + GMOCK_MOCKER_(3, constness, Method).RegisterOwner(this); \ + return GMOCK_MOCKER_(3, constness, Method).With(gmock_a1, gmock_a2, \ + gmock_a3); \ + } \ + ::testing::MockSpec<__VA_ARGS__> gmock_##Method( \ + const ::testing::internal::WithoutMatchers&, \ + constness ::testing::internal::Function<__VA_ARGS__>* ) const { \ + return ::testing::internal::AdjustConstness_##constness(this)-> \ + gmock_##Method(::testing::A(), \ + ::testing::A(), \ + ::testing::A()); \ + } \ + mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(3, constness, \ + Method) + +// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!! +#define GMOCK_METHOD4_(tn, constness, ct, Method, ...) \ + static_assert(4 == \ + ::testing::internal::Function<__VA_ARGS__>::ArgumentCount, \ + "MOCK_METHOD must match argument count.");\ + GMOCK_RESULT_(tn, __VA_ARGS__) ct Method( \ + GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1, GMOCK_ARG_(tn, 2, \ + __VA_ARGS__) gmock_a2, GMOCK_ARG_(tn, 3, __VA_ARGS__) gmock_a3, \ + GMOCK_ARG_(tn, 4, __VA_ARGS__) gmock_a4) constness { \ + GMOCK_MOCKER_(4, constness, Method).SetOwnerAndName(this, #Method); \ + return GMOCK_MOCKER_(4, constness, \ + Method).Invoke(::std::forward(gmock_a1), \ + ::std::forward(gmock_a2), \ + ::std::forward(gmock_a3), \ + ::std::forward(gmock_a4)); \ + } \ + ::testing::MockSpec<__VA_ARGS__> \ + gmock_##Method(GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1, \ + GMOCK_MATCHER_(tn, 2, __VA_ARGS__) gmock_a2, \ + GMOCK_MATCHER_(tn, 3, __VA_ARGS__) gmock_a3, \ + GMOCK_MATCHER_(tn, 4, __VA_ARGS__) gmock_a4) constness { \ + GMOCK_MOCKER_(4, constness, Method).RegisterOwner(this); \ + return GMOCK_MOCKER_(4, constness, Method).With(gmock_a1, gmock_a2, \ + gmock_a3, gmock_a4); \ + } \ + ::testing::MockSpec<__VA_ARGS__> gmock_##Method( \ + const ::testing::internal::WithoutMatchers&, \ + constness ::testing::internal::Function<__VA_ARGS__>* ) const { \ + return ::testing::internal::AdjustConstness_##constness(this)-> \ + gmock_##Method(::testing::A(), \ + ::testing::A(), \ + ::testing::A(), \ + ::testing::A()); \ + } \ + mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(4, constness, \ + Method) + +// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!! +#define GMOCK_METHOD5_(tn, constness, ct, Method, ...) \ + static_assert(5 == \ + ::testing::internal::Function<__VA_ARGS__>::ArgumentCount, \ + "MOCK_METHOD must match argument count.");\ + GMOCK_RESULT_(tn, __VA_ARGS__) ct Method( \ + GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1, GMOCK_ARG_(tn, 2, \ + __VA_ARGS__) gmock_a2, GMOCK_ARG_(tn, 3, __VA_ARGS__) gmock_a3, \ + GMOCK_ARG_(tn, 4, __VA_ARGS__) gmock_a4, GMOCK_ARG_(tn, 5, \ + __VA_ARGS__) gmock_a5) constness { \ + GMOCK_MOCKER_(5, constness, Method).SetOwnerAndName(this, #Method); \ + return GMOCK_MOCKER_(5, constness, \ + Method).Invoke(::std::forward(gmock_a1), \ + ::std::forward(gmock_a2), \ + ::std::forward(gmock_a3), \ + ::std::forward(gmock_a4), \ + ::std::forward(gmock_a5)); \ + } \ + ::testing::MockSpec<__VA_ARGS__> \ + gmock_##Method(GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1, \ + GMOCK_MATCHER_(tn, 2, __VA_ARGS__) gmock_a2, \ + GMOCK_MATCHER_(tn, 3, __VA_ARGS__) gmock_a3, \ + GMOCK_MATCHER_(tn, 4, __VA_ARGS__) gmock_a4, \ + GMOCK_MATCHER_(tn, 5, __VA_ARGS__) gmock_a5) constness { \ + GMOCK_MOCKER_(5, constness, Method).RegisterOwner(this); \ + return GMOCK_MOCKER_(5, constness, Method).With(gmock_a1, gmock_a2, \ + gmock_a3, gmock_a4, gmock_a5); \ + } \ + ::testing::MockSpec<__VA_ARGS__> gmock_##Method( \ + const ::testing::internal::WithoutMatchers&, \ + constness ::testing::internal::Function<__VA_ARGS__>* ) const { \ + return ::testing::internal::AdjustConstness_##constness(this)-> \ + gmock_##Method(::testing::A(), \ + ::testing::A(), \ + ::testing::A(), \ + ::testing::A(), \ + ::testing::A()); \ + } \ + mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(5, constness, \ + Method) + +// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!! +#define GMOCK_METHOD6_(tn, constness, ct, Method, ...) \ + static_assert(6 == \ + ::testing::internal::Function<__VA_ARGS__>::ArgumentCount, \ + "MOCK_METHOD must match argument count.");\ + GMOCK_RESULT_(tn, __VA_ARGS__) ct Method( \ + GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1, GMOCK_ARG_(tn, 2, \ + __VA_ARGS__) gmock_a2, GMOCK_ARG_(tn, 3, __VA_ARGS__) gmock_a3, \ + GMOCK_ARG_(tn, 4, __VA_ARGS__) gmock_a4, GMOCK_ARG_(tn, 5, \ + __VA_ARGS__) gmock_a5, GMOCK_ARG_(tn, 6, \ + __VA_ARGS__) gmock_a6) constness { \ + GMOCK_MOCKER_(6, constness, Method).SetOwnerAndName(this, #Method); \ + return GMOCK_MOCKER_(6, constness, \ + Method).Invoke(::std::forward(gmock_a1), \ + ::std::forward(gmock_a2), \ + ::std::forward(gmock_a3), \ + ::std::forward(gmock_a4), \ + ::std::forward(gmock_a5), \ + ::std::forward(gmock_a6)); \ + } \ + ::testing::MockSpec<__VA_ARGS__> \ + gmock_##Method(GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1, \ + GMOCK_MATCHER_(tn, 2, __VA_ARGS__) gmock_a2, \ + GMOCK_MATCHER_(tn, 3, __VA_ARGS__) gmock_a3, \ + GMOCK_MATCHER_(tn, 4, __VA_ARGS__) gmock_a4, \ + GMOCK_MATCHER_(tn, 5, __VA_ARGS__) gmock_a5, \ + GMOCK_MATCHER_(tn, 6, __VA_ARGS__) gmock_a6) constness { \ + GMOCK_MOCKER_(6, constness, Method).RegisterOwner(this); \ + return GMOCK_MOCKER_(6, constness, Method).With(gmock_a1, gmock_a2, \ + gmock_a3, gmock_a4, gmock_a5, gmock_a6); \ + } \ + ::testing::MockSpec<__VA_ARGS__> gmock_##Method( \ + const ::testing::internal::WithoutMatchers&, \ + constness ::testing::internal::Function<__VA_ARGS__>* ) const { \ + return ::testing::internal::AdjustConstness_##constness(this)-> \ + gmock_##Method(::testing::A(), \ + ::testing::A(), \ + ::testing::A(), \ + ::testing::A(), \ + ::testing::A(), \ + ::testing::A()); \ + } \ + mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(6, constness, \ + Method) + +// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!! +#define GMOCK_METHOD7_(tn, constness, ct, Method, ...) \ + static_assert(7 == \ + ::testing::internal::Function<__VA_ARGS__>::ArgumentCount, \ + "MOCK_METHOD must match argument count.");\ + GMOCK_RESULT_(tn, __VA_ARGS__) ct Method( \ + GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1, GMOCK_ARG_(tn, 2, \ + __VA_ARGS__) gmock_a2, GMOCK_ARG_(tn, 3, __VA_ARGS__) gmock_a3, \ + GMOCK_ARG_(tn, 4, __VA_ARGS__) gmock_a4, GMOCK_ARG_(tn, 5, \ + __VA_ARGS__) gmock_a5, GMOCK_ARG_(tn, 6, __VA_ARGS__) gmock_a6, \ + GMOCK_ARG_(tn, 7, __VA_ARGS__) gmock_a7) constness { \ + GMOCK_MOCKER_(7, constness, Method).SetOwnerAndName(this, #Method); \ + return GMOCK_MOCKER_(7, constness, \ + Method).Invoke(::std::forward(gmock_a1), \ + ::std::forward(gmock_a2), \ + ::std::forward(gmock_a3), \ + ::std::forward(gmock_a4), \ + ::std::forward(gmock_a5), \ + ::std::forward(gmock_a6), \ + ::std::forward(gmock_a7)); \ + } \ + ::testing::MockSpec<__VA_ARGS__> \ + gmock_##Method(GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1, \ + GMOCK_MATCHER_(tn, 2, __VA_ARGS__) gmock_a2, \ + GMOCK_MATCHER_(tn, 3, __VA_ARGS__) gmock_a3, \ + GMOCK_MATCHER_(tn, 4, __VA_ARGS__) gmock_a4, \ + GMOCK_MATCHER_(tn, 5, __VA_ARGS__) gmock_a5, \ + GMOCK_MATCHER_(tn, 6, __VA_ARGS__) gmock_a6, \ + GMOCK_MATCHER_(tn, 7, __VA_ARGS__) gmock_a7) constness { \ + GMOCK_MOCKER_(7, constness, Method).RegisterOwner(this); \ + return GMOCK_MOCKER_(7, constness, Method).With(gmock_a1, gmock_a2, \ + gmock_a3, gmock_a4, gmock_a5, gmock_a6, gmock_a7); \ + } \ + ::testing::MockSpec<__VA_ARGS__> gmock_##Method( \ + const ::testing::internal::WithoutMatchers&, \ + constness ::testing::internal::Function<__VA_ARGS__>* ) const { \ + return ::testing::internal::AdjustConstness_##constness(this)-> \ + gmock_##Method(::testing::A(), \ + ::testing::A(), \ + ::testing::A(), \ + ::testing::A(), \ + ::testing::A(), \ + ::testing::A(), \ + ::testing::A()); \ + } \ + mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(7, constness, \ + Method) + +// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!! +#define GMOCK_METHOD8_(tn, constness, ct, Method, ...) \ + static_assert(8 == \ + ::testing::internal::Function<__VA_ARGS__>::ArgumentCount, \ + "MOCK_METHOD must match argument count.");\ + GMOCK_RESULT_(tn, __VA_ARGS__) ct Method( \ + GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1, GMOCK_ARG_(tn, 2, \ + __VA_ARGS__) gmock_a2, GMOCK_ARG_(tn, 3, __VA_ARGS__) gmock_a3, \ + GMOCK_ARG_(tn, 4, __VA_ARGS__) gmock_a4, GMOCK_ARG_(tn, 5, \ + __VA_ARGS__) gmock_a5, GMOCK_ARG_(tn, 6, __VA_ARGS__) gmock_a6, \ + GMOCK_ARG_(tn, 7, __VA_ARGS__) gmock_a7, GMOCK_ARG_(tn, 8, \ + __VA_ARGS__) gmock_a8) constness { \ + GMOCK_MOCKER_(8, constness, Method).SetOwnerAndName(this, #Method); \ + return GMOCK_MOCKER_(8, constness, \ + Method).Invoke(::std::forward(gmock_a1), \ + ::std::forward(gmock_a2), \ + ::std::forward(gmock_a3), \ + ::std::forward(gmock_a4), \ + ::std::forward(gmock_a5), \ + ::std::forward(gmock_a6), \ + ::std::forward(gmock_a7), \ + ::std::forward(gmock_a8)); \ + } \ + ::testing::MockSpec<__VA_ARGS__> \ + gmock_##Method(GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1, \ + GMOCK_MATCHER_(tn, 2, __VA_ARGS__) gmock_a2, \ + GMOCK_MATCHER_(tn, 3, __VA_ARGS__) gmock_a3, \ + GMOCK_MATCHER_(tn, 4, __VA_ARGS__) gmock_a4, \ + GMOCK_MATCHER_(tn, 5, __VA_ARGS__) gmock_a5, \ + GMOCK_MATCHER_(tn, 6, __VA_ARGS__) gmock_a6, \ + GMOCK_MATCHER_(tn, 7, __VA_ARGS__) gmock_a7, \ + GMOCK_MATCHER_(tn, 8, __VA_ARGS__) gmock_a8) constness { \ + GMOCK_MOCKER_(8, constness, Method).RegisterOwner(this); \ + return GMOCK_MOCKER_(8, constness, Method).With(gmock_a1, gmock_a2, \ + gmock_a3, gmock_a4, gmock_a5, gmock_a6, gmock_a7, gmock_a8); \ + } \ + ::testing::MockSpec<__VA_ARGS__> gmock_##Method( \ + const ::testing::internal::WithoutMatchers&, \ + constness ::testing::internal::Function<__VA_ARGS__>* ) const { \ + return ::testing::internal::AdjustConstness_##constness(this)-> \ + gmock_##Method(::testing::A(), \ + ::testing::A(), \ + ::testing::A(), \ + ::testing::A(), \ + ::testing::A(), \ + ::testing::A(), \ + ::testing::A(), \ + ::testing::A()); \ + } \ + mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(8, constness, \ + Method) + +// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!! +#define GMOCK_METHOD9_(tn, constness, ct, Method, ...) \ + static_assert(9 == \ + ::testing::internal::Function<__VA_ARGS__>::ArgumentCount, \ + "MOCK_METHOD must match argument count.");\ + GMOCK_RESULT_(tn, __VA_ARGS__) ct Method( \ + GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1, GMOCK_ARG_(tn, 2, \ + __VA_ARGS__) gmock_a2, GMOCK_ARG_(tn, 3, __VA_ARGS__) gmock_a3, \ + GMOCK_ARG_(tn, 4, __VA_ARGS__) gmock_a4, GMOCK_ARG_(tn, 5, \ + __VA_ARGS__) gmock_a5, GMOCK_ARG_(tn, 6, __VA_ARGS__) gmock_a6, \ + GMOCK_ARG_(tn, 7, __VA_ARGS__) gmock_a7, GMOCK_ARG_(tn, 8, \ + __VA_ARGS__) gmock_a8, GMOCK_ARG_(tn, 9, \ + __VA_ARGS__) gmock_a9) constness { \ + GMOCK_MOCKER_(9, constness, Method).SetOwnerAndName(this, #Method); \ + return GMOCK_MOCKER_(9, constness, \ + Method).Invoke(::std::forward(gmock_a1), \ + ::std::forward(gmock_a2), \ + ::std::forward(gmock_a3), \ + ::std::forward(gmock_a4), \ + ::std::forward(gmock_a5), \ + ::std::forward(gmock_a6), \ + ::std::forward(gmock_a7), \ + ::std::forward(gmock_a8), \ + ::std::forward(gmock_a9)); \ + } \ + ::testing::MockSpec<__VA_ARGS__> \ + gmock_##Method(GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1, \ + GMOCK_MATCHER_(tn, 2, __VA_ARGS__) gmock_a2, \ + GMOCK_MATCHER_(tn, 3, __VA_ARGS__) gmock_a3, \ + GMOCK_MATCHER_(tn, 4, __VA_ARGS__) gmock_a4, \ + GMOCK_MATCHER_(tn, 5, __VA_ARGS__) gmock_a5, \ + GMOCK_MATCHER_(tn, 6, __VA_ARGS__) gmock_a6, \ + GMOCK_MATCHER_(tn, 7, __VA_ARGS__) gmock_a7, \ + GMOCK_MATCHER_(tn, 8, __VA_ARGS__) gmock_a8, \ + GMOCK_MATCHER_(tn, 9, __VA_ARGS__) gmock_a9) constness { \ + GMOCK_MOCKER_(9, constness, Method).RegisterOwner(this); \ + return GMOCK_MOCKER_(9, constness, Method).With(gmock_a1, gmock_a2, \ + gmock_a3, gmock_a4, gmock_a5, gmock_a6, gmock_a7, gmock_a8, \ + gmock_a9); \ + } \ + ::testing::MockSpec<__VA_ARGS__> gmock_##Method( \ + const ::testing::internal::WithoutMatchers&, \ + constness ::testing::internal::Function<__VA_ARGS__>* ) const { \ + return ::testing::internal::AdjustConstness_##constness(this)-> \ + gmock_##Method(::testing::A(), \ + ::testing::A(), \ + ::testing::A(), \ + ::testing::A(), \ + ::testing::A(), \ + ::testing::A(), \ + ::testing::A(), \ + ::testing::A(), \ + ::testing::A()); \ + } \ + mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(9, constness, \ + Method) + +// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!! +#define GMOCK_METHOD10_(tn, constness, ct, Method, ...) \ + static_assert(10 == \ + ::testing::internal::Function<__VA_ARGS__>::ArgumentCount, \ + "MOCK_METHOD must match argument count.");\ + GMOCK_RESULT_(tn, __VA_ARGS__) ct Method( \ + GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1, GMOCK_ARG_(tn, 2, \ + __VA_ARGS__) gmock_a2, GMOCK_ARG_(tn, 3, __VA_ARGS__) gmock_a3, \ + GMOCK_ARG_(tn, 4, __VA_ARGS__) gmock_a4, GMOCK_ARG_(tn, 5, \ + __VA_ARGS__) gmock_a5, GMOCK_ARG_(tn, 6, __VA_ARGS__) gmock_a6, \ + GMOCK_ARG_(tn, 7, __VA_ARGS__) gmock_a7, GMOCK_ARG_(tn, 8, \ + __VA_ARGS__) gmock_a8, GMOCK_ARG_(tn, 9, __VA_ARGS__) gmock_a9, \ + GMOCK_ARG_(tn, 10, __VA_ARGS__) gmock_a10) constness { \ + GMOCK_MOCKER_(10, constness, Method).SetOwnerAndName(this, #Method); \ + return GMOCK_MOCKER_(10, constness, \ + Method).Invoke(::std::forward(gmock_a1), \ + ::std::forward(gmock_a2), \ + ::std::forward(gmock_a3), \ + ::std::forward(gmock_a4), \ + ::std::forward(gmock_a5), \ + ::std::forward(gmock_a6), \ + ::std::forward(gmock_a7), \ + ::std::forward(gmock_a8), \ + ::std::forward(gmock_a9), \ + ::std::forward(gmock_a10)); \ + } \ + ::testing::MockSpec<__VA_ARGS__> \ + gmock_##Method(GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1, \ + GMOCK_MATCHER_(tn, 2, __VA_ARGS__) gmock_a2, \ + GMOCK_MATCHER_(tn, 3, __VA_ARGS__) gmock_a3, \ + GMOCK_MATCHER_(tn, 4, __VA_ARGS__) gmock_a4, \ + GMOCK_MATCHER_(tn, 5, __VA_ARGS__) gmock_a5, \ + GMOCK_MATCHER_(tn, 6, __VA_ARGS__) gmock_a6, \ + GMOCK_MATCHER_(tn, 7, __VA_ARGS__) gmock_a7, \ + GMOCK_MATCHER_(tn, 8, __VA_ARGS__) gmock_a8, \ + GMOCK_MATCHER_(tn, 9, __VA_ARGS__) gmock_a9, \ + GMOCK_MATCHER_(tn, 10, \ + __VA_ARGS__) gmock_a10) constness { \ + GMOCK_MOCKER_(10, constness, Method).RegisterOwner(this); \ + return GMOCK_MOCKER_(10, constness, Method).With(gmock_a1, gmock_a2, \ + gmock_a3, gmock_a4, gmock_a5, gmock_a6, gmock_a7, gmock_a8, gmock_a9, \ + gmock_a10); \ + } \ + ::testing::MockSpec<__VA_ARGS__> gmock_##Method( \ + const ::testing::internal::WithoutMatchers&, \ + constness ::testing::internal::Function<__VA_ARGS__>* ) const { \ + return ::testing::internal::AdjustConstness_##constness(this)-> \ + gmock_##Method(::testing::A(), \ + ::testing::A(), \ + ::testing::A(), \ + ::testing::A(), \ + ::testing::A(), \ + ::testing::A(), \ + ::testing::A(), \ + ::testing::A(), \ + ::testing::A(), \ + ::testing::A()); \ + } \ + mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(10, constness, \ + Method) + +#define MOCK_METHOD0(m, ...) GMOCK_METHOD0_(, , , m, __VA_ARGS__) +#define MOCK_METHOD1(m, ...) GMOCK_METHOD1_(, , , m, __VA_ARGS__) +#define MOCK_METHOD2(m, ...) GMOCK_METHOD2_(, , , m, __VA_ARGS__) +#define MOCK_METHOD3(m, ...) GMOCK_METHOD3_(, , , m, __VA_ARGS__) +#define MOCK_METHOD4(m, ...) GMOCK_METHOD4_(, , , m, __VA_ARGS__) +#define MOCK_METHOD5(m, ...) GMOCK_METHOD5_(, , , m, __VA_ARGS__) +#define MOCK_METHOD6(m, ...) GMOCK_METHOD6_(, , , m, __VA_ARGS__) +#define MOCK_METHOD7(m, ...) GMOCK_METHOD7_(, , , m, __VA_ARGS__) +#define MOCK_METHOD8(m, ...) GMOCK_METHOD8_(, , , m, __VA_ARGS__) +#define MOCK_METHOD9(m, ...) GMOCK_METHOD9_(, , , m, __VA_ARGS__) +#define MOCK_METHOD10(m, ...) GMOCK_METHOD10_(, , , m, __VA_ARGS__) + +#define MOCK_CONST_METHOD0(m, ...) GMOCK_METHOD0_(, const, , m, __VA_ARGS__) +#define MOCK_CONST_METHOD1(m, ...) GMOCK_METHOD1_(, const, , m, __VA_ARGS__) +#define MOCK_CONST_METHOD2(m, ...) GMOCK_METHOD2_(, const, , m, __VA_ARGS__) +#define MOCK_CONST_METHOD3(m, ...) GMOCK_METHOD3_(, const, , m, __VA_ARGS__) +#define MOCK_CONST_METHOD4(m, ...) GMOCK_METHOD4_(, const, , m, __VA_ARGS__) +#define MOCK_CONST_METHOD5(m, ...) GMOCK_METHOD5_(, const, , m, __VA_ARGS__) +#define MOCK_CONST_METHOD6(m, ...) GMOCK_METHOD6_(, const, , m, __VA_ARGS__) +#define MOCK_CONST_METHOD7(m, ...) GMOCK_METHOD7_(, const, , m, __VA_ARGS__) +#define MOCK_CONST_METHOD8(m, ...) GMOCK_METHOD8_(, const, , m, __VA_ARGS__) +#define MOCK_CONST_METHOD9(m, ...) GMOCK_METHOD9_(, const, , m, __VA_ARGS__) +#define MOCK_CONST_METHOD10(m, ...) GMOCK_METHOD10_(, const, , m, __VA_ARGS__) + +#define MOCK_METHOD0_T(m, ...) GMOCK_METHOD0_(typename, , , m, __VA_ARGS__) +#define MOCK_METHOD1_T(m, ...) GMOCK_METHOD1_(typename, , , m, __VA_ARGS__) +#define MOCK_METHOD2_T(m, ...) GMOCK_METHOD2_(typename, , , m, __VA_ARGS__) +#define MOCK_METHOD3_T(m, ...) GMOCK_METHOD3_(typename, , , m, __VA_ARGS__) +#define MOCK_METHOD4_T(m, ...) GMOCK_METHOD4_(typename, , , m, __VA_ARGS__) +#define MOCK_METHOD5_T(m, ...) GMOCK_METHOD5_(typename, , , m, __VA_ARGS__) +#define MOCK_METHOD6_T(m, ...) GMOCK_METHOD6_(typename, , , m, __VA_ARGS__) +#define MOCK_METHOD7_T(m, ...) GMOCK_METHOD7_(typename, , , m, __VA_ARGS__) +#define MOCK_METHOD8_T(m, ...) GMOCK_METHOD8_(typename, , , m, __VA_ARGS__) +#define MOCK_METHOD9_T(m, ...) GMOCK_METHOD9_(typename, , , m, __VA_ARGS__) +#define MOCK_METHOD10_T(m, ...) GMOCK_METHOD10_(typename, , , m, __VA_ARGS__) + +#define MOCK_CONST_METHOD0_T(m, ...) \ + GMOCK_METHOD0_(typename, const, , m, __VA_ARGS__) +#define MOCK_CONST_METHOD1_T(m, ...) \ + GMOCK_METHOD1_(typename, const, , m, __VA_ARGS__) +#define MOCK_CONST_METHOD2_T(m, ...) \ + GMOCK_METHOD2_(typename, const, , m, __VA_ARGS__) +#define MOCK_CONST_METHOD3_T(m, ...) \ + GMOCK_METHOD3_(typename, const, , m, __VA_ARGS__) +#define MOCK_CONST_METHOD4_T(m, ...) \ + GMOCK_METHOD4_(typename, const, , m, __VA_ARGS__) +#define MOCK_CONST_METHOD5_T(m, ...) \ + GMOCK_METHOD5_(typename, const, , m, __VA_ARGS__) +#define MOCK_CONST_METHOD6_T(m, ...) \ + GMOCK_METHOD6_(typename, const, , m, __VA_ARGS__) +#define MOCK_CONST_METHOD7_T(m, ...) \ + GMOCK_METHOD7_(typename, const, , m, __VA_ARGS__) +#define MOCK_CONST_METHOD8_T(m, ...) \ + GMOCK_METHOD8_(typename, const, , m, __VA_ARGS__) +#define MOCK_CONST_METHOD9_T(m, ...) \ + GMOCK_METHOD9_(typename, const, , m, __VA_ARGS__) +#define MOCK_CONST_METHOD10_T(m, ...) \ + GMOCK_METHOD10_(typename, const, , m, __VA_ARGS__) + +#define MOCK_METHOD0_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD0_(, , ct, m, __VA_ARGS__) +#define MOCK_METHOD1_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD1_(, , ct, m, __VA_ARGS__) +#define MOCK_METHOD2_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD2_(, , ct, m, __VA_ARGS__) +#define MOCK_METHOD3_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD3_(, , ct, m, __VA_ARGS__) +#define MOCK_METHOD4_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD4_(, , ct, m, __VA_ARGS__) +#define MOCK_METHOD5_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD5_(, , ct, m, __VA_ARGS__) +#define MOCK_METHOD6_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD6_(, , ct, m, __VA_ARGS__) +#define MOCK_METHOD7_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD7_(, , ct, m, __VA_ARGS__) +#define MOCK_METHOD8_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD8_(, , ct, m, __VA_ARGS__) +#define MOCK_METHOD9_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD9_(, , ct, m, __VA_ARGS__) +#define MOCK_METHOD10_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD10_(, , ct, m, __VA_ARGS__) + +#define MOCK_CONST_METHOD0_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD0_(, const, ct, m, __VA_ARGS__) +#define MOCK_CONST_METHOD1_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD1_(, const, ct, m, __VA_ARGS__) +#define MOCK_CONST_METHOD2_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD2_(, const, ct, m, __VA_ARGS__) +#define MOCK_CONST_METHOD3_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD3_(, const, ct, m, __VA_ARGS__) +#define MOCK_CONST_METHOD4_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD4_(, const, ct, m, __VA_ARGS__) +#define MOCK_CONST_METHOD5_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD5_(, const, ct, m, __VA_ARGS__) +#define MOCK_CONST_METHOD6_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD6_(, const, ct, m, __VA_ARGS__) +#define MOCK_CONST_METHOD7_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD7_(, const, ct, m, __VA_ARGS__) +#define MOCK_CONST_METHOD8_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD8_(, const, ct, m, __VA_ARGS__) +#define MOCK_CONST_METHOD9_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD9_(, const, ct, m, __VA_ARGS__) +#define MOCK_CONST_METHOD10_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD10_(, const, ct, m, __VA_ARGS__) + +#define MOCK_METHOD0_T_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD0_(typename, , ct, m, __VA_ARGS__) +#define MOCK_METHOD1_T_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD1_(typename, , ct, m, __VA_ARGS__) +#define MOCK_METHOD2_T_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD2_(typename, , ct, m, __VA_ARGS__) +#define MOCK_METHOD3_T_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD3_(typename, , ct, m, __VA_ARGS__) +#define MOCK_METHOD4_T_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD4_(typename, , ct, m, __VA_ARGS__) +#define MOCK_METHOD5_T_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD5_(typename, , ct, m, __VA_ARGS__) +#define MOCK_METHOD6_T_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD6_(typename, , ct, m, __VA_ARGS__) +#define MOCK_METHOD7_T_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD7_(typename, , ct, m, __VA_ARGS__) +#define MOCK_METHOD8_T_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD8_(typename, , ct, m, __VA_ARGS__) +#define MOCK_METHOD9_T_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD9_(typename, , ct, m, __VA_ARGS__) +#define MOCK_METHOD10_T_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD10_(typename, , ct, m, __VA_ARGS__) + +#define MOCK_CONST_METHOD0_T_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD0_(typename, const, ct, m, __VA_ARGS__) +#define MOCK_CONST_METHOD1_T_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD1_(typename, const, ct, m, __VA_ARGS__) +#define MOCK_CONST_METHOD2_T_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD2_(typename, const, ct, m, __VA_ARGS__) +#define MOCK_CONST_METHOD3_T_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD3_(typename, const, ct, m, __VA_ARGS__) +#define MOCK_CONST_METHOD4_T_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD4_(typename, const, ct, m, __VA_ARGS__) +#define MOCK_CONST_METHOD5_T_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD5_(typename, const, ct, m, __VA_ARGS__) +#define MOCK_CONST_METHOD6_T_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD6_(typename, const, ct, m, __VA_ARGS__) +#define MOCK_CONST_METHOD7_T_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD7_(typename, const, ct, m, __VA_ARGS__) +#define MOCK_CONST_METHOD8_T_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD8_(typename, const, ct, m, __VA_ARGS__) +#define MOCK_CONST_METHOD9_T_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD9_(typename, const, ct, m, __VA_ARGS__) +#define MOCK_CONST_METHOD10_T_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD10_(typename, const, ct, m, __VA_ARGS__) + +} // namespace testing + +#endif // GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_FUNCTION_MOCKERS_H_ diff --git a/build/_deps/googletest-src/googlemock/include/gmock/gmock-generated-function-mockers.h.pump b/build/_deps/googletest-src/googlemock/include/gmock/gmock-generated-function-mockers.h.pump new file mode 100644 index 0000000000000000000000000000000000000000..a56e132f348706701dc1cfafa51bd0e61ed400e1 --- /dev/null +++ b/build/_deps/googletest-src/googlemock/include/gmock/gmock-generated-function-mockers.h.pump @@ -0,0 +1,227 @@ +$$ -*- mode: c++; -*- +$$ This is a Pump source file. Please use Pump to convert +$$ it to gmock-generated-function-mockers.h. +$$ +$var n = 10 $$ The maximum arity we support. +// Copyright 2007, Google Inc. +// 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 Google Inc. 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 +// OWNER 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. + + +// Google Mock - a framework for writing C++ mock classes. +// +// This file implements function mockers of various arities. + +// GOOGLETEST_CM0002 DO NOT DELETE + +#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_FUNCTION_MOCKERS_H_ +#define GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_FUNCTION_MOCKERS_H_ + +#include +#include + +#include "gmock/gmock-spec-builders.h" +#include "gmock/internal/gmock-internal-utils.h" + +namespace testing { +namespace internal { + +$range i 0..n +// Removes the given pointer; this is a helper for the expectation setter method +// for parameterless matchers. +// +// We want to make sure that the user cannot set a parameterless expectation on +// overloaded methods, including methods which are overloaded on const. Example: +// +// class MockClass { +// MOCK_METHOD0(GetName, string&()); +// MOCK_CONST_METHOD0(GetName, const string&()); +// }; +// +// TEST() { +// // This should be an error, as it's not clear which overload is expected. +// EXPECT_CALL(mock, GetName).WillOnce(ReturnRef(value)); +// } +// +// Here are the generated expectation-setter methods: +// +// class MockClass { +// // Overload 1 +// MockSpec gmock_GetName() { ... } +// // Overload 2. Declared const so that the compiler will generate an +// // error when trying to resolve between this and overload 4 in +// // 'gmock_GetName(WithoutMatchers(), nullptr)'. +// MockSpec gmock_GetName( +// const WithoutMatchers&, const Function*) const { +// // Removes const from this, calls overload 1 +// return AdjustConstness_(this)->gmock_GetName(); +// } +// +// // Overload 3 +// const string& gmock_GetName() const { ... } +// // Overload 4 +// MockSpec gmock_GetName( +// const WithoutMatchers&, const Function*) const { +// // Does not remove const, calls overload 3 +// return AdjustConstness_const(this)->gmock_GetName(); +// } +// } +// +template +const MockType* AdjustConstness_const(const MockType* mock) { + return mock; +} + +// Removes const from and returns the given pointer; this is a helper for the +// expectation setter method for parameterless matchers. +template +MockType* AdjustConstness_(const MockType* mock) { + return const_cast(mock); +} + +} // namespace internal + +// The style guide prohibits "using" statements in a namespace scope +// inside a header file. However, the FunctionMocker class template +// is meant to be defined in the ::testing namespace. The following +// line is just a trick for working around a bug in MSVC 8.0, which +// cannot handle it if we define FunctionMocker in ::testing. +using internal::FunctionMocker; + +// GMOCK_RESULT_(tn, F) expands to the result type of function type F. +// We define this as a variadic macro in case F contains unprotected +// commas (the same reason that we use variadic macros in other places +// in this file). +// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!! +#define GMOCK_RESULT_(tn, ...) \ + tn ::testing::internal::Function<__VA_ARGS__>::Result + +// The type of argument N of the given function type. +// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!! +#define GMOCK_ARG_(tn, N, ...) \ + tn ::testing::internal::Function<__VA_ARGS__>::template Arg::type + +// The matcher type for argument N of the given function type. +// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!! +#define GMOCK_MATCHER_(tn, N, ...) \ + const ::testing::Matcher& + +// The variable for mocking the given method. +// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!! +#define GMOCK_MOCKER_(arity, constness, Method) \ + GTEST_CONCAT_TOKEN_(gmock##constness##arity##_##Method##_, __LINE__) + + +$for i [[ +$range j 1..i +$var arg_as = [[$for j, [[GMOCK_ARG_(tn, $j, __VA_ARGS__) gmock_a$j]]]] +$var as = [[$for j, \ + [[::std::forward(gmock_a$j)]]]] +$var matcher_arg_as = [[$for j, \ + [[GMOCK_MATCHER_(tn, $j, __VA_ARGS__) gmock_a$j]]]] +$var matcher_as = [[$for j, [[gmock_a$j]]]] +$var anything_matchers = [[$for j, \ + [[::testing::A()]]]] +// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!! +#define GMOCK_METHOD$i[[]]_(tn, constness, ct, Method, ...) \ + static_assert($i == ::testing::internal::Function<__VA_ARGS__>::ArgumentCount, "MOCK_METHOD must match argument count.");\ + GMOCK_RESULT_(tn, __VA_ARGS__) ct Method( \ + $arg_as) constness { \ + GMOCK_MOCKER_($i, constness, Method).SetOwnerAndName(this, #Method); \ + return GMOCK_MOCKER_($i, constness, Method).Invoke($as); \ + } \ + ::testing::MockSpec<__VA_ARGS__> \ + gmock_##Method($matcher_arg_as) constness { \ + GMOCK_MOCKER_($i, constness, Method).RegisterOwner(this); \ + return GMOCK_MOCKER_($i, constness, Method).With($matcher_as); \ + } \ + ::testing::MockSpec<__VA_ARGS__> gmock_##Method( \ + const ::testing::internal::WithoutMatchers&, \ + constness ::testing::internal::Function<__VA_ARGS__>* ) const { \ + return ::testing::internal::AdjustConstness_##constness(this)-> \ + gmock_##Method($anything_matchers); \ + } \ + mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_($i, constness, Method) + + +]] +$for i [[ +#define MOCK_METHOD$i(m, ...) GMOCK_METHOD$i[[]]_(, , , m, __VA_ARGS__) + +]] + + +$for i [[ +#define MOCK_CONST_METHOD$i(m, ...) GMOCK_METHOD$i[[]]_(, const, , m, __VA_ARGS__) + +]] + + +$for i [[ +#define MOCK_METHOD$i[[]]_T(m, ...) GMOCK_METHOD$i[[]]_(typename, , , m, __VA_ARGS__) + +]] + + +$for i [[ +#define MOCK_CONST_METHOD$i[[]]_T(m, ...) \ + GMOCK_METHOD$i[[]]_(typename, const, , m, __VA_ARGS__) + +]] + + +$for i [[ +#define MOCK_METHOD$i[[]]_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD$i[[]]_(, , ct, m, __VA_ARGS__) + +]] + + +$for i [[ +#define MOCK_CONST_METHOD$i[[]]_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD$i[[]]_(, const, ct, m, __VA_ARGS__) + +]] + + +$for i [[ +#define MOCK_METHOD$i[[]]_T_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD$i[[]]_(typename, , ct, m, __VA_ARGS__) + +]] + + +$for i [[ +#define MOCK_CONST_METHOD$i[[]]_T_WITH_CALLTYPE(ct, m, ...) \ + GMOCK_METHOD$i[[]]_(typename, const, ct, m, __VA_ARGS__) + +]] + +} // namespace testing + +#endif // GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_FUNCTION_MOCKERS_H_ diff --git a/build/_deps/googletest-src/googlemock/include/gmock/gmock-generated-matchers.h b/build/_deps/googletest-src/googlemock/include/gmock/gmock-generated-matchers.h new file mode 100644 index 0000000000000000000000000000000000000000..690a57f1c9fd7560b604815ea830c1aa9d44bf49 --- /dev/null +++ b/build/_deps/googletest-src/googlemock/include/gmock/gmock-generated-matchers.h @@ -0,0 +1,1097 @@ +// This file was GENERATED by command: +// pump.py gmock-generated-matchers.h.pump +// DO NOT EDIT BY HAND!!! + +// Copyright 2008, Google Inc. +// 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 Google Inc. 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 +// OWNER 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. + +// Google Mock - a framework for writing C++ mock classes. +// +// This file implements some commonly used variadic matchers. + +// GOOGLETEST_CM0002 DO NOT DELETE + +#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_MATCHERS_H_ +#define GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_MATCHERS_H_ + +#include +#include +#include +#include +#include +#include "gmock/gmock-matchers.h" + +// The MATCHER* family of macros can be used in a namespace scope to +// define custom matchers easily. +// +// Basic Usage +// =========== +// +// The syntax +// +// MATCHER(name, description_string) { statements; } +// +// defines a matcher with the given name that executes the statements, +// which must return a bool to indicate if the match succeeds. Inside +// the statements, you can refer to the value being matched by 'arg', +// and refer to its type by 'arg_type'. +// +// The description string documents what the matcher does, and is used +// to generate the failure message when the match fails. Since a +// MATCHER() is usually defined in a header file shared by multiple +// C++ source files, we require the description to be a C-string +// literal to avoid possible side effects. It can be empty, in which +// case we'll use the sequence of words in the matcher name as the +// description. +// +// For example: +// +// MATCHER(IsEven, "") { return (arg % 2) == 0; } +// +// allows you to write +// +// // Expects mock_foo.Bar(n) to be called where n is even. +// EXPECT_CALL(mock_foo, Bar(IsEven())); +// +// or, +// +// // Verifies that the value of some_expression is even. +// EXPECT_THAT(some_expression, IsEven()); +// +// If the above assertion fails, it will print something like: +// +// Value of: some_expression +// Expected: is even +// Actual: 7 +// +// where the description "is even" is automatically calculated from the +// matcher name IsEven. +// +// Argument Type +// ============= +// +// Note that the type of the value being matched (arg_type) is +// determined by the context in which you use the matcher and is +// supplied to you by the compiler, so you don't need to worry about +// declaring it (nor can you). This allows the matcher to be +// polymorphic. For example, IsEven() can be used to match any type +// where the value of "(arg % 2) == 0" can be implicitly converted to +// a bool. In the "Bar(IsEven())" example above, if method Bar() +// takes an int, 'arg_type' will be int; if it takes an unsigned long, +// 'arg_type' will be unsigned long; and so on. +// +// Parameterizing Matchers +// ======================= +// +// Sometimes you'll want to parameterize the matcher. For that you +// can use another macro: +// +// MATCHER_P(name, param_name, description_string) { statements; } +// +// For example: +// +// MATCHER_P(HasAbsoluteValue, value, "") { return abs(arg) == value; } +// +// will allow you to write: +// +// EXPECT_THAT(Blah("a"), HasAbsoluteValue(n)); +// +// which may lead to this message (assuming n is 10): +// +// Value of: Blah("a") +// Expected: has absolute value 10 +// Actual: -9 +// +// Note that both the matcher description and its parameter are +// printed, making the message human-friendly. +// +// In the matcher definition body, you can write 'foo_type' to +// reference the type of a parameter named 'foo'. For example, in the +// body of MATCHER_P(HasAbsoluteValue, value) above, you can write +// 'value_type' to refer to the type of 'value'. +// +// We also provide MATCHER_P2, MATCHER_P3, ..., up to MATCHER_P10 to +// support multi-parameter matchers. +// +// Describing Parameterized Matchers +// ================================= +// +// The last argument to MATCHER*() is a string-typed expression. The +// expression can reference all of the matcher's parameters and a +// special bool-typed variable named 'negation'. When 'negation' is +// false, the expression should evaluate to the matcher's description; +// otherwise it should evaluate to the description of the negation of +// the matcher. For example, +// +// using testing::PrintToString; +// +// MATCHER_P2(InClosedRange, low, hi, +// std::string(negation ? "is not" : "is") + " in range [" + +// PrintToString(low) + ", " + PrintToString(hi) + "]") { +// return low <= arg && arg <= hi; +// } +// ... +// EXPECT_THAT(3, InClosedRange(4, 6)); +// EXPECT_THAT(3, Not(InClosedRange(2, 4))); +// +// would generate two failures that contain the text: +// +// Expected: is in range [4, 6] +// ... +// Expected: is not in range [2, 4] +// +// If you specify "" as the description, the failure message will +// contain the sequence of words in the matcher name followed by the +// parameter values printed as a tuple. For example, +// +// MATCHER_P2(InClosedRange, low, hi, "") { ... } +// ... +// EXPECT_THAT(3, InClosedRange(4, 6)); +// EXPECT_THAT(3, Not(InClosedRange(2, 4))); +// +// would generate two failures that contain the text: +// +// Expected: in closed range (4, 6) +// ... +// Expected: not (in closed range (2, 4)) +// +// Types of Matcher Parameters +// =========================== +// +// For the purpose of typing, you can view +// +// MATCHER_Pk(Foo, p1, ..., pk, description_string) { ... } +// +// as shorthand for +// +// template +// FooMatcherPk +// Foo(p1_type p1, ..., pk_type pk) { ... } +// +// When you write Foo(v1, ..., vk), the compiler infers the types of +// the parameters v1, ..., and vk for you. If you are not happy with +// the result of the type inference, you can specify the types by +// explicitly instantiating the template, as in Foo(5, +// false). As said earlier, you don't get to (or need to) specify +// 'arg_type' as that's determined by the context in which the matcher +// is used. You can assign the result of expression Foo(p1, ..., pk) +// to a variable of type FooMatcherPk. This +// can be useful when composing matchers. +// +// While you can instantiate a matcher template with reference types, +// passing the parameters by pointer usually makes your code more +// readable. If, however, you still want to pass a parameter by +// reference, be aware that in the failure message generated by the +// matcher you will see the value of the referenced object but not its +// address. +// +// Explaining Match Results +// ======================== +// +// Sometimes the matcher description alone isn't enough to explain why +// the match has failed or succeeded. For example, when expecting a +// long string, it can be very helpful to also print the diff between +// the expected string and the actual one. To achieve that, you can +// optionally stream additional information to a special variable +// named result_listener, whose type is a pointer to class +// MatchResultListener: +// +// MATCHER_P(EqualsLongString, str, "") { +// if (arg == str) return true; +// +// *result_listener << "the difference: " +/// << DiffStrings(str, arg); +// return false; +// } +// +// Overloading Matchers +// ==================== +// +// You can overload matchers with different numbers of parameters: +// +// MATCHER_P(Blah, a, description_string1) { ... } +// MATCHER_P2(Blah, a, b, description_string2) { ... } +// +// Caveats +// ======= +// +// When defining a new matcher, you should also consider implementing +// MatcherInterface or using MakePolymorphicMatcher(). These +// approaches require more work than the MATCHER* macros, but also +// give you more control on the types of the value being matched and +// the matcher parameters, which may leads to better compiler error +// messages when the matcher is used wrong. They also allow +// overloading matchers based on parameter types (as opposed to just +// based on the number of parameters). +// +// MATCHER*() can only be used in a namespace scope as templates cannot be +// declared inside of a local class. +// +// More Information +// ================ +// +// To learn more about using these macros, please search for 'MATCHER' +// on +// https://github.com/google/googletest/blob/master/googlemock/docs/cook_book.md + +#define MATCHER(name, description)\ + class name##Matcher {\ + public:\ + template \ + class gmock_Impl : public ::testing::MatcherInterface<\ + GTEST_REFERENCE_TO_CONST_(arg_type)> {\ + public:\ + gmock_Impl()\ + {}\ + virtual bool MatchAndExplain(\ + GTEST_REFERENCE_TO_CONST_(arg_type) arg,\ + ::testing::MatchResultListener* result_listener) const;\ + virtual void DescribeTo(::std::ostream* gmock_os) const {\ + *gmock_os << FormatDescription(false);\ + }\ + virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\ + *gmock_os << FormatDescription(true);\ + }\ + private:\ + ::std::string FormatDescription(bool negation) const {\ + ::std::string gmock_description = (description);\ + if (!gmock_description.empty()) {\ + return gmock_description;\ + }\ + return ::testing::internal::FormatMatcherDescription(\ + negation, #name, \ + ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\ + ::std::tuple<>()));\ + }\ + };\ + template \ + operator ::testing::Matcher() const {\ + return ::testing::Matcher(\ + new gmock_Impl());\ + }\ + name##Matcher() {\ + }\ + private:\ + };\ + inline name##Matcher name() {\ + return name##Matcher();\ + }\ + template \ + bool name##Matcher::gmock_Impl::MatchAndExplain(\ + GTEST_REFERENCE_TO_CONST_(arg_type) arg,\ + ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\ + const + +#define MATCHER_P(name, p0, description)\ + template \ + class name##MatcherP {\ + public:\ + template \ + class gmock_Impl : public ::testing::MatcherInterface<\ + GTEST_REFERENCE_TO_CONST_(arg_type)> {\ + public:\ + explicit gmock_Impl(p0##_type gmock_p0)\ + : p0(::std::move(gmock_p0)) {}\ + virtual bool MatchAndExplain(\ + GTEST_REFERENCE_TO_CONST_(arg_type) arg,\ + ::testing::MatchResultListener* result_listener) const;\ + virtual void DescribeTo(::std::ostream* gmock_os) const {\ + *gmock_os << FormatDescription(false);\ + }\ + virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\ + *gmock_os << FormatDescription(true);\ + }\ + p0##_type const p0;\ + private:\ + ::std::string FormatDescription(bool negation) const {\ + ::std::string gmock_description = (description);\ + if (!gmock_description.empty()) {\ + return gmock_description;\ + }\ + return ::testing::internal::FormatMatcherDescription(\ + negation, #name, \ + ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\ + ::std::tuple(p0)));\ + }\ + };\ + template \ + operator ::testing::Matcher() const {\ + return ::testing::Matcher(\ + new gmock_Impl(p0));\ + }\ + explicit name##MatcherP(p0##_type gmock_p0) : p0(::std::move(gmock_p0)) {\ + }\ + p0##_type const p0;\ + private:\ + };\ + template \ + inline name##MatcherP name(p0##_type p0) {\ + return name##MatcherP(p0);\ + }\ + template \ + template \ + bool name##MatcherP::gmock_Impl::MatchAndExplain(\ + GTEST_REFERENCE_TO_CONST_(arg_type) arg,\ + ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\ + const + +#define MATCHER_P2(name, p0, p1, description)\ + template \ + class name##MatcherP2 {\ + public:\ + template \ + class gmock_Impl : public ::testing::MatcherInterface<\ + GTEST_REFERENCE_TO_CONST_(arg_type)> {\ + public:\ + gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1)\ + : p0(::std::move(gmock_p0)), p1(::std::move(gmock_p1)) {}\ + virtual bool MatchAndExplain(\ + GTEST_REFERENCE_TO_CONST_(arg_type) arg,\ + ::testing::MatchResultListener* result_listener) const;\ + virtual void DescribeTo(::std::ostream* gmock_os) const {\ + *gmock_os << FormatDescription(false);\ + }\ + virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\ + *gmock_os << FormatDescription(true);\ + }\ + p0##_type const p0;\ + p1##_type const p1;\ + private:\ + ::std::string FormatDescription(bool negation) const {\ + ::std::string gmock_description = (description);\ + if (!gmock_description.empty()) {\ + return gmock_description;\ + }\ + return ::testing::internal::FormatMatcherDescription(\ + negation, #name, \ + ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\ + ::std::tuple(p0, p1)));\ + }\ + };\ + template \ + operator ::testing::Matcher() const {\ + return ::testing::Matcher(\ + new gmock_Impl(p0, p1));\ + }\ + name##MatcherP2(p0##_type gmock_p0, \ + p1##_type gmock_p1) : p0(::std::move(gmock_p0)), \ + p1(::std::move(gmock_p1)) {\ + }\ + p0##_type const p0;\ + p1##_type const p1;\ + private:\ + };\ + template \ + inline name##MatcherP2 name(p0##_type p0, \ + p1##_type p1) {\ + return name##MatcherP2(p0, p1);\ + }\ + template \ + template \ + bool name##MatcherP2::gmock_Impl::MatchAndExplain(\ + GTEST_REFERENCE_TO_CONST_(arg_type) arg,\ + ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\ + const + +#define MATCHER_P3(name, p0, p1, p2, description)\ + template \ + class name##MatcherP3 {\ + public:\ + template \ + class gmock_Impl : public ::testing::MatcherInterface<\ + GTEST_REFERENCE_TO_CONST_(arg_type)> {\ + public:\ + gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2)\ + : p0(::std::move(gmock_p0)), p1(::std::move(gmock_p1)), \ + p2(::std::move(gmock_p2)) {}\ + virtual bool MatchAndExplain(\ + GTEST_REFERENCE_TO_CONST_(arg_type) arg,\ + ::testing::MatchResultListener* result_listener) const;\ + virtual void DescribeTo(::std::ostream* gmock_os) const {\ + *gmock_os << FormatDescription(false);\ + }\ + virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\ + *gmock_os << FormatDescription(true);\ + }\ + p0##_type const p0;\ + p1##_type const p1;\ + p2##_type const p2;\ + private:\ + ::std::string FormatDescription(bool negation) const {\ + ::std::string gmock_description = (description);\ + if (!gmock_description.empty()) {\ + return gmock_description;\ + }\ + return ::testing::internal::FormatMatcherDescription(\ + negation, #name, \ + ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\ + ::std::tuple(p0, p1, p2)));\ + }\ + };\ + template \ + operator ::testing::Matcher() const {\ + return ::testing::Matcher(\ + new gmock_Impl(p0, p1, p2));\ + }\ + name##MatcherP3(p0##_type gmock_p0, p1##_type gmock_p1, \ + p2##_type gmock_p2) : p0(::std::move(gmock_p0)), \ + p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)) {\ + }\ + p0##_type const p0;\ + p1##_type const p1;\ + p2##_type const p2;\ + private:\ + };\ + template \ + inline name##MatcherP3 name(p0##_type p0, \ + p1##_type p1, p2##_type p2) {\ + return name##MatcherP3(p0, p1, p2);\ + }\ + template \ + template \ + bool name##MatcherP3::gmock_Impl::MatchAndExplain(\ + GTEST_REFERENCE_TO_CONST_(arg_type) arg,\ + ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\ + const + +#define MATCHER_P4(name, p0, p1, p2, p3, description)\ + template \ + class name##MatcherP4 {\ + public:\ + template \ + class gmock_Impl : public ::testing::MatcherInterface<\ + GTEST_REFERENCE_TO_CONST_(arg_type)> {\ + public:\ + gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \ + p3##_type gmock_p3)\ + : p0(::std::move(gmock_p0)), p1(::std::move(gmock_p1)), \ + p2(::std::move(gmock_p2)), p3(::std::move(gmock_p3)) {}\ + virtual bool MatchAndExplain(\ + GTEST_REFERENCE_TO_CONST_(arg_type) arg,\ + ::testing::MatchResultListener* result_listener) const;\ + virtual void DescribeTo(::std::ostream* gmock_os) const {\ + *gmock_os << FormatDescription(false);\ + }\ + virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\ + *gmock_os << FormatDescription(true);\ + }\ + p0##_type const p0;\ + p1##_type const p1;\ + p2##_type const p2;\ + p3##_type const p3;\ + private:\ + ::std::string FormatDescription(bool negation) const {\ + ::std::string gmock_description = (description);\ + if (!gmock_description.empty()) {\ + return gmock_description;\ + }\ + return ::testing::internal::FormatMatcherDescription(\ + negation, #name, \ + ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\ + ::std::tuple(p0, \ + p1, p2, p3)));\ + }\ + };\ + template \ + operator ::testing::Matcher() const {\ + return ::testing::Matcher(\ + new gmock_Impl(p0, p1, p2, p3));\ + }\ + name##MatcherP4(p0##_type gmock_p0, p1##_type gmock_p1, \ + p2##_type gmock_p2, p3##_type gmock_p3) : p0(::std::move(gmock_p0)), \ + p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)), \ + p3(::std::move(gmock_p3)) {\ + }\ + p0##_type const p0;\ + p1##_type const p1;\ + p2##_type const p2;\ + p3##_type const p3;\ + private:\ + };\ + template \ + inline name##MatcherP4 name(p0##_type p0, p1##_type p1, p2##_type p2, \ + p3##_type p3) {\ + return name##MatcherP4(p0, \ + p1, p2, p3);\ + }\ + template \ + template \ + bool name##MatcherP4::gmock_Impl::MatchAndExplain(\ + GTEST_REFERENCE_TO_CONST_(arg_type) arg,\ + ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\ + const + +#define MATCHER_P5(name, p0, p1, p2, p3, p4, description)\ + template \ + class name##MatcherP5 {\ + public:\ + template \ + class gmock_Impl : public ::testing::MatcherInterface<\ + GTEST_REFERENCE_TO_CONST_(arg_type)> {\ + public:\ + gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \ + p3##_type gmock_p3, p4##_type gmock_p4)\ + : p0(::std::move(gmock_p0)), p1(::std::move(gmock_p1)), \ + p2(::std::move(gmock_p2)), p3(::std::move(gmock_p3)), \ + p4(::std::move(gmock_p4)) {}\ + virtual bool MatchAndExplain(\ + GTEST_REFERENCE_TO_CONST_(arg_type) arg,\ + ::testing::MatchResultListener* result_listener) const;\ + virtual void DescribeTo(::std::ostream* gmock_os) const {\ + *gmock_os << FormatDescription(false);\ + }\ + virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\ + *gmock_os << FormatDescription(true);\ + }\ + p0##_type const p0;\ + p1##_type const p1;\ + p2##_type const p2;\ + p3##_type const p3;\ + p4##_type const p4;\ + private:\ + ::std::string FormatDescription(bool negation) const {\ + ::std::string gmock_description = (description);\ + if (!gmock_description.empty()) {\ + return gmock_description;\ + }\ + return ::testing::internal::FormatMatcherDescription(\ + negation, #name, \ + ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\ + ::std::tuple(p0, p1, p2, p3, p4)));\ + }\ + };\ + template \ + operator ::testing::Matcher() const {\ + return ::testing::Matcher(\ + new gmock_Impl(p0, p1, p2, p3, p4));\ + }\ + name##MatcherP5(p0##_type gmock_p0, p1##_type gmock_p1, \ + p2##_type gmock_p2, p3##_type gmock_p3, \ + p4##_type gmock_p4) : p0(::std::move(gmock_p0)), \ + p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)), \ + p3(::std::move(gmock_p3)), p4(::std::move(gmock_p4)) {\ + }\ + p0##_type const p0;\ + p1##_type const p1;\ + p2##_type const p2;\ + p3##_type const p3;\ + p4##_type const p4;\ + private:\ + };\ + template \ + inline name##MatcherP5 name(p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, \ + p4##_type p4) {\ + return name##MatcherP5(p0, p1, p2, p3, p4);\ + }\ + template \ + template \ + bool name##MatcherP5::gmock_Impl::MatchAndExplain(\ + GTEST_REFERENCE_TO_CONST_(arg_type) arg,\ + ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\ + const + +#define MATCHER_P6(name, p0, p1, p2, p3, p4, p5, description)\ + template \ + class name##MatcherP6 {\ + public:\ + template \ + class gmock_Impl : public ::testing::MatcherInterface<\ + GTEST_REFERENCE_TO_CONST_(arg_type)> {\ + public:\ + gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \ + p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5)\ + : p0(::std::move(gmock_p0)), p1(::std::move(gmock_p1)), \ + p2(::std::move(gmock_p2)), p3(::std::move(gmock_p3)), \ + p4(::std::move(gmock_p4)), p5(::std::move(gmock_p5)) {}\ + virtual bool MatchAndExplain(\ + GTEST_REFERENCE_TO_CONST_(arg_type) arg,\ + ::testing::MatchResultListener* result_listener) const;\ + virtual void DescribeTo(::std::ostream* gmock_os) const {\ + *gmock_os << FormatDescription(false);\ + }\ + virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\ + *gmock_os << FormatDescription(true);\ + }\ + p0##_type const p0;\ + p1##_type const p1;\ + p2##_type const p2;\ + p3##_type const p3;\ + p4##_type const p4;\ + p5##_type const p5;\ + private:\ + ::std::string FormatDescription(bool negation) const {\ + ::std::string gmock_description = (description);\ + if (!gmock_description.empty()) {\ + return gmock_description;\ + }\ + return ::testing::internal::FormatMatcherDescription(\ + negation, #name, \ + ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\ + ::std::tuple(p0, p1, p2, p3, p4, p5)));\ + }\ + };\ + template \ + operator ::testing::Matcher() const {\ + return ::testing::Matcher(\ + new gmock_Impl(p0, p1, p2, p3, p4, p5));\ + }\ + name##MatcherP6(p0##_type gmock_p0, p1##_type gmock_p1, \ + p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \ + p5##_type gmock_p5) : p0(::std::move(gmock_p0)), \ + p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)), \ + p3(::std::move(gmock_p3)), p4(::std::move(gmock_p4)), \ + p5(::std::move(gmock_p5)) {\ + }\ + p0##_type const p0;\ + p1##_type const p1;\ + p2##_type const p2;\ + p3##_type const p3;\ + p4##_type const p4;\ + p5##_type const p5;\ + private:\ + };\ + template \ + inline name##MatcherP6 name(p0##_type p0, p1##_type p1, p2##_type p2, \ + p3##_type p3, p4##_type p4, p5##_type p5) {\ + return name##MatcherP6(p0, p1, p2, p3, p4, p5);\ + }\ + template \ + template \ + bool name##MatcherP6::gmock_Impl::MatchAndExplain(\ + GTEST_REFERENCE_TO_CONST_(arg_type) arg,\ + ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\ + const + +#define MATCHER_P7(name, p0, p1, p2, p3, p4, p5, p6, description)\ + template \ + class name##MatcherP7 {\ + public:\ + template \ + class gmock_Impl : public ::testing::MatcherInterface<\ + GTEST_REFERENCE_TO_CONST_(arg_type)> {\ + public:\ + gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \ + p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \ + p6##_type gmock_p6)\ + : p0(::std::move(gmock_p0)), p1(::std::move(gmock_p1)), \ + p2(::std::move(gmock_p2)), p3(::std::move(gmock_p3)), \ + p4(::std::move(gmock_p4)), p5(::std::move(gmock_p5)), \ + p6(::std::move(gmock_p6)) {}\ + virtual bool MatchAndExplain(\ + GTEST_REFERENCE_TO_CONST_(arg_type) arg,\ + ::testing::MatchResultListener* result_listener) const;\ + virtual void DescribeTo(::std::ostream* gmock_os) const {\ + *gmock_os << FormatDescription(false);\ + }\ + virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\ + *gmock_os << FormatDescription(true);\ + }\ + p0##_type const p0;\ + p1##_type const p1;\ + p2##_type const p2;\ + p3##_type const p3;\ + p4##_type const p4;\ + p5##_type const p5;\ + p6##_type const p6;\ + private:\ + ::std::string FormatDescription(bool negation) const {\ + ::std::string gmock_description = (description);\ + if (!gmock_description.empty()) {\ + return gmock_description;\ + }\ + return ::testing::internal::FormatMatcherDescription(\ + negation, #name, \ + ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\ + ::std::tuple(p0, p1, p2, p3, p4, p5, \ + p6)));\ + }\ + };\ + template \ + operator ::testing::Matcher() const {\ + return ::testing::Matcher(\ + new gmock_Impl(p0, p1, p2, p3, p4, p5, p6));\ + }\ + name##MatcherP7(p0##_type gmock_p0, p1##_type gmock_p1, \ + p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \ + p5##_type gmock_p5, p6##_type gmock_p6) : p0(::std::move(gmock_p0)), \ + p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)), \ + p3(::std::move(gmock_p3)), p4(::std::move(gmock_p4)), \ + p5(::std::move(gmock_p5)), p6(::std::move(gmock_p6)) {\ + }\ + p0##_type const p0;\ + p1##_type const p1;\ + p2##_type const p2;\ + p3##_type const p3;\ + p4##_type const p4;\ + p5##_type const p5;\ + p6##_type const p6;\ + private:\ + };\ + template \ + inline name##MatcherP7 name(p0##_type p0, p1##_type p1, \ + p2##_type p2, p3##_type p3, p4##_type p4, p5##_type p5, \ + p6##_type p6) {\ + return name##MatcherP7(p0, p1, p2, p3, p4, p5, p6);\ + }\ + template \ + template \ + bool name##MatcherP7::gmock_Impl::MatchAndExplain(\ + GTEST_REFERENCE_TO_CONST_(arg_type) arg,\ + ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\ + const + +#define MATCHER_P8(name, p0, p1, p2, p3, p4, p5, p6, p7, description)\ + template \ + class name##MatcherP8 {\ + public:\ + template \ + class gmock_Impl : public ::testing::MatcherInterface<\ + GTEST_REFERENCE_TO_CONST_(arg_type)> {\ + public:\ + gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \ + p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \ + p6##_type gmock_p6, p7##_type gmock_p7)\ + : p0(::std::move(gmock_p0)), p1(::std::move(gmock_p1)), \ + p2(::std::move(gmock_p2)), p3(::std::move(gmock_p3)), \ + p4(::std::move(gmock_p4)), p5(::std::move(gmock_p5)), \ + p6(::std::move(gmock_p6)), p7(::std::move(gmock_p7)) {}\ + virtual bool MatchAndExplain(\ + GTEST_REFERENCE_TO_CONST_(arg_type) arg,\ + ::testing::MatchResultListener* result_listener) const;\ + virtual void DescribeTo(::std::ostream* gmock_os) const {\ + *gmock_os << FormatDescription(false);\ + }\ + virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\ + *gmock_os << FormatDescription(true);\ + }\ + p0##_type const p0;\ + p1##_type const p1;\ + p2##_type const p2;\ + p3##_type const p3;\ + p4##_type const p4;\ + p5##_type const p5;\ + p6##_type const p6;\ + p7##_type const p7;\ + private:\ + ::std::string FormatDescription(bool negation) const {\ + ::std::string gmock_description = (description);\ + if (!gmock_description.empty()) {\ + return gmock_description;\ + }\ + return ::testing::internal::FormatMatcherDescription(\ + negation, #name, \ + ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\ + ::std::tuple(p0, p1, p2, \ + p3, p4, p5, p6, p7)));\ + }\ + };\ + template \ + operator ::testing::Matcher() const {\ + return ::testing::Matcher(\ + new gmock_Impl(p0, p1, p2, p3, p4, p5, p6, p7));\ + }\ + name##MatcherP8(p0##_type gmock_p0, p1##_type gmock_p1, \ + p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \ + p5##_type gmock_p5, p6##_type gmock_p6, \ + p7##_type gmock_p7) : p0(::std::move(gmock_p0)), \ + p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)), \ + p3(::std::move(gmock_p3)), p4(::std::move(gmock_p4)), \ + p5(::std::move(gmock_p5)), p6(::std::move(gmock_p6)), \ + p7(::std::move(gmock_p7)) {\ + }\ + p0##_type const p0;\ + p1##_type const p1;\ + p2##_type const p2;\ + p3##_type const p3;\ + p4##_type const p4;\ + p5##_type const p5;\ + p6##_type const p6;\ + p7##_type const p7;\ + private:\ + };\ + template \ + inline name##MatcherP8 name(p0##_type p0, \ + p1##_type p1, p2##_type p2, p3##_type p3, p4##_type p4, p5##_type p5, \ + p6##_type p6, p7##_type p7) {\ + return name##MatcherP8(p0, p1, p2, p3, p4, p5, \ + p6, p7);\ + }\ + template \ + template \ + bool name##MatcherP8::gmock_Impl::MatchAndExplain(\ + GTEST_REFERENCE_TO_CONST_(arg_type) arg,\ + ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\ + const + +#define MATCHER_P9(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, description)\ + template \ + class name##MatcherP9 {\ + public:\ + template \ + class gmock_Impl : public ::testing::MatcherInterface<\ + GTEST_REFERENCE_TO_CONST_(arg_type)> {\ + public:\ + gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \ + p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \ + p6##_type gmock_p6, p7##_type gmock_p7, p8##_type gmock_p8)\ + : p0(::std::move(gmock_p0)), p1(::std::move(gmock_p1)), \ + p2(::std::move(gmock_p2)), p3(::std::move(gmock_p3)), \ + p4(::std::move(gmock_p4)), p5(::std::move(gmock_p5)), \ + p6(::std::move(gmock_p6)), p7(::std::move(gmock_p7)), \ + p8(::std::move(gmock_p8)) {}\ + virtual bool MatchAndExplain(\ + GTEST_REFERENCE_TO_CONST_(arg_type) arg,\ + ::testing::MatchResultListener* result_listener) const;\ + virtual void DescribeTo(::std::ostream* gmock_os) const {\ + *gmock_os << FormatDescription(false);\ + }\ + virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\ + *gmock_os << FormatDescription(true);\ + }\ + p0##_type const p0;\ + p1##_type const p1;\ + p2##_type const p2;\ + p3##_type const p3;\ + p4##_type const p4;\ + p5##_type const p5;\ + p6##_type const p6;\ + p7##_type const p7;\ + p8##_type const p8;\ + private:\ + ::std::string FormatDescription(bool negation) const {\ + ::std::string gmock_description = (description);\ + if (!gmock_description.empty()) {\ + return gmock_description;\ + }\ + return ::testing::internal::FormatMatcherDescription(\ + negation, #name, \ + ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\ + ::std::tuple(p0, p1, p2, p3, p4, p5, p6, p7, p8)));\ + }\ + };\ + template \ + operator ::testing::Matcher() const {\ + return ::testing::Matcher(\ + new gmock_Impl(p0, p1, p2, p3, p4, p5, p6, p7, p8));\ + }\ + name##MatcherP9(p0##_type gmock_p0, p1##_type gmock_p1, \ + p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \ + p5##_type gmock_p5, p6##_type gmock_p6, p7##_type gmock_p7, \ + p8##_type gmock_p8) : p0(::std::move(gmock_p0)), \ + p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)), \ + p3(::std::move(gmock_p3)), p4(::std::move(gmock_p4)), \ + p5(::std::move(gmock_p5)), p6(::std::move(gmock_p6)), \ + p7(::std::move(gmock_p7)), p8(::std::move(gmock_p8)) {\ + }\ + p0##_type const p0;\ + p1##_type const p1;\ + p2##_type const p2;\ + p3##_type const p3;\ + p4##_type const p4;\ + p5##_type const p5;\ + p6##_type const p6;\ + p7##_type const p7;\ + p8##_type const p8;\ + private:\ + };\ + template \ + inline name##MatcherP9 name(p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, \ + p4##_type p4, p5##_type p5, p6##_type p6, p7##_type p7, \ + p8##_type p8) {\ + return name##MatcherP9(p0, p1, p2, \ + p3, p4, p5, p6, p7, p8);\ + }\ + template \ + template \ + bool name##MatcherP9::gmock_Impl::MatchAndExplain(\ + GTEST_REFERENCE_TO_CONST_(arg_type) arg,\ + ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\ + const + +#define MATCHER_P10(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, description)\ + template \ + class name##MatcherP10 {\ + public:\ + template \ + class gmock_Impl : public ::testing::MatcherInterface<\ + GTEST_REFERENCE_TO_CONST_(arg_type)> {\ + public:\ + gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \ + p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \ + p6##_type gmock_p6, p7##_type gmock_p7, p8##_type gmock_p8, \ + p9##_type gmock_p9)\ + : p0(::std::move(gmock_p0)), p1(::std::move(gmock_p1)), \ + p2(::std::move(gmock_p2)), p3(::std::move(gmock_p3)), \ + p4(::std::move(gmock_p4)), p5(::std::move(gmock_p5)), \ + p6(::std::move(gmock_p6)), p7(::std::move(gmock_p7)), \ + p8(::std::move(gmock_p8)), p9(::std::move(gmock_p9)) {}\ + virtual bool MatchAndExplain(\ + GTEST_REFERENCE_TO_CONST_(arg_type) arg,\ + ::testing::MatchResultListener* result_listener) const;\ + virtual void DescribeTo(::std::ostream* gmock_os) const {\ + *gmock_os << FormatDescription(false);\ + }\ + virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\ + *gmock_os << FormatDescription(true);\ + }\ + p0##_type const p0;\ + p1##_type const p1;\ + p2##_type const p2;\ + p3##_type const p3;\ + p4##_type const p4;\ + p5##_type const p5;\ + p6##_type const p6;\ + p7##_type const p7;\ + p8##_type const p8;\ + p9##_type const p9;\ + private:\ + ::std::string FormatDescription(bool negation) const {\ + ::std::string gmock_description = (description);\ + if (!gmock_description.empty()) {\ + return gmock_description;\ + }\ + return ::testing::internal::FormatMatcherDescription(\ + negation, #name, \ + ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\ + ::std::tuple(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)));\ + }\ + };\ + template \ + operator ::testing::Matcher() const {\ + return ::testing::Matcher(\ + new gmock_Impl(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9));\ + }\ + name##MatcherP10(p0##_type gmock_p0, p1##_type gmock_p1, \ + p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \ + p5##_type gmock_p5, p6##_type gmock_p6, p7##_type gmock_p7, \ + p8##_type gmock_p8, p9##_type gmock_p9) : p0(::std::move(gmock_p0)), \ + p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)), \ + p3(::std::move(gmock_p3)), p4(::std::move(gmock_p4)), \ + p5(::std::move(gmock_p5)), p6(::std::move(gmock_p6)), \ + p7(::std::move(gmock_p7)), p8(::std::move(gmock_p8)), \ + p9(::std::move(gmock_p9)) {\ + }\ + p0##_type const p0;\ + p1##_type const p1;\ + p2##_type const p2;\ + p3##_type const p3;\ + p4##_type const p4;\ + p5##_type const p5;\ + p6##_type const p6;\ + p7##_type const p7;\ + p8##_type const p8;\ + p9##_type const p9;\ + private:\ + };\ + template \ + inline name##MatcherP10 name(p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, \ + p4##_type p4, p5##_type p5, p6##_type p6, p7##_type p7, p8##_type p8, \ + p9##_type p9) {\ + return name##MatcherP10(p0, \ + p1, p2, p3, p4, p5, p6, p7, p8, p9);\ + }\ + template \ + template \ + bool name##MatcherP10::gmock_Impl::MatchAndExplain(\ + GTEST_REFERENCE_TO_CONST_(arg_type) arg,\ + ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\ + const + +#endif // GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_MATCHERS_H_ diff --git a/build/_deps/googletest-src/googlemock/include/gmock/gmock-generated-matchers.h.pump b/build/_deps/googletest-src/googlemock/include/gmock/gmock-generated-matchers.h.pump new file mode 100644 index 0000000000000000000000000000000000000000..ae90917cc38e2dcf556fe5b8034bedf673c4121e --- /dev/null +++ b/build/_deps/googletest-src/googlemock/include/gmock/gmock-generated-matchers.h.pump @@ -0,0 +1,346 @@ +$$ -*- mode: c++; -*- +$$ This is a Pump source file. Please use Pump to convert +$$ it to gmock-generated-matchers.h. +$$ +$var n = 10 $$ The maximum arity we support. +$$ }} This line fixes auto-indentation of the following code in Emacs. +// Copyright 2008, Google Inc. +// 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 Google Inc. 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 +// OWNER 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. + +// Google Mock - a framework for writing C++ mock classes. +// +// This file implements some commonly used variadic matchers. + +// GOOGLETEST_CM0002 DO NOT DELETE + +#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_MATCHERS_H_ +#define GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_MATCHERS_H_ + +#include +#include +#include +#include +#include +#include "gmock/gmock-matchers.h" + +// The MATCHER* family of macros can be used in a namespace scope to +// define custom matchers easily. +// +// Basic Usage +// =========== +// +// The syntax +// +// MATCHER(name, description_string) { statements; } +// +// defines a matcher with the given name that executes the statements, +// which must return a bool to indicate if the match succeeds. Inside +// the statements, you can refer to the value being matched by 'arg', +// and refer to its type by 'arg_type'. +// +// The description string documents what the matcher does, and is used +// to generate the failure message when the match fails. Since a +// MATCHER() is usually defined in a header file shared by multiple +// C++ source files, we require the description to be a C-string +// literal to avoid possible side effects. It can be empty, in which +// case we'll use the sequence of words in the matcher name as the +// description. +// +// For example: +// +// MATCHER(IsEven, "") { return (arg % 2) == 0; } +// +// allows you to write +// +// // Expects mock_foo.Bar(n) to be called where n is even. +// EXPECT_CALL(mock_foo, Bar(IsEven())); +// +// or, +// +// // Verifies that the value of some_expression is even. +// EXPECT_THAT(some_expression, IsEven()); +// +// If the above assertion fails, it will print something like: +// +// Value of: some_expression +// Expected: is even +// Actual: 7 +// +// where the description "is even" is automatically calculated from the +// matcher name IsEven. +// +// Argument Type +// ============= +// +// Note that the type of the value being matched (arg_type) is +// determined by the context in which you use the matcher and is +// supplied to you by the compiler, so you don't need to worry about +// declaring it (nor can you). This allows the matcher to be +// polymorphic. For example, IsEven() can be used to match any type +// where the value of "(arg % 2) == 0" can be implicitly converted to +// a bool. In the "Bar(IsEven())" example above, if method Bar() +// takes an int, 'arg_type' will be int; if it takes an unsigned long, +// 'arg_type' will be unsigned long; and so on. +// +// Parameterizing Matchers +// ======================= +// +// Sometimes you'll want to parameterize the matcher. For that you +// can use another macro: +// +// MATCHER_P(name, param_name, description_string) { statements; } +// +// For example: +// +// MATCHER_P(HasAbsoluteValue, value, "") { return abs(arg) == value; } +// +// will allow you to write: +// +// EXPECT_THAT(Blah("a"), HasAbsoluteValue(n)); +// +// which may lead to this message (assuming n is 10): +// +// Value of: Blah("a") +// Expected: has absolute value 10 +// Actual: -9 +// +// Note that both the matcher description and its parameter are +// printed, making the message human-friendly. +// +// In the matcher definition body, you can write 'foo_type' to +// reference the type of a parameter named 'foo'. For example, in the +// body of MATCHER_P(HasAbsoluteValue, value) above, you can write +// 'value_type' to refer to the type of 'value'. +// +// We also provide MATCHER_P2, MATCHER_P3, ..., up to MATCHER_P$n to +// support multi-parameter matchers. +// +// Describing Parameterized Matchers +// ================================= +// +// The last argument to MATCHER*() is a string-typed expression. The +// expression can reference all of the matcher's parameters and a +// special bool-typed variable named 'negation'. When 'negation' is +// false, the expression should evaluate to the matcher's description; +// otherwise it should evaluate to the description of the negation of +// the matcher. For example, +// +// using testing::PrintToString; +// +// MATCHER_P2(InClosedRange, low, hi, +// std::string(negation ? "is not" : "is") + " in range [" + +// PrintToString(low) + ", " + PrintToString(hi) + "]") { +// return low <= arg && arg <= hi; +// } +// ... +// EXPECT_THAT(3, InClosedRange(4, 6)); +// EXPECT_THAT(3, Not(InClosedRange(2, 4))); +// +// would generate two failures that contain the text: +// +// Expected: is in range [4, 6] +// ... +// Expected: is not in range [2, 4] +// +// If you specify "" as the description, the failure message will +// contain the sequence of words in the matcher name followed by the +// parameter values printed as a tuple. For example, +// +// MATCHER_P2(InClosedRange, low, hi, "") { ... } +// ... +// EXPECT_THAT(3, InClosedRange(4, 6)); +// EXPECT_THAT(3, Not(InClosedRange(2, 4))); +// +// would generate two failures that contain the text: +// +// Expected: in closed range (4, 6) +// ... +// Expected: not (in closed range (2, 4)) +// +// Types of Matcher Parameters +// =========================== +// +// For the purpose of typing, you can view +// +// MATCHER_Pk(Foo, p1, ..., pk, description_string) { ... } +// +// as shorthand for +// +// template +// FooMatcherPk +// Foo(p1_type p1, ..., pk_type pk) { ... } +// +// When you write Foo(v1, ..., vk), the compiler infers the types of +// the parameters v1, ..., and vk for you. If you are not happy with +// the result of the type inference, you can specify the types by +// explicitly instantiating the template, as in Foo(5, +// false). As said earlier, you don't get to (or need to) specify +// 'arg_type' as that's determined by the context in which the matcher +// is used. You can assign the result of expression Foo(p1, ..., pk) +// to a variable of type FooMatcherPk. This +// can be useful when composing matchers. +// +// While you can instantiate a matcher template with reference types, +// passing the parameters by pointer usually makes your code more +// readable. If, however, you still want to pass a parameter by +// reference, be aware that in the failure message generated by the +// matcher you will see the value of the referenced object but not its +// address. +// +// Explaining Match Results +// ======================== +// +// Sometimes the matcher description alone isn't enough to explain why +// the match has failed or succeeded. For example, when expecting a +// long string, it can be very helpful to also print the diff between +// the expected string and the actual one. To achieve that, you can +// optionally stream additional information to a special variable +// named result_listener, whose type is a pointer to class +// MatchResultListener: +// +// MATCHER_P(EqualsLongString, str, "") { +// if (arg == str) return true; +// +// *result_listener << "the difference: " +/// << DiffStrings(str, arg); +// return false; +// } +// +// Overloading Matchers +// ==================== +// +// You can overload matchers with different numbers of parameters: +// +// MATCHER_P(Blah, a, description_string1) { ... } +// MATCHER_P2(Blah, a, b, description_string2) { ... } +// +// Caveats +// ======= +// +// When defining a new matcher, you should also consider implementing +// MatcherInterface or using MakePolymorphicMatcher(). These +// approaches require more work than the MATCHER* macros, but also +// give you more control on the types of the value being matched and +// the matcher parameters, which may leads to better compiler error +// messages when the matcher is used wrong. They also allow +// overloading matchers based on parameter types (as opposed to just +// based on the number of parameters). +// +// MATCHER*() can only be used in a namespace scope as templates cannot be +// declared inside of a local class. +// +// More Information +// ================ +// +// To learn more about using these macros, please search for 'MATCHER' +// on +// https://github.com/google/googletest/blob/master/googlemock/docs/cook_book.md + +$range i 0..n +$for i + +[[ +$var macro_name = [[$if i==0 [[MATCHER]] $elif i==1 [[MATCHER_P]] + $else [[MATCHER_P$i]]]] +$var class_name = [[name##Matcher[[$if i==0 [[]] $elif i==1 [[P]] + $else [[P$i]]]]]] +$range j 0..i-1 +$var template = [[$if i==0 [[]] $else [[ + + template <$for j, [[typename p$j##_type]]>\ +]]]] +$var ctor_param_list = [[$for j, [[p$j##_type gmock_p$j]]]] +$var impl_ctor_param_list = [[$for j, [[p$j##_type gmock_p$j]]]] +$var impl_inits = [[$if i==0 [[]] $else [[ : $for j, [[p$j(::std::move(gmock_p$j))]]]]]] +$var inits = [[$if i==0 [[]] $else [[ : $for j, [[p$j(::std::move(gmock_p$j))]]]]]] +$var params = [[$for j, [[p$j]]]] +$var param_types = [[$if i==0 [[]] $else [[<$for j, [[p$j##_type]]>]]]] +$var param_types_and_names = [[$for j, [[p$j##_type p$j]]]] +$var param_field_decls = [[$for j +[[ + + p$j##_type const p$j;\ +]]]] +$var param_field_decls2 = [[$for j +[[ + + p$j##_type const p$j;\ +]]]] + +#define $macro_name(name$for j [[, p$j]], description)\$template + class $class_name {\ + public:\ + template \ + class gmock_Impl : public ::testing::MatcherInterface<\ + GTEST_REFERENCE_TO_CONST_(arg_type)> {\ + public:\ + [[$if i==1 [[explicit ]]]]gmock_Impl($impl_ctor_param_list)\ + $impl_inits {}\ + virtual bool MatchAndExplain(\ + GTEST_REFERENCE_TO_CONST_(arg_type) arg,\ + ::testing::MatchResultListener* result_listener) const;\ + virtual void DescribeTo(::std::ostream* gmock_os) const {\ + *gmock_os << FormatDescription(false);\ + }\ + virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\ + *gmock_os << FormatDescription(true);\ + }\$param_field_decls + private:\ + ::std::string FormatDescription(bool negation) const {\ + ::std::string gmock_description = (description);\ + if (!gmock_description.empty()) {\ + return gmock_description;\ + }\ + return ::testing::internal::FormatMatcherDescription(\ + negation, #name, \ + ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\ + ::std::tuple<$for j, [[p$j##_type]]>($for j, [[p$j]])));\ + }\ + };\ + template \ + operator ::testing::Matcher() const {\ + return ::testing::Matcher(\ + new gmock_Impl($params));\ + }\ + [[$if i==1 [[explicit ]]]]$class_name($ctor_param_list)$inits {\ + }\$param_field_decls2 + private:\ + };\$template + inline $class_name$param_types name($param_types_and_names) {\ + return $class_name$param_types($params);\ + }\$template + template \ + bool $class_name$param_types::gmock_Impl::MatchAndExplain(\ + GTEST_REFERENCE_TO_CONST_(arg_type) arg,\ + ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\ + const +]] + + +#endif // GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_MATCHERS_H_ diff --git a/build/_deps/googletest-src/googlemock/include/gmock/gmock-matchers.h b/build/_deps/googletest-src/googlemock/include/gmock/gmock-matchers.h new file mode 100644 index 0000000000000000000000000000000000000000..28e188bb8130881858d7b9ee1c14b76c7ddbd5f6 --- /dev/null +++ b/build/_deps/googletest-src/googlemock/include/gmock/gmock-matchers.h @@ -0,0 +1,4568 @@ +// Copyright 2007, Google Inc. +// 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 Google Inc. 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 +// OWNER 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. + + +// Google Mock - a framework for writing C++ mock classes. +// +// This file implements some commonly used argument matchers. More +// matchers can be defined by the user implementing the +// MatcherInterface interface if necessary. +// +// See googletest/include/gtest/gtest-matchers.h for the definition of class +// Matcher, class MatcherInterface, and others. + +// GOOGLETEST_CM0002 DO NOT DELETE + +#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_MATCHERS_H_ +#define GMOCK_INCLUDE_GMOCK_GMOCK_MATCHERS_H_ + +#include +#include +#include +#include +#include +#include +#include // NOLINT +#include +#include +#include +#include +#include +#include "gmock/internal/gmock-internal-utils.h" +#include "gmock/internal/gmock-port.h" +#include "gtest/gtest.h" + +// MSVC warning C5046 is new as of VS2017 version 15.8. +#if defined(_MSC_VER) && _MSC_VER >= 1915 +#define GMOCK_MAYBE_5046_ 5046 +#else +#define GMOCK_MAYBE_5046_ +#endif + +GTEST_DISABLE_MSC_WARNINGS_PUSH_( + 4251 GMOCK_MAYBE_5046_ /* class A needs to have dll-interface to be used by + clients of class B */ + /* Symbol involving type with internal linkage not defined */) + +namespace testing { + +// To implement a matcher Foo for type T, define: +// 1. a class FooMatcherImpl that implements the +// MatcherInterface interface, and +// 2. a factory function that creates a Matcher object from a +// FooMatcherImpl*. +// +// The two-level delegation design makes it possible to allow a user +// to write "v" instead of "Eq(v)" where a Matcher is expected, which +// is impossible if we pass matchers by pointers. It also eases +// ownership management as Matcher objects can now be copied like +// plain values. + +// A match result listener that stores the explanation in a string. +class StringMatchResultListener : public MatchResultListener { + public: + StringMatchResultListener() : MatchResultListener(&ss_) {} + + // Returns the explanation accumulated so far. + std::string str() const { return ss_.str(); } + + // Clears the explanation accumulated so far. + void Clear() { ss_.str(""); } + + private: + ::std::stringstream ss_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(StringMatchResultListener); +}; + +// Anything inside the 'internal' namespace IS INTERNAL IMPLEMENTATION +// and MUST NOT BE USED IN USER CODE!!! +namespace internal { + +// The MatcherCastImpl class template is a helper for implementing +// MatcherCast(). We need this helper in order to partially +// specialize the implementation of MatcherCast() (C++ allows +// class/struct templates to be partially specialized, but not +// function templates.). + +// This general version is used when MatcherCast()'s argument is a +// polymorphic matcher (i.e. something that can be converted to a +// Matcher but is not one yet; for example, Eq(value)) or a value (for +// example, "hello"). +template +class MatcherCastImpl { + public: + static Matcher Cast(const M& polymorphic_matcher_or_value) { + // M can be a polymorphic matcher, in which case we want to use + // its conversion operator to create Matcher. Or it can be a value + // that should be passed to the Matcher's constructor. + // + // We can't call Matcher(polymorphic_matcher_or_value) when M is a + // polymorphic matcher because it'll be ambiguous if T has an implicit + // constructor from M (this usually happens when T has an implicit + // constructor from any type). + // + // It won't work to unconditionally implict_cast + // polymorphic_matcher_or_value to Matcher because it won't trigger + // a user-defined conversion from M to T if one exists (assuming M is + // a value). + return CastImpl(polymorphic_matcher_or_value, + std::is_convertible>{}, + std::is_convertible{}); + } + + private: + template + static Matcher CastImpl(const M& polymorphic_matcher_or_value, + std::true_type /* convertible_to_matcher */, + bool_constant) { + // M is implicitly convertible to Matcher, which means that either + // M is a polymorphic matcher or Matcher has an implicit constructor + // from M. In both cases using the implicit conversion will produce a + // matcher. + // + // Even if T has an implicit constructor from M, it won't be called because + // creating Matcher would require a chain of two user-defined conversions + // (first to create T from M and then to create Matcher from T). + return polymorphic_matcher_or_value; + } + + // M can't be implicitly converted to Matcher, so M isn't a polymorphic + // matcher. It's a value of a type implicitly convertible to T. Use direct + // initialization to create a matcher. + static Matcher CastImpl(const M& value, + std::false_type /* convertible_to_matcher */, + std::true_type /* convertible_to_T */) { + return Matcher(ImplicitCast_(value)); + } + + // M can't be implicitly converted to either Matcher or T. Attempt to use + // polymorphic matcher Eq(value) in this case. + // + // Note that we first attempt to perform an implicit cast on the value and + // only fall back to the polymorphic Eq() matcher afterwards because the + // latter calls bool operator==(const Lhs& lhs, const Rhs& rhs) in the end + // which might be undefined even when Rhs is implicitly convertible to Lhs + // (e.g. std::pair vs. std::pair). + // + // We don't define this method inline as we need the declaration of Eq(). + static Matcher CastImpl(const M& value, + std::false_type /* convertible_to_matcher */, + std::false_type /* convertible_to_T */); +}; + +// This more specialized version is used when MatcherCast()'s argument +// is already a Matcher. This only compiles when type T can be +// statically converted to type U. +template +class MatcherCastImpl > { + public: + static Matcher Cast(const Matcher& source_matcher) { + return Matcher(new Impl(source_matcher)); + } + + private: + class Impl : public MatcherInterface { + public: + explicit Impl(const Matcher& source_matcher) + : source_matcher_(source_matcher) {} + + // We delegate the matching logic to the source matcher. + bool MatchAndExplain(T x, MatchResultListener* listener) const override { + using FromType = typename std::remove_cv::type>::type>::type; + using ToType = typename std::remove_cv::type>::type>::type; + // Do not allow implicitly converting base*/& to derived*/&. + static_assert( + // Do not trigger if only one of them is a pointer. That implies a + // regular conversion and not a down_cast. + (std::is_pointer::type>::value != + std::is_pointer::type>::value) || + std::is_same::value || + !std::is_base_of::value, + "Can't implicitly convert from to "); + + return source_matcher_.MatchAndExplain(static_cast(x), listener); + } + + void DescribeTo(::std::ostream* os) const override { + source_matcher_.DescribeTo(os); + } + + void DescribeNegationTo(::std::ostream* os) const override { + source_matcher_.DescribeNegationTo(os); + } + + private: + const Matcher source_matcher_; + + GTEST_DISALLOW_ASSIGN_(Impl); + }; +}; + +// This even more specialized version is used for efficiently casting +// a matcher to its own type. +template +class MatcherCastImpl > { + public: + static Matcher Cast(const Matcher& matcher) { return matcher; } +}; + +} // namespace internal + +// In order to be safe and clear, casting between different matcher +// types is done explicitly via MatcherCast(m), which takes a +// matcher m and returns a Matcher. It compiles only when T can be +// statically converted to the argument type of m. +template +inline Matcher MatcherCast(const M& matcher) { + return internal::MatcherCastImpl::Cast(matcher); +} + +// Implements SafeMatcherCast(). +// +// FIXME: The intermediate SafeMatcherCastImpl class was introduced as a +// workaround for a compiler bug, and can now be removed. +template +class SafeMatcherCastImpl { + public: + // This overload handles polymorphic matchers and values only since + // monomorphic matchers are handled by the next one. + template + static inline Matcher Cast(const M& polymorphic_matcher_or_value) { + return internal::MatcherCastImpl::Cast(polymorphic_matcher_or_value); + } + + // This overload handles monomorphic matchers. + // + // In general, if type T can be implicitly converted to type U, we can + // safely convert a Matcher to a Matcher (i.e. Matcher is + // contravariant): just keep a copy of the original Matcher, convert the + // argument from type T to U, and then pass it to the underlying Matcher. + // The only exception is when U is a reference and T is not, as the + // underlying Matcher may be interested in the argument's address, which + // is not preserved in the conversion from T to U. + template + static inline Matcher Cast(const Matcher& matcher) { + // Enforce that T can be implicitly converted to U. + GTEST_COMPILE_ASSERT_((std::is_convertible::value), + "T must be implicitly convertible to U"); + // Enforce that we are not converting a non-reference type T to a reference + // type U. + GTEST_COMPILE_ASSERT_( + std::is_reference::value || !std::is_reference::value, + cannot_convert_non_reference_arg_to_reference); + // In case both T and U are arithmetic types, enforce that the + // conversion is not lossy. + typedef GTEST_REMOVE_REFERENCE_AND_CONST_(T) RawT; + typedef GTEST_REMOVE_REFERENCE_AND_CONST_(U) RawU; + const bool kTIsOther = GMOCK_KIND_OF_(RawT) == internal::kOther; + const bool kUIsOther = GMOCK_KIND_OF_(RawU) == internal::kOther; + GTEST_COMPILE_ASSERT_( + kTIsOther || kUIsOther || + (internal::LosslessArithmeticConvertible::value), + conversion_of_arithmetic_types_must_be_lossless); + return MatcherCast(matcher); + } +}; + +template +inline Matcher SafeMatcherCast(const M& polymorphic_matcher) { + return SafeMatcherCastImpl::Cast(polymorphic_matcher); +} + +// A() returns a matcher that matches any value of type T. +template +Matcher A(); + +// Anything inside the 'internal' namespace IS INTERNAL IMPLEMENTATION +// and MUST NOT BE USED IN USER CODE!!! +namespace internal { + +// If the explanation is not empty, prints it to the ostream. +inline void PrintIfNotEmpty(const std::string& explanation, + ::std::ostream* os) { + if (explanation != "" && os != nullptr) { + *os << ", " << explanation; + } +} + +// Returns true if the given type name is easy to read by a human. +// This is used to decide whether printing the type of a value might +// be helpful. +inline bool IsReadableTypeName(const std::string& type_name) { + // We consider a type name readable if it's short or doesn't contain + // a template or function type. + return (type_name.length() <= 20 || + type_name.find_first_of("<(") == std::string::npos); +} + +// Matches the value against the given matcher, prints the value and explains +// the match result to the listener. Returns the match result. +// 'listener' must not be NULL. +// Value cannot be passed by const reference, because some matchers take a +// non-const argument. +template +bool MatchPrintAndExplain(Value& value, const Matcher& matcher, + MatchResultListener* listener) { + if (!listener->IsInterested()) { + // If the listener is not interested, we do not need to construct the + // inner explanation. + return matcher.Matches(value); + } + + StringMatchResultListener inner_listener; + const bool match = matcher.MatchAndExplain(value, &inner_listener); + + UniversalPrint(value, listener->stream()); +#if GTEST_HAS_RTTI + const std::string& type_name = GetTypeName(); + if (IsReadableTypeName(type_name)) + *listener->stream() << " (of type " << type_name << ")"; +#endif + PrintIfNotEmpty(inner_listener.str(), listener->stream()); + + return match; +} + +// An internal helper class for doing compile-time loop on a tuple's +// fields. +template +class TuplePrefix { + public: + // TuplePrefix::Matches(matcher_tuple, value_tuple) returns true + // if and only if the first N fields of matcher_tuple matches + // the first N fields of value_tuple, respectively. + template + static bool Matches(const MatcherTuple& matcher_tuple, + const ValueTuple& value_tuple) { + return TuplePrefix::Matches(matcher_tuple, value_tuple) && + std::get(matcher_tuple).Matches(std::get(value_tuple)); + } + + // TuplePrefix::ExplainMatchFailuresTo(matchers, values, os) + // describes failures in matching the first N fields of matchers + // against the first N fields of values. If there is no failure, + // nothing will be streamed to os. + template + static void ExplainMatchFailuresTo(const MatcherTuple& matchers, + const ValueTuple& values, + ::std::ostream* os) { + // First, describes failures in the first N - 1 fields. + TuplePrefix::ExplainMatchFailuresTo(matchers, values, os); + + // Then describes the failure (if any) in the (N - 1)-th (0-based) + // field. + typename std::tuple_element::type matcher = + std::get(matchers); + typedef typename std::tuple_element::type Value; + const Value& value = std::get(values); + StringMatchResultListener listener; + if (!matcher.MatchAndExplain(value, &listener)) { + *os << " Expected arg #" << N - 1 << ": "; + std::get(matchers).DescribeTo(os); + *os << "\n Actual: "; + // We remove the reference in type Value to prevent the + // universal printer from printing the address of value, which + // isn't interesting to the user most of the time. The + // matcher's MatchAndExplain() method handles the case when + // the address is interesting. + internal::UniversalPrint(value, os); + PrintIfNotEmpty(listener.str(), os); + *os << "\n"; + } + } +}; + +// The base case. +template <> +class TuplePrefix<0> { + public: + template + static bool Matches(const MatcherTuple& /* matcher_tuple */, + const ValueTuple& /* value_tuple */) { + return true; + } + + template + static void ExplainMatchFailuresTo(const MatcherTuple& /* matchers */, + const ValueTuple& /* values */, + ::std::ostream* /* os */) {} +}; + +// TupleMatches(matcher_tuple, value_tuple) returns true if and only if +// all matchers in matcher_tuple match the corresponding fields in +// value_tuple. It is a compiler error if matcher_tuple and +// value_tuple have different number of fields or incompatible field +// types. +template +bool TupleMatches(const MatcherTuple& matcher_tuple, + const ValueTuple& value_tuple) { + // Makes sure that matcher_tuple and value_tuple have the same + // number of fields. + GTEST_COMPILE_ASSERT_(std::tuple_size::value == + std::tuple_size::value, + matcher_and_value_have_different_numbers_of_fields); + return TuplePrefix::value>::Matches(matcher_tuple, + value_tuple); +} + +// Describes failures in matching matchers against values. If there +// is no failure, nothing will be streamed to os. +template +void ExplainMatchFailureTupleTo(const MatcherTuple& matchers, + const ValueTuple& values, + ::std::ostream* os) { + TuplePrefix::value>::ExplainMatchFailuresTo( + matchers, values, os); +} + +// TransformTupleValues and its helper. +// +// TransformTupleValuesHelper hides the internal machinery that +// TransformTupleValues uses to implement a tuple traversal. +template +class TransformTupleValuesHelper { + private: + typedef ::std::tuple_size TupleSize; + + public: + // For each member of tuple 't', taken in order, evaluates '*out++ = f(t)'. + // Returns the final value of 'out' in case the caller needs it. + static OutIter Run(Func f, const Tuple& t, OutIter out) { + return IterateOverTuple()(f, t, out); + } + + private: + template + struct IterateOverTuple { + OutIter operator() (Func f, const Tup& t, OutIter out) const { + *out++ = f(::std::get(t)); + return IterateOverTuple()(f, t, out); + } + }; + template + struct IterateOverTuple { + OutIter operator() (Func /* f */, const Tup& /* t */, OutIter out) const { + return out; + } + }; +}; + +// Successively invokes 'f(element)' on each element of the tuple 't', +// appending each result to the 'out' iterator. Returns the final value +// of 'out'. +template +OutIter TransformTupleValues(Func f, const Tuple& t, OutIter out) { + return TransformTupleValuesHelper::Run(f, t, out); +} + +// Implements A(). +template +class AnyMatcherImpl : public MatcherInterface { + public: + bool MatchAndExplain(const T& /* x */, + MatchResultListener* /* listener */) const override { + return true; + } + void DescribeTo(::std::ostream* os) const override { *os << "is anything"; } + void DescribeNegationTo(::std::ostream* os) const override { + // This is mostly for completeness' safe, as it's not very useful + // to write Not(A()). However we cannot completely rule out + // such a possibility, and it doesn't hurt to be prepared. + *os << "never matches"; + } +}; + +// Implements _, a matcher that matches any value of any +// type. This is a polymorphic matcher, so we need a template type +// conversion operator to make it appearing as a Matcher for any +// type T. +class AnythingMatcher { + public: + template + operator Matcher() const { return A(); } +}; + +// Implements the polymorphic IsNull() matcher, which matches any raw or smart +// pointer that is NULL. +class IsNullMatcher { + public: + template + bool MatchAndExplain(const Pointer& p, + MatchResultListener* /* listener */) const { + return p == nullptr; + } + + void DescribeTo(::std::ostream* os) const { *os << "is NULL"; } + void DescribeNegationTo(::std::ostream* os) const { + *os << "isn't NULL"; + } +}; + +// Implements the polymorphic NotNull() matcher, which matches any raw or smart +// pointer that is not NULL. +class NotNullMatcher { + public: + template + bool MatchAndExplain(const Pointer& p, + MatchResultListener* /* listener */) const { + return p != nullptr; + } + + void DescribeTo(::std::ostream* os) const { *os << "isn't NULL"; } + void DescribeNegationTo(::std::ostream* os) const { + *os << "is NULL"; + } +}; + +// Ref(variable) matches any argument that is a reference to +// 'variable'. This matcher is polymorphic as it can match any +// super type of the type of 'variable'. +// +// The RefMatcher template class implements Ref(variable). It can +// only be instantiated with a reference type. This prevents a user +// from mistakenly using Ref(x) to match a non-reference function +// argument. For example, the following will righteously cause a +// compiler error: +// +// int n; +// Matcher m1 = Ref(n); // This won't compile. +// Matcher m2 = Ref(n); // This will compile. +template +class RefMatcher; + +template +class RefMatcher { + // Google Mock is a generic framework and thus needs to support + // mocking any function types, including those that take non-const + // reference arguments. Therefore the template parameter T (and + // Super below) can be instantiated to either a const type or a + // non-const type. + public: + // RefMatcher() takes a T& instead of const T&, as we want the + // compiler to catch using Ref(const_value) as a matcher for a + // non-const reference. + explicit RefMatcher(T& x) : object_(x) {} // NOLINT + + template + operator Matcher() const { + // By passing object_ (type T&) to Impl(), which expects a Super&, + // we make sure that Super is a super type of T. In particular, + // this catches using Ref(const_value) as a matcher for a + // non-const reference, as you cannot implicitly convert a const + // reference to a non-const reference. + return MakeMatcher(new Impl(object_)); + } + + private: + template + class Impl : public MatcherInterface { + public: + explicit Impl(Super& x) : object_(x) {} // NOLINT + + // MatchAndExplain() takes a Super& (as opposed to const Super&) + // in order to match the interface MatcherInterface. + bool MatchAndExplain(Super& x, + MatchResultListener* listener) const override { + *listener << "which is located @" << static_cast(&x); + return &x == &object_; + } + + void DescribeTo(::std::ostream* os) const override { + *os << "references the variable "; + UniversalPrinter::Print(object_, os); + } + + void DescribeNegationTo(::std::ostream* os) const override { + *os << "does not reference the variable "; + UniversalPrinter::Print(object_, os); + } + + private: + const Super& object_; + + GTEST_DISALLOW_ASSIGN_(Impl); + }; + + T& object_; + + GTEST_DISALLOW_ASSIGN_(RefMatcher); +}; + +// Polymorphic helper functions for narrow and wide string matchers. +inline bool CaseInsensitiveCStringEquals(const char* lhs, const char* rhs) { + return String::CaseInsensitiveCStringEquals(lhs, rhs); +} + +inline bool CaseInsensitiveCStringEquals(const wchar_t* lhs, + const wchar_t* rhs) { + return String::CaseInsensitiveWideCStringEquals(lhs, rhs); +} + +// String comparison for narrow or wide strings that can have embedded NUL +// characters. +template +bool CaseInsensitiveStringEquals(const StringType& s1, + const StringType& s2) { + // Are the heads equal? + if (!CaseInsensitiveCStringEquals(s1.c_str(), s2.c_str())) { + return false; + } + + // Skip the equal heads. + const typename StringType::value_type nul = 0; + const size_t i1 = s1.find(nul), i2 = s2.find(nul); + + // Are we at the end of either s1 or s2? + if (i1 == StringType::npos || i2 == StringType::npos) { + return i1 == i2; + } + + // Are the tails equal? + return CaseInsensitiveStringEquals(s1.substr(i1 + 1), s2.substr(i2 + 1)); +} + +// String matchers. + +// Implements equality-based string matchers like StrEq, StrCaseNe, and etc. +template +class StrEqualityMatcher { + public: + StrEqualityMatcher(const StringType& str, bool expect_eq, + bool case_sensitive) + : string_(str), expect_eq_(expect_eq), case_sensitive_(case_sensitive) {} + +#if GTEST_HAS_ABSL + bool MatchAndExplain(const absl::string_view& s, + MatchResultListener* listener) const { + // This should fail to compile if absl::string_view is used with wide + // strings. + const StringType& str = std::string(s); + return MatchAndExplain(str, listener); + } +#endif // GTEST_HAS_ABSL + + // Accepts pointer types, particularly: + // const char* + // char* + // const wchar_t* + // wchar_t* + template + bool MatchAndExplain(CharType* s, MatchResultListener* listener) const { + if (s == nullptr) { + return !expect_eq_; + } + return MatchAndExplain(StringType(s), listener); + } + + // Matches anything that can convert to StringType. + // + // This is a template, not just a plain function with const StringType&, + // because absl::string_view has some interfering non-explicit constructors. + template + bool MatchAndExplain(const MatcheeStringType& s, + MatchResultListener* /* listener */) const { + const StringType& s2(s); + const bool eq = case_sensitive_ ? s2 == string_ : + CaseInsensitiveStringEquals(s2, string_); + return expect_eq_ == eq; + } + + void DescribeTo(::std::ostream* os) const { + DescribeToHelper(expect_eq_, os); + } + + void DescribeNegationTo(::std::ostream* os) const { + DescribeToHelper(!expect_eq_, os); + } + + private: + void DescribeToHelper(bool expect_eq, ::std::ostream* os) const { + *os << (expect_eq ? "is " : "isn't "); + *os << "equal to "; + if (!case_sensitive_) { + *os << "(ignoring case) "; + } + UniversalPrint(string_, os); + } + + const StringType string_; + const bool expect_eq_; + const bool case_sensitive_; + + GTEST_DISALLOW_ASSIGN_(StrEqualityMatcher); +}; + +// Implements the polymorphic HasSubstr(substring) matcher, which +// can be used as a Matcher as long as T can be converted to a +// string. +template +class HasSubstrMatcher { + public: + explicit HasSubstrMatcher(const StringType& substring) + : substring_(substring) {} + +#if GTEST_HAS_ABSL + bool MatchAndExplain(const absl::string_view& s, + MatchResultListener* listener) const { + // This should fail to compile if absl::string_view is used with wide + // strings. + const StringType& str = std::string(s); + return MatchAndExplain(str, listener); + } +#endif // GTEST_HAS_ABSL + + // Accepts pointer types, particularly: + // const char* + // char* + // const wchar_t* + // wchar_t* + template + bool MatchAndExplain(CharType* s, MatchResultListener* listener) const { + return s != nullptr && MatchAndExplain(StringType(s), listener); + } + + // Matches anything that can convert to StringType. + // + // This is a template, not just a plain function with const StringType&, + // because absl::string_view has some interfering non-explicit constructors. + template + bool MatchAndExplain(const MatcheeStringType& s, + MatchResultListener* /* listener */) const { + const StringType& s2(s); + return s2.find(substring_) != StringType::npos; + } + + // Describes what this matcher matches. + void DescribeTo(::std::ostream* os) const { + *os << "has substring "; + UniversalPrint(substring_, os); + } + + void DescribeNegationTo(::std::ostream* os) const { + *os << "has no substring "; + UniversalPrint(substring_, os); + } + + private: + const StringType substring_; + + GTEST_DISALLOW_ASSIGN_(HasSubstrMatcher); +}; + +// Implements the polymorphic StartsWith(substring) matcher, which +// can be used as a Matcher as long as T can be converted to a +// string. +template +class StartsWithMatcher { + public: + explicit StartsWithMatcher(const StringType& prefix) : prefix_(prefix) { + } + +#if GTEST_HAS_ABSL + bool MatchAndExplain(const absl::string_view& s, + MatchResultListener* listener) const { + // This should fail to compile if absl::string_view is used with wide + // strings. + const StringType& str = std::string(s); + return MatchAndExplain(str, listener); + } +#endif // GTEST_HAS_ABSL + + // Accepts pointer types, particularly: + // const char* + // char* + // const wchar_t* + // wchar_t* + template + bool MatchAndExplain(CharType* s, MatchResultListener* listener) const { + return s != nullptr && MatchAndExplain(StringType(s), listener); + } + + // Matches anything that can convert to StringType. + // + // This is a template, not just a plain function with const StringType&, + // because absl::string_view has some interfering non-explicit constructors. + template + bool MatchAndExplain(const MatcheeStringType& s, + MatchResultListener* /* listener */) const { + const StringType& s2(s); + return s2.length() >= prefix_.length() && + s2.substr(0, prefix_.length()) == prefix_; + } + + void DescribeTo(::std::ostream* os) const { + *os << "starts with "; + UniversalPrint(prefix_, os); + } + + void DescribeNegationTo(::std::ostream* os) const { + *os << "doesn't start with "; + UniversalPrint(prefix_, os); + } + + private: + const StringType prefix_; + + GTEST_DISALLOW_ASSIGN_(StartsWithMatcher); +}; + +// Implements the polymorphic EndsWith(substring) matcher, which +// can be used as a Matcher as long as T can be converted to a +// string. +template +class EndsWithMatcher { + public: + explicit EndsWithMatcher(const StringType& suffix) : suffix_(suffix) {} + +#if GTEST_HAS_ABSL + bool MatchAndExplain(const absl::string_view& s, + MatchResultListener* listener) const { + // This should fail to compile if absl::string_view is used with wide + // strings. + const StringType& str = std::string(s); + return MatchAndExplain(str, listener); + } +#endif // GTEST_HAS_ABSL + + // Accepts pointer types, particularly: + // const char* + // char* + // const wchar_t* + // wchar_t* + template + bool MatchAndExplain(CharType* s, MatchResultListener* listener) const { + return s != nullptr && MatchAndExplain(StringType(s), listener); + } + + // Matches anything that can convert to StringType. + // + // This is a template, not just a plain function with const StringType&, + // because absl::string_view has some interfering non-explicit constructors. + template + bool MatchAndExplain(const MatcheeStringType& s, + MatchResultListener* /* listener */) const { + const StringType& s2(s); + return s2.length() >= suffix_.length() && + s2.substr(s2.length() - suffix_.length()) == suffix_; + } + + void DescribeTo(::std::ostream* os) const { + *os << "ends with "; + UniversalPrint(suffix_, os); + } + + void DescribeNegationTo(::std::ostream* os) const { + *os << "doesn't end with "; + UniversalPrint(suffix_, os); + } + + private: + const StringType suffix_; + + GTEST_DISALLOW_ASSIGN_(EndsWithMatcher); +}; + +// Implements a matcher that compares the two fields of a 2-tuple +// using one of the ==, <=, <, etc, operators. The two fields being +// compared don't have to have the same type. +// +// The matcher defined here is polymorphic (for example, Eq() can be +// used to match a std::tuple, a std::tuple, +// etc). Therefore we use a template type conversion operator in the +// implementation. +template +class PairMatchBase { + public: + template + operator Matcher<::std::tuple>() const { + return Matcher<::std::tuple>(new Impl&>); + } + template + operator Matcher&>() const { + return MakeMatcher(new Impl&>); + } + + private: + static ::std::ostream& GetDesc(::std::ostream& os) { // NOLINT + return os << D::Desc(); + } + + template + class Impl : public MatcherInterface { + public: + bool MatchAndExplain(Tuple args, + MatchResultListener* /* listener */) const override { + return Op()(::std::get<0>(args), ::std::get<1>(args)); + } + void DescribeTo(::std::ostream* os) const override { + *os << "are " << GetDesc; + } + void DescribeNegationTo(::std::ostream* os) const override { + *os << "aren't " << GetDesc; + } + }; +}; + +class Eq2Matcher : public PairMatchBase { + public: + static const char* Desc() { return "an equal pair"; } +}; +class Ne2Matcher : public PairMatchBase { + public: + static const char* Desc() { return "an unequal pair"; } +}; +class Lt2Matcher : public PairMatchBase { + public: + static const char* Desc() { return "a pair where the first < the second"; } +}; +class Gt2Matcher : public PairMatchBase { + public: + static const char* Desc() { return "a pair where the first > the second"; } +}; +class Le2Matcher : public PairMatchBase { + public: + static const char* Desc() { return "a pair where the first <= the second"; } +}; +class Ge2Matcher : public PairMatchBase { + public: + static const char* Desc() { return "a pair where the first >= the second"; } +}; + +// Implements the Not(...) matcher for a particular argument type T. +// We do not nest it inside the NotMatcher class template, as that +// will prevent different instantiations of NotMatcher from sharing +// the same NotMatcherImpl class. +template +class NotMatcherImpl : public MatcherInterface { + public: + explicit NotMatcherImpl(const Matcher& matcher) + : matcher_(matcher) {} + + bool MatchAndExplain(const T& x, + MatchResultListener* listener) const override { + return !matcher_.MatchAndExplain(x, listener); + } + + void DescribeTo(::std::ostream* os) const override { + matcher_.DescribeNegationTo(os); + } + + void DescribeNegationTo(::std::ostream* os) const override { + matcher_.DescribeTo(os); + } + + private: + const Matcher matcher_; + + GTEST_DISALLOW_ASSIGN_(NotMatcherImpl); +}; + +// Implements the Not(m) matcher, which matches a value that doesn't +// match matcher m. +template +class NotMatcher { + public: + explicit NotMatcher(InnerMatcher matcher) : matcher_(matcher) {} + + // This template type conversion operator allows Not(m) to be used + // to match any type m can match. + template + operator Matcher() const { + return Matcher(new NotMatcherImpl(SafeMatcherCast(matcher_))); + } + + private: + InnerMatcher matcher_; + + GTEST_DISALLOW_ASSIGN_(NotMatcher); +}; + +// Implements the AllOf(m1, m2) matcher for a particular argument type +// T. We do not nest it inside the BothOfMatcher class template, as +// that will prevent different instantiations of BothOfMatcher from +// sharing the same BothOfMatcherImpl class. +template +class AllOfMatcherImpl : public MatcherInterface { + public: + explicit AllOfMatcherImpl(std::vector > matchers) + : matchers_(std::move(matchers)) {} + + void DescribeTo(::std::ostream* os) const override { + *os << "("; + for (size_t i = 0; i < matchers_.size(); ++i) { + if (i != 0) *os << ") and ("; + matchers_[i].DescribeTo(os); + } + *os << ")"; + } + + void DescribeNegationTo(::std::ostream* os) const override { + *os << "("; + for (size_t i = 0; i < matchers_.size(); ++i) { + if (i != 0) *os << ") or ("; + matchers_[i].DescribeNegationTo(os); + } + *os << ")"; + } + + bool MatchAndExplain(const T& x, + MatchResultListener* listener) const override { + // If either matcher1_ or matcher2_ doesn't match x, we only need + // to explain why one of them fails. + std::string all_match_result; + + for (size_t i = 0; i < matchers_.size(); ++i) { + StringMatchResultListener slistener; + if (matchers_[i].MatchAndExplain(x, &slistener)) { + if (all_match_result.empty()) { + all_match_result = slistener.str(); + } else { + std::string result = slistener.str(); + if (!result.empty()) { + all_match_result += ", and "; + all_match_result += result; + } + } + } else { + *listener << slistener.str(); + return false; + } + } + + // Otherwise we need to explain why *both* of them match. + *listener << all_match_result; + return true; + } + + private: + const std::vector > matchers_; + + GTEST_DISALLOW_ASSIGN_(AllOfMatcherImpl); +}; + +// VariadicMatcher is used for the variadic implementation of +// AllOf(m_1, m_2, ...) and AnyOf(m_1, m_2, ...). +// CombiningMatcher is used to recursively combine the provided matchers +// (of type Args...). +template