From 6b7ead4fe808d6442fe7ae9b7f4ec38de8f35ee0 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Wed, 30 Dec 2015 16:51:21 +0500 Subject: Libmv: Update to the latest upstream version Main reason is to bring up new Glog which should have MSVC 2015 support. --- extern/libmv/ChangeLog | 186 +++++++++------------ extern/libmv/SConscript | 2 - extern/libmv/libmv/multiview/homography.cc | 25 ++- .../libmv/simple_pipeline/camera_intrinsics.h | 4 +- extern/libmv/libmv/simple_pipeline/modal_solver.cc | 38 ++--- extern/libmv/third_party/glog/README.libmv | 4 +- extern/libmv/third_party/glog/src/base/mutex.h | 4 +- extern/libmv/third_party/glog/src/config_freebsd.h | 104 +++++++----- extern/libmv/third_party/glog/src/config_hurd.h | 98 ++++++----- extern/libmv/third_party/glog/src/config_linux.h | 99 ++++++----- extern/libmv/third_party/glog/src/config_mac.h | 107 +++++++----- extern/libmv/third_party/glog/src/demangle.h | 2 +- extern/libmv/third_party/glog/src/glog/logging.h | 56 +++++-- .../libmv/third_party/glog/src/glog/raw_logging.h | 3 +- extern/libmv/third_party/glog/src/logging.cc | 20 ++- extern/libmv/third_party/glog/src/signalhandler.cc | 16 ++ extern/libmv/third_party/glog/src/utilities.cc | 18 +- extern/libmv/third_party/glog/src/vlog_is_on.cc | 42 +++-- extern/libmv/third_party/glog/src/windows/config.h | 4 + .../third_party/glog/src/windows/glog/logging.h | 3 + extern/libmv/third_party/glog/src/windows/port.cc | 4 +- extern/libmv/third_party/glog/src/windows/port.h | 30 +--- .../third_party/glog/src/windows/preprocess.sh | 1 + 23 files changed, 465 insertions(+), 405 deletions(-) (limited to 'extern') diff --git a/extern/libmv/ChangeLog b/extern/libmv/ChangeLog index 0bb340b2491..39ec4781c8e 100644 --- a/extern/libmv/ChangeLog +++ b/extern/libmv/ChangeLog @@ -1,3 +1,85 @@ +commit d249280fdf7c937fd6ebbc465508843a70aafd4c +Author: Sergey Sharybin +Date: Wed Dec 30 16:59:28 2015 +0500 + + Tweaks to Glog to support building on all platforms + + This makes it possible to compile Libmv on all platforms, + amount of hacks is lower, which could bring some warnings + up, but those are better be addressed via upstream which + is now rather active. + +commit 86c57750ddb857643fb5dd2c83b4953da83dd57d +Author: Sergey Sharybin +Date: Wed Dec 30 16:15:47 2015 +0500 + + Enable explicit Schur complement matrix by default + + Gives up to 2x speed up of camera solving process in average scene. + In the really huge one it might be slower, but that we need to investigate. + +commit d6c52a70b5a0664b7c74bda68f59a895fe8aa235 +Author: Sergey Sharybin +Date: Wed Dec 30 16:13:03 2015 +0500 + + Fix one frame memory leak when tracking last frame + +commit 6e2ac41d25d5923b2a62c96d27d919a36eff9b48 +Author: Brecht Van Lommel +Date: Wed Dec 30 16:11:24 2015 +0500 + + Motion tracking not workig with Xcode 7 on OS X. + + Caused by use of the uninitialized shape_ variable in Resize(). + +commit fc72ae06fb4ae559ac37d14d1b34d6669505cc86 +Author: Sergey Sharybin +Date: Wed Dec 30 15:56:40 2015 +0500 + + Update GLog to latest upstream + + Should fix issues building with MSVC2015. + +commit d4b2d15bd3d195074b074331354de96a1b51042f +Author: Sergey Sharybin +Date: Wed Dec 30 16:01:10 2015 +0500 + + Fix wrong README file reference + +commit 2b4aa0b7720cae9a408284834559bea9960157ee +Author: Keir Mierle +Date: Mon May 11 02:16:53 2015 -0700 + + Make README more informative for GitHub viewers + + Reviewers: sergey + + Reviewed By: sergey + + Differential Revision: https://developer.blender.org/D1295 + +commit 514e4491aea655d20be047ed87f002fb7854d5c9 +Author: Keir Mierle +Date: Mon May 11 01:54:09 2015 -0700 + + Simplify the modal solver Ceres cost function + + Fix test by flipping the quaternion. + + Reviewers: sergey + + Reviewed By: sergey + + Projects: #libmv + + Differential Revision: https://developer.blender.org/D756 + +commit e55fafd31f7d53d42af7c6b7df2eebe3c2568da9 +Author: Sergey Sharybin +Date: Wed Dec 31 19:05:51 2014 +0500 + + Synchronize MSVC compilation fixes from Blender + commit 7d6020d2ec42c6cb2749bc891186b4880d26d40b Author: Sergey Sharybin Date: Wed Dec 31 15:32:07 2014 +0500 @@ -601,107 +683,3 @@ Date: Wed Mar 26 17:44:09 2014 +0600 Fix bad memory write in BA code when having zero-weighted tracks Issue was really stupid and caused by the wrong vector initialization. - -commit d14a372dfe09c7339f267c4904a541fbe2efec43 -Author: Sergey Sharybin -Date: Fri Mar 21 16:02:41 2014 +0600 - - Attempt to fix compilation error with msvc2013 - -commit 933531580b4dc4b65601d785cedc16506d615d7b -Author: Sergey Sharybin -Date: Thu Mar 20 23:07:34 2014 +0600 - - Compilation fixes for MinGW - - Many thanks to Antony Riakiotakis for the patch! - -commit f1aefcbf58fe04ea2967434f39f703bb486777c8 -Author: Sergey Sharybin -Date: Thu Feb 27 16:21:19 2014 +0600 - - Implement separate BA step for tracks which have constant zero weight - - This is needed to minimize their reprojection error over the footage. - Without this extra step positions of such tracks were calculated by - algebraic intersection code only, which doesn't give best precision. - -commit bcf7f9470b2ea33cf89a31a72037ec03be631637 -Author: Sergey Sharybin -Date: Thu Feb 27 14:16:42 2014 +0600 - - Avoid zero-sized problem when doing euclidean intersection - - Zero-sized problem might occur when intersecting track with - constant zero weight. For such tracks we'll just use result - of algebraic intersection. - - TODO: We probably need to have a separate BA step to adjust - positions of tracks with constant zero weight. - -commit f884bb20a93189b8210639f3de939c64177d66b3 -Author: Sergey Sharybin -Date: Wed Feb 26 18:00:40 2014 +0600 - - Ignore zero weighted markers in keyframe selection - - It doesn't make sense to use zero-weighted tracks as a correspondences - in keyframe selection. - - Such tracks are not guaranteed to be tracked accurately because their - purpose is to add reference points in 3D space without affecting the - solution. - -commit 74db5175cdbcabe673b82eef59c88fb7f342c43f -Author: Sergey Sharybin -Date: Wed Feb 26 13:23:02 2014 +0600 - - Tweaks to make bundling into Blender warning-less - - Mainly issue i caused by conflicts in include directories, - so glog used to include config.h from gflags. It might be - fixed by splitting gflags/glog from Libmv in Blender build - system but that's not something fun to work on. Fixed by - making include directories bit more explicit. - - Also solved no-previous-prototype warnings. - -commit bc4bc66af0115069562b79e837ccf4fd95c8f97e -Author: Sergey Sharybin -Date: Fri Feb 21 14:55:13 2014 +0600 - - Raise epsilon used for model solver test - - It was too much small leading to false failure triggering - caused simply by precision issues. - -commit bf750590a6af4af3622c01fd1004c44da60484a7 -Author: Sergey Sharybin -Date: Tue Feb 18 23:35:52 2014 +0600 - - Made it possible to link against Ceres installed on the system - - Main purpose of this is to get away from bundled Ceres library - which is not so trivial to re-bundle and takes some to do this - (not talking about CMake options conflicts and pollution). - - Enabled by setting WITH_SYSTEM_CERES=ON. Default paths to search - Ceres library: - - - /usr/local - - /sw - - /opt/local - - /opt/csw - - /opt/lib/ceres - - You might also specify Ceres root directory using CERES_ROOT_DIR - variable (both CMake and environment variables are supported). - - If your Ceres is build statically, you're to control all additional - libraries needed to link against using CMAKE_EXE_LINKER_FLAGS. - -commit c9156fbf80c86853806844b754b1e48f45c5ec11 -Author: Sergey Sharybin -Date: Tue Feb 18 19:38:22 2014 +0600 - - Remove .orig file which was added by accident diff --git a/extern/libmv/SConscript b/extern/libmv/SConscript index 251e5835d64..c177f74c2b8 100644 --- a/extern/libmv/SConscript +++ b/extern/libmv/SConscript @@ -1,5 +1,3 @@ -#!/usr/bin/python - # NOTE: This file is automatically generated by bundle.sh script # If you're doing changes in this file, please update template # in that script too diff --git a/extern/libmv/libmv/multiview/homography.cc b/extern/libmv/libmv/multiview/homography.cc index 346acb3afd9..ce533a3ead2 100644 --- a/extern/libmv/libmv/multiview/homography.cc +++ b/extern/libmv/libmv/multiview/homography.cc @@ -179,12 +179,8 @@ void GetNormalizedPoints(const Mat &original_points, class HomographySymmetricGeometricCostFunctor { public: HomographySymmetricGeometricCostFunctor(const Vec2 &x, - const Vec2 &y) { - xx_ = x(0); - xy_ = x(1); - yx_ = y(0); - yy_ = y(1); - } + const Vec2 &y) + : x_(x), y_(y) { } template bool operator()(const T *homography_parameters, T *residuals) const { @@ -193,8 +189,8 @@ class HomographySymmetricGeometricCostFunctor { Mat3 H(homography_parameters); - Vec3 x(T(xx_), T(xy_), T(1.0)); - Vec3 y(T(yx_), T(yy_), T(1.0)); + Vec3 x(T(x_(0)), T(x_(1)), T(1.0)); + Vec3 y(T(y_(0)), T(y_(1)), T(1.0)); Vec3 H_x = H * x; Vec3 Hinv_y = H.inverse() * y; @@ -203,19 +199,18 @@ class HomographySymmetricGeometricCostFunctor { Hinv_y /= Hinv_y(2); // This is a forward error. - residuals[0] = H_x(0) - T(yx_); - residuals[1] = H_x(1) - T(yy_); + residuals[0] = H_x(0) - T(y_(0)); + residuals[1] = H_x(1) - T(y_(1)); // This is a backward error. - residuals[2] = Hinv_y(0) - T(xx_); - residuals[3] = Hinv_y(1) - T(xy_); + residuals[2] = Hinv_y(0) - T(x_(0)); + residuals[3] = Hinv_y(1) - T(x_(1)); return true; } - // TODO(sergey): Think of better naming. - double xx_, xy_; - double yx_, yy_; + const Vec2 x_; + const Vec2 y_; }; // Termination checking callback used for homography estimation. diff --git a/extern/libmv/libmv/simple_pipeline/camera_intrinsics.h b/extern/libmv/libmv/simple_pipeline/camera_intrinsics.h index 1a8bf7a1c87..6a3ade81089 100644 --- a/extern/libmv/libmv/simple_pipeline/camera_intrinsics.h +++ b/extern/libmv/libmv/simple_pipeline/camera_intrinsics.h @@ -197,7 +197,7 @@ class CameraIntrinsics { double *normalized_x, double *normalized_y) const = 0; - // Distort an image using the current camera intrinsics + // Distort an image using the current camera instrinsics // // The distorted image is computed in output_buffer using samples from // input_buffer. Both buffers should be width x height x channels sized. @@ -226,7 +226,7 @@ class CameraIntrinsics { int channels, PixelType *output_buffer); - // Undistort an image using the current camera intrinsics + // Undistort an image using the current camera instrinsics // // The undistorted image is computed in output_buffer using samples from // input_buffer. Both buffers should be width x height x channels sized. diff --git a/extern/libmv/libmv/simple_pipeline/modal_solver.cc b/extern/libmv/libmv/simple_pipeline/modal_solver.cc index caccce68cbe..15e185eeda7 100644 --- a/extern/libmv/libmv/simple_pipeline/modal_solver.cc +++ b/extern/libmv/libmv/simple_pipeline/modal_solver.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2012 libmv authors. +// Copyright (c) 2015 libmv authors. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to @@ -62,32 +62,32 @@ struct ModalReprojectionError { : observed_x_(observed_x), observed_y_(observed_y), weight_(weight), bundle_(bundle) { } + // TODO(keir): This should support bundling focal length as well. template - bool operator()(const T* quaternion, // Rotation quaternion - T* residuals) const { - T R[9]; - ceres::QuaternionToRotation(quaternion, R); - + bool operator()(const T* quaternion, T* residuals) const { // Convert bundle position from double to T. - T X[3]; - X[0] = T(bundle_(0)); - X[1] = T(bundle_(1)); - X[2] = T(bundle_(2)); + T X[3] = { T(bundle_(0)), T(bundle_(1)), T(bundle_(2)) }; - // Compute projective coordinates: x = RX. + // Compute the point position in camera coordinates: x = RX. T x[3]; - x[0] = R[0]*X[0] + R[3]*X[1] + R[6]*X[2]; - x[1] = R[1]*X[0] + R[4]*X[1] + R[7]*X[2]; - x[2] = R[2]*X[0] + R[5]*X[1] + R[8]*X[2]; - // Compute normalized coordinates: x /= x[2]. + // This flips the sense of the quaternion, to adhere to Blender conventions. + T quaternion_inverse[4] = { + quaternion[0], + -quaternion[1], + -quaternion[2], + -quaternion[3], + }; + ceres::QuaternionRotatePoint(quaternion_inverse, X, x); + + // Compute normalized coordinates by dividing out the depth. T xn = x[0] / x[2]; T yn = x[1] / x[2]; - // The error is the difference between reprojected - // and observed marker position. - residuals[0] = xn - T(observed_x_); - residuals[1] = yn - T(observed_y_); + // The error is the difference between reprojected and observed marker + // positions, weighted by the passed in weight. + residuals[0] = T(weight_) * (xn - T(observed_x_)); + residuals[1] = T(weight_) * (yn - T(observed_y_)); return true; } diff --git a/extern/libmv/third_party/glog/README.libmv b/extern/libmv/third_party/glog/README.libmv index 10e51fa6df4..43ee532b6eb 100644 --- a/extern/libmv/third_party/glog/README.libmv +++ b/extern/libmv/third_party/glog/README.libmv @@ -1,9 +1,7 @@ Project: Google Logging URL: http://code.google.com/p/google-glog/ License: New BSD -Upstream version: 0.3.3, r143 +Upstream version: 0.3.4, 4d391fe Local modifications: * Added per-platform config.h files so no configuration-time checks for functions and so are needed. -* See glog_tweaks.patch to see other tweaks which are done - against glog upstream. diff --git a/extern/libmv/third_party/glog/src/base/mutex.h b/extern/libmv/third_party/glog/src/base/mutex.h index 36fc55c4dcb..00da50580b3 100644 --- a/extern/libmv/third_party/glog/src/base/mutex.h +++ b/extern/libmv/third_party/glog/src/base/mutex.h @@ -134,7 +134,9 @@ // *does* cause problems for FreeBSD, or MacOSX, but isn't needed // for locking there.) # ifdef __linux__ -# define _XOPEN_SOURCE 500 // may be needed to get the rwlock calls +# ifndef _XOPEN_SOURCE // Some other header might have already set it for us. +# define _XOPEN_SOURCE 500 // may be needed to get the rwlock calls +# endif # endif # include typedef pthread_rwlock_t MutexType; diff --git a/extern/libmv/third_party/glog/src/config_freebsd.h b/extern/libmv/third_party/glog/src/config_freebsd.h index a1fe76fe806..afa4262b022 100644 --- a/extern/libmv/third_party/glog/src/config_freebsd.h +++ b/extern/libmv/third_party/glog/src/config_freebsd.h @@ -1,5 +1,5 @@ -/* src/config.h. Generated from config.h.in by configure. */ -/* src/config.h.in. Generated from configure.ac by autoheader. */ +/* define if glog doesn't use RTTI */ +/* #undef DISABLE_RTTI */ /* Namespace for Google classes */ #define GOOGLE_NAMESPACE google @@ -7,29 +7,32 @@ /* Define if you have the `dladdr' function */ /* #undef HAVE_DLADDR */ +/* Define if you have the `snprintf' function */ +#define HAVE_SNPRINTF + /* Define to 1 if you have the header file. */ -#define HAVE_DLFCN_H 1 +#define HAVE_DLFCN_H /* Define to 1 if you have the header file. */ -#undef HAVE_EXECINFO_H +#define HAVE_EXECINFO_H /* Define if you have the `fcntl' function */ -#define HAVE_FCNTL 1 +#define HAVE_FCNTL /* Define to 1 if you have the header file. */ -#define HAVE_GLOB_H 1 +#define HAVE_GLOB_H /* Define to 1 if you have the header file. */ #define HAVE_INTTYPES_H 1 /* Define to 1 if you have the `pthread' library (-lpthread). */ -#define HAVE_LIBPTHREAD 1 +/* #undef HAVE_LIBPTHREAD */ /* Define to 1 if you have the header file. */ -/* #undef HAVE_LIBUNWIND_H */ +#define HAVE_LIBUNWIND_H /* define if you have google gflags library */ -#define HAVE_LIB_GFLAGS 1 +#define HAVE_LIB_GFLAGS /* define if you have google gmock library */ /* #undef HAVE_LIB_GMOCK */ @@ -41,103 +44,119 @@ /* #undef HAVE_LIB_UNWIND */ /* Define to 1 if you have the header file. */ -#define HAVE_MEMORY_H 1 +#define HAVE_MEMORY_H + +/* define to disable multithreading support. */ +/* #undef NO_THREADS */ /* define if the compiler implements namespaces */ -#define HAVE_NAMESPACES 1 +#define HAVE_NAMESPACES /* Define if you have the 'pread' function */ -#define HAVE_PREAD 1 +#define HAVE_PREAD /* Define if you have POSIX threads libraries and header files. */ -#define HAVE_PTHREAD 1 +#define HAVE_PTHREAD /* Define to 1 if you have the header file. */ -#define HAVE_PWD_H 1 +#define HAVE_PWD_H /* Define if you have the 'pwrite' function */ -#define HAVE_PWRITE 1 +#define HAVE_PWRITE /* define if the compiler implements pthread_rwlock_* */ -#define HAVE_RWLOCK 1 +/* #undef HAVE_RWLOCK */ + +/* Define if you have the 'sigaction' function */ +#define HAVE_SIGACTION /* Define if you have the `sigaltstack' function */ -#define HAVE_SIGALTSTACK 1 +/* #undef HAVE_SIGALTSTACK */ /* Define to 1 if you have the header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the header file. */ -#define HAVE_STDLIB_H 1 +#define HAVE_STDLIB_H /* Define to 1 if you have the header file. */ -#define HAVE_STRINGS_H 1 +#define HAVE_STRINGS_H /* Define to 1 if you have the header file. */ -#define HAVE_STRING_H 1 +#define HAVE_STRING_H /* Define to 1 if you have the header file. */ -/* #undef HAVE_SYSCALL_H */ +#define HAVE_SYSCALL_H /* Define to 1 if you have the header file. */ -#define HAVE_SYSLOG_H 1 +#define HAVE_SYSLOG_H /* Define to 1 if you have the header file. */ -#define HAVE_SYS_STAT_H 1 +#define HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ -#define HAVE_SYS_SYSCALL_H 1 +#define HAVE_SYS_SYSCALL_H /* Define to 1 if you have the header file. */ -#define HAVE_SYS_TIME_H 1 +#define HAVE_SYS_TIME_H /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ -#define HAVE_SYS_UCONTEXT_H 1 +/* #undef HAVE_SYS_UCONTEXT_H */ /* Define to 1 if you have the header file. */ -#define HAVE_SYS_UTSNAME_H 1 +#define HAVE_SYS_UTSNAME_H /* Define to 1 if you have the header file. */ -#define HAVE_UCONTEXT_H 1 +#define HAVE_UCONTEXT_H /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 +/* Define to 1 if you have the header file. */ +#define HAVE_UNWIND_H 1 + /* define if the compiler supports using expression for operator */ -#define HAVE_USING_OPERATOR 1 +#define HAVE_USING_OPERATOR /* define if your compiler has __attribute__ */ -#define HAVE___ATTRIBUTE__ 1 +#define HAVE___ATTRIBUTE__ /* define if your compiler has __builtin_expect */ #define HAVE___BUILTIN_EXPECT 1 /* define if your compiler has __sync_val_compare_and_swap */ -/* #undef HAVE___SYNC_VAL_COMPARE_AND_SWAP */ +#define HAVE___SYNC_VAL_COMPARE_AND_SWAP + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +/* #undef LT_OBJDIR */ /* Name of package */ -#define PACKAGE "glog" +/* #undef PACKAGE */ /* Define to the address where bug reports for this package should be sent. */ -#define PACKAGE_BUGREPORT "opensource@google.com" +/* #undef PACKAGE_BUGREPORT */ /* Define to the full name of this package. */ -#define PACKAGE_NAME "glog" +/* #undef PACKAGE_NAME */ /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "glog 0.3.2" +/* #undef PACKAGE_STRING */ /* Define to the one symbol short name of this package. */ -#define PACKAGE_TARNAME "glog" +/* #undef PACKAGE_TARNAME */ + +/* Define to the home page for this package. */ +/* #undef PACKAGE_URL */ /* Define to the version of this package. */ -#define PACKAGE_VERSION "0.3.2" +/* #undef PACKAGE_VERSION */ /* How to access the PC from a struct ucontext */ -/* #define PC_FROM_UCONTEXT uc_mcontext.gregs[REG_RIP] */ +/* #undef PC_FROM_UCONTEXT */ /* Define to necessary symbol if this constant uses a non-standard name on your system. */ @@ -149,7 +168,6 @@ /* Define to 1 if you have the ANSI C header files. */ /* #undef STDC_HEADERS */ -#define STDC_HEADERS 1 /* the namespace where STL code like vector<> is defined */ #define STL_NAMESPACE std @@ -157,7 +175,7 @@ #define TEST_SRC_DIR "." /* Version number of package */ -#define VERSION "0.3.2" +/* #undef VERSION */ /* Stops putting the code inside the Google namespace */ #define _END_GOOGLE_NAMESPACE_ } @@ -165,8 +183,4 @@ /* Puts following code inside the Google namespace */ #define _START_GOOGLE_NAMESPACE_ namespace google { -/* isn't getting defined by configure script when clang compilers are used - and cuases compilation errors in stactrace/unwind modules */ -#ifdef __clang__ -# define NO_FRAME_POINTER -#endif +#define GOOGLE_GLOG_DLL_DECL diff --git a/extern/libmv/third_party/glog/src/config_hurd.h b/extern/libmv/third_party/glog/src/config_hurd.h index 81e8ed7bac3..32cad59075e 100644 --- a/extern/libmv/third_party/glog/src/config_hurd.h +++ b/extern/libmv/third_party/glog/src/config_hurd.h @@ -1,5 +1,5 @@ -/* src/config.h. Generated from config.h.in by configure. */ -/* src/config.h.in. Generated from configure.ac by autoheader. */ +/* define if glog doesn't use RTTI */ +/* #undef DISABLE_RTTI */ /* Namespace for Google classes */ #define GOOGLE_NAMESPACE google @@ -7,29 +7,32 @@ /* Define if you have the `dladdr' function */ /* #undef HAVE_DLADDR */ +/* Define if you have the `snprintf' function */ +#define HAVE_SNPRINTF + /* Define to 1 if you have the header file. */ -#define HAVE_DLFCN_H 1 +#define HAVE_DLFCN_H /* Define to 1 if you have the header file. */ -#define HAVE_EXECINFO_H 1 +#define HAVE_EXECINFO_H /* Define if you have the `fcntl' function */ -#define HAVE_FCNTL 1 +#define HAVE_FCNTL /* Define to 1 if you have the header file. */ -#define HAVE_GLOB_H 1 +#define HAVE_GLOB_H /* Define to 1 if you have the header file. */ #define HAVE_INTTYPES_H 1 /* Define to 1 if you have the `pthread' library (-lpthread). */ -#define HAVE_LIBPTHREAD 1 +/* #undef HAVE_LIBPTHREAD */ /* Define to 1 if you have the header file. */ -/* #undef HAVE_LIBUNWIND_H */ +#define HAVE_LIBUNWIND_H /* define if you have google gflags library */ -#define HAVE_LIB_GFLAGS 1 +#define HAVE_LIB_GFLAGS /* define if you have google gmock library */ /* #undef HAVE_LIB_GMOCK */ @@ -41,100 +44,116 @@ /* #undef HAVE_LIB_UNWIND */ /* Define to 1 if you have the header file. */ -#define HAVE_MEMORY_H 1 +#define HAVE_MEMORY_H + +/* define to disable multithreading support. */ +/* #undef NO_THREADS */ /* define if the compiler implements namespaces */ -#define HAVE_NAMESPACES 1 +#define HAVE_NAMESPACES /* Define if you have the 'pread' function */ -#define HAVE_PREAD 1 +#define HAVE_PREAD /* Define if you have POSIX threads libraries and header files. */ -#define HAVE_PTHREAD 1 +#define HAVE_PTHREAD /* Define to 1 if you have the header file. */ -#define HAVE_PWD_H 1 +#define HAVE_PWD_H /* Define if you have the 'pwrite' function */ -#define HAVE_PWRITE 1 +#define HAVE_PWRITE /* define if the compiler implements pthread_rwlock_* */ -#define HAVE_RWLOCK 1 +/* #undef HAVE_RWLOCK */ + +/* Define if you have the 'sigaction' function */ +#define HAVE_SIGACTION /* Define if you have the `sigaltstack' function */ -#define HAVE_SIGALTSTACK 1 +/* #undef HAVE_SIGALTSTACK */ /* Define to 1 if you have the header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the header file. */ -#define HAVE_STDLIB_H 1 +#define HAVE_STDLIB_H /* Define to 1 if you have the header file. */ -#define HAVE_STRINGS_H 1 +#define HAVE_STRINGS_H /* Define to 1 if you have the header file. */ -#define HAVE_STRING_H 1 +#define HAVE_STRING_H /* Define to 1 if you have the header file. */ -/* #undef HAVE_SYSCALL_H */ +#define HAVE_SYSCALL_H /* Define to 1 if you have the header file. */ -#define HAVE_SYSLOG_H 1 +#define HAVE_SYSLOG_H /* Define to 1 if you have the header file. */ -#define HAVE_SYS_STAT_H 1 +#define HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ -/* #undef HAVE_SYS_SYSCALL_H */ +#define HAVE_SYS_SYSCALL_H /* Define to 1 if you have the header file. */ -#define HAVE_SYS_TIME_H 1 +#define HAVE_SYS_TIME_H /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ -#define HAVE_SYS_UCONTEXT_H 1 +/* #undef HAVE_SYS_UCONTEXT_H */ /* Define to 1 if you have the header file. */ -#define HAVE_SYS_UTSNAME_H 1 +#define HAVE_SYS_UTSNAME_H /* Define to 1 if you have the header file. */ -#define HAVE_UCONTEXT_H 1 +#define HAVE_UCONTEXT_H /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 +/* Define to 1 if you have the header file. */ +#define HAVE_UNWIND_H 1 + /* define if the compiler supports using expression for operator */ -#define HAVE_USING_OPERATOR 1 +#define HAVE_USING_OPERATOR /* define if your compiler has __attribute__ */ -#define HAVE___ATTRIBUTE__ 1 +#define HAVE___ATTRIBUTE__ /* define if your compiler has __builtin_expect */ #define HAVE___BUILTIN_EXPECT 1 /* define if your compiler has __sync_val_compare_and_swap */ -/* #undef HAVE___SYNC_VAL_COMPARE_AND_SWAP */ +#define HAVE___SYNC_VAL_COMPARE_AND_SWAP + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +/* #undef LT_OBJDIR */ /* Name of package */ -#define PACKAGE "glog" +/* #undef PACKAGE */ /* Define to the address where bug reports for this package should be sent. */ -#define PACKAGE_BUGREPORT "opensource@google.com" +/* #undef PACKAGE_BUGREPORT */ /* Define to the full name of this package. */ -#define PACKAGE_NAME "glog" +/* #undef PACKAGE_NAME */ /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "glog 0.3.1" +/* #undef PACKAGE_STRING */ /* Define to the one symbol short name of this package. */ -#define PACKAGE_TARNAME "glog" +/* #undef PACKAGE_TARNAME */ + +/* Define to the home page for this package. */ +/* #undef PACKAGE_URL */ /* Define to the version of this package. */ -#define PACKAGE_VERSION "0.3.1" +/* #undef PACKAGE_VERSION */ /* How to access the PC from a struct ucontext */ #if defined(_M_X64) || defined(__amd64__) || defined(__x86_64__) @@ -155,7 +174,6 @@ /* Define to 1 if you have the ANSI C header files. */ /* #undef STDC_HEADERS */ -#define STDC_HEADERS 1 /* the namespace where STL code like vector<> is defined */ #define STL_NAMESPACE std @@ -163,10 +181,12 @@ #define TEST_SRC_DIR "." /* Version number of package */ -#define VERSION "0.3.1" +/* #undef VERSION */ /* Stops putting the code inside the Google namespace */ #define _END_GOOGLE_NAMESPACE_ } /* Puts following code inside the Google namespace */ #define _START_GOOGLE_NAMESPACE_ namespace google { + +#define GOOGLE_GLOG_DLL_DECL diff --git a/extern/libmv/third_party/glog/src/config_linux.h b/extern/libmv/third_party/glog/src/config_linux.h index 7741ddebb63..b3a3325bc1b 100644 --- a/extern/libmv/third_party/glog/src/config_linux.h +++ b/extern/libmv/third_party/glog/src/config_linux.h @@ -1,5 +1,5 @@ -/* src/config.h. Generated from config.h.in by configure. */ -/* src/config.h.in. Generated from configure.ac by autoheader. */ +/* define if glog doesn't use RTTI */ +/* #undef DISABLE_RTTI */ /* Namespace for Google classes */ #define GOOGLE_NAMESPACE google @@ -7,29 +7,32 @@ /* Define if you have the `dladdr' function */ /* #undef HAVE_DLADDR */ +/* Define if you have the `snprintf' function */ +#define HAVE_SNPRINTF + /* Define to 1 if you have the header file. */ -#define HAVE_DLFCN_H 1 +#define HAVE_DLFCN_H /* Define to 1 if you have the header file. */ -#define HAVE_EXECINFO_H 1 +#define HAVE_EXECINFO_H /* Define if you have the `fcntl' function */ -#define HAVE_FCNTL 1 +#define HAVE_FCNTL /* Define to 1 if you have the header file. */ -#define HAVE_GLOB_H 1 +#define HAVE_GLOB_H /* Define to 1 if you have the header file. */ #define HAVE_INTTYPES_H 1 /* Define to 1 if you have the `pthread' library (-lpthread). */ -#define HAVE_LIBPTHREAD 1 +/* #undef HAVE_LIBPTHREAD */ /* Define to 1 if you have the header file. */ -/* #undef HAVE_LIBUNWIND_H */ +#define HAVE_LIBUNWIND_H /* define if you have google gflags library */ -#define HAVE_LIB_GFLAGS 1 +#define HAVE_LIB_GFLAGS /* define if you have google gmock library */ /* #undef HAVE_LIB_GMOCK */ @@ -41,107 +44,116 @@ /* #undef HAVE_LIB_UNWIND */ /* Define to 1 if you have the header file. */ -#define HAVE_MEMORY_H 1 +#define HAVE_MEMORY_H + +/* define to disable multithreading support. */ +/* #undef NO_THREADS */ /* define if the compiler implements namespaces */ -#define HAVE_NAMESPACES 1 +#define HAVE_NAMESPACES /* Define if you have the 'pread' function */ -#define HAVE_PREAD 1 +#define HAVE_PREAD /* Define if you have POSIX threads libraries and header files. */ -#define HAVE_PTHREAD 1 +#define HAVE_PTHREAD /* Define to 1 if you have the header file. */ -#define HAVE_PWD_H 1 +#define HAVE_PWD_H /* Define if you have the 'pwrite' function */ -#define HAVE_PWRITE 1 +#define HAVE_PWRITE /* define if the compiler implements pthread_rwlock_* */ -#define HAVE_RWLOCK 1 +/* #undef HAVE_RWLOCK */ + +/* Define if you have the 'sigaction' function */ +#define HAVE_SIGACTION /* Define if you have the `sigaltstack' function */ -#define HAVE_SIGALTSTACK 1 +/* #undef HAVE_SIGALTSTACK */ /* Define to 1 if you have the header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the header file. */ -#define HAVE_STDLIB_H 1 +#define HAVE_STDLIB_H /* Define to 1 if you have the header file. */ -#define HAVE_STRINGS_H 1 +#define HAVE_STRINGS_H /* Define to 1 if you have the header file. */ -#define HAVE_STRING_H 1 +#define HAVE_STRING_H /* Define to 1 if you have the header file. */ -#define HAVE_SYSCALL_H 1 +#define HAVE_SYSCALL_H /* Define to 1 if you have the header file. */ -#define HAVE_SYSLOG_H 1 +#define HAVE_SYSLOG_H /* Define to 1 if you have the header file. */ -#define HAVE_SYS_STAT_H 1 +#define HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ -#define HAVE_SYS_SYSCALL_H 1 +#define HAVE_SYS_SYSCALL_H /* Define to 1 if you have the header file. */ -#define HAVE_SYS_TIME_H 1 +#define HAVE_SYS_TIME_H /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ -#define HAVE_SYS_UCONTEXT_H 1 +/* #undef HAVE_SYS_UCONTEXT_H */ /* Define to 1 if you have the header file. */ -#define HAVE_SYS_UTSNAME_H 1 +#define HAVE_SYS_UTSNAME_H /* Define to 1 if you have the header file. */ -#define HAVE_UCONTEXT_H 1 +#define HAVE_UCONTEXT_H /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 +/* Define to 1 if you have the header file. */ +#define HAVE_UNWIND_H 1 + /* define if the compiler supports using expression for operator */ -#define HAVE_USING_OPERATOR 1 +#define HAVE_USING_OPERATOR /* define if your compiler has __attribute__ */ -#define HAVE___ATTRIBUTE__ 1 +#define HAVE___ATTRIBUTE__ /* define if your compiler has __builtin_expect */ #define HAVE___BUILTIN_EXPECT 1 /* define if your compiler has __sync_val_compare_and_swap */ -/* #undef HAVE___SYNC_VAL_COMPARE_AND_SWAP */ +#define HAVE___SYNC_VAL_COMPARE_AND_SWAP /* Define to the sub-directory in which libtool stores uninstalled libraries. */ -#define LT_OBJDIR ".libs/" +/* #undef LT_OBJDIR */ /* Name of package */ -#define PACKAGE "glog" +/* #undef PACKAGE */ /* Define to the address where bug reports for this package should be sent. */ -#define PACKAGE_BUGREPORT "opensource@google.com" +/* #undef PACKAGE_BUGREPORT */ /* Define to the full name of this package. */ -#define PACKAGE_NAME "glog" +/* #undef PACKAGE_NAME */ /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "glog 0.3.2" +/* #undef PACKAGE_STRING */ /* Define to the one symbol short name of this package. */ -#define PACKAGE_TARNAME "glog" +/* #undef PACKAGE_TARNAME */ /* Define to the home page for this package. */ -#define PACKAGE_URL "" +/* #undef PACKAGE_URL */ /* Define to the version of this package. */ -#define PACKAGE_VERSION "0.3.2" +/* #undef PACKAGE_VERSION */ /* How to access the PC from a struct ucontext */ #if defined(_M_X64) || defined(__amd64__) || defined(__x86_64__) @@ -162,7 +174,6 @@ /* Define to 1 if you have the ANSI C header files. */ /* #undef STDC_HEADERS */ -#define STDC_HEADERS 1 /* the namespace where STL code like vector<> is defined */ #define STL_NAMESPACE std @@ -170,7 +181,7 @@ #define TEST_SRC_DIR "." /* Version number of package */ -#define VERSION "0.3.2" +/* #undef VERSION */ /* Stops putting the code inside the Google namespace */ #define _END_GOOGLE_NAMESPACE_ } @@ -178,8 +189,4 @@ /* Puts following code inside the Google namespace */ #define _START_GOOGLE_NAMESPACE_ namespace google { -/* isn't getting defined by configure script when clang compilers are used - and cuases compilation errors in stactrace/unwind modules */ -#ifdef __clang__ -# define NO_FRAME_POINTER -#endif +#define GOOGLE_GLOG_DLL_DECL diff --git a/extern/libmv/third_party/glog/src/config_mac.h b/extern/libmv/third_party/glog/src/config_mac.h index 1695472f031..afa4262b022 100644 --- a/extern/libmv/third_party/glog/src/config_mac.h +++ b/extern/libmv/third_party/glog/src/config_mac.h @@ -1,143 +1,162 @@ -/* src/config.h. Generated from config.h.in by configure. */ -/* src/config.h.in. Generated from configure.ac by autoheader. */ +/* define if glog doesn't use RTTI */ +/* #undef DISABLE_RTTI */ /* Namespace for Google classes */ #define GOOGLE_NAMESPACE google /* Define if you have the `dladdr' function */ -#define HAVE_DLADDR 1 +/* #undef HAVE_DLADDR */ + +/* Define if you have the `snprintf' function */ +#define HAVE_SNPRINTF /* Define to 1 if you have the header file. */ -#define HAVE_DLFCN_H 1 +#define HAVE_DLFCN_H /* Define to 1 if you have the header file. */ -#define HAVE_EXECINFO_H 1 +#define HAVE_EXECINFO_H /* Define if you have the `fcntl' function */ -#define HAVE_FCNTL 1 +#define HAVE_FCNTL /* Define to 1 if you have the header file. */ -#define HAVE_GLOB_H 1 +#define HAVE_GLOB_H /* Define to 1 if you have the header file. */ #define HAVE_INTTYPES_H 1 /* Define to 1 if you have the `pthread' library (-lpthread). */ -#define HAVE_LIBPTHREAD 1 +/* #undef HAVE_LIBPTHREAD */ /* Define to 1 if you have the header file. */ -#define HAVE_LIBUNWIND_H 1 +#define HAVE_LIBUNWIND_H /* define if you have google gflags library */ -#define HAVE_LIB_GFLAGS 1 +#define HAVE_LIB_GFLAGS /* define if you have google gmock library */ /* #undef HAVE_LIB_GMOCK */ /* define if you have google gtest library */ -//#define HAVE_LIB_GTEST 1 +/* #undef HAVE_LIB_GTEST */ /* define if you have libunwind */ /* #undef HAVE_LIB_UNWIND */ /* Define to 1 if you have the header file. */ -#define HAVE_MEMORY_H 1 +#define HAVE_MEMORY_H + +/* define to disable multithreading support. */ +/* #undef NO_THREADS */ /* define if the compiler implements namespaces */ -#define HAVE_NAMESPACES 1 +#define HAVE_NAMESPACES /* Define if you have the 'pread' function */ -#define HAVE_PREAD 1 +#define HAVE_PREAD /* Define if you have POSIX threads libraries and header files. */ -#define HAVE_PTHREAD 1 +#define HAVE_PTHREAD /* Define to 1 if you have the header file. */ -#define HAVE_PWD_H 1 +#define HAVE_PWD_H /* Define if you have the 'pwrite' function */ -#define HAVE_PWRITE 1 +#define HAVE_PWRITE /* define if the compiler implements pthread_rwlock_* */ -#define HAVE_RWLOCK 1 +/* #undef HAVE_RWLOCK */ + +/* Define if you have the 'sigaction' function */ +#define HAVE_SIGACTION /* Define if you have the `sigaltstack' function */ -#define HAVE_SIGALTSTACK 1 +/* #undef HAVE_SIGALTSTACK */ /* Define to 1 if you have the header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the header file. */ -#define HAVE_STDLIB_H 1 +#define HAVE_STDLIB_H /* Define to 1 if you have the header file. */ -#define HAVE_STRINGS_H 1 +#define HAVE_STRINGS_H /* Define to 1 if you have the header file. */ -#define HAVE_STRING_H 1 +#define HAVE_STRING_H /* Define to 1 if you have the header file. */ -/* #undef HAVE_SYSCALL_H */ +#define HAVE_SYSCALL_H /* Define to 1 if you have the header file. */ -#define HAVE_SYSLOG_H 1 +#define HAVE_SYSLOG_H /* Define to 1 if you have the header file. */ -#define HAVE_SYS_STAT_H 1 +#define HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ -#define HAVE_SYS_SYSCALL_H 1 +#define HAVE_SYS_SYSCALL_H /* Define to 1 if you have the header file. */ -#define HAVE_SYS_TIME_H 1 +#define HAVE_SYS_TIME_H /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ -#define HAVE_SYS_UCONTEXT_H 1 +/* #undef HAVE_SYS_UCONTEXT_H */ /* Define to 1 if you have the header file. */ -#define HAVE_SYS_UTSNAME_H 1 +#define HAVE_SYS_UTSNAME_H /* Define to 1 if you have the header file. */ -/* #undef HAVE_UCONTEXT_H */ +#define HAVE_UCONTEXT_H /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 +/* Define to 1 if you have the header file. */ +#define HAVE_UNWIND_H 1 + /* define if the compiler supports using expression for operator */ -#define HAVE_USING_OPERATOR 1 +#define HAVE_USING_OPERATOR /* define if your compiler has __attribute__ */ -#define HAVE___ATTRIBUTE__ 1 +#define HAVE___ATTRIBUTE__ /* define if your compiler has __builtin_expect */ #define HAVE___BUILTIN_EXPECT 1 /* define if your compiler has __sync_val_compare_and_swap */ -/* #undef HAVE___SYNC_VAL_COMPARE_AND_SWAP */ +#define HAVE___SYNC_VAL_COMPARE_AND_SWAP + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +/* #undef LT_OBJDIR */ /* Name of package */ -#define PACKAGE "glog" +/* #undef PACKAGE */ /* Define to the address where bug reports for this package should be sent. */ -#define PACKAGE_BUGREPORT "opensource@google.com" +/* #undef PACKAGE_BUGREPORT */ /* Define to the full name of this package. */ -#define PACKAGE_NAME "glog" +/* #undef PACKAGE_NAME */ /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "glog 0.3.2" +/* #undef PACKAGE_STRING */ /* Define to the one symbol short name of this package. */ -#define PACKAGE_TARNAME "glog" +/* #undef PACKAGE_TARNAME */ + +/* Define to the home page for this package. */ +/* #undef PACKAGE_URL */ /* Define to the version of this package. */ -#define PACKAGE_VERSION "0.3.2" +/* #undef PACKAGE_VERSION */ /* How to access the PC from a struct ucontext */ -#undef PC_FROM_UCONTEXT +/* #undef PC_FROM_UCONTEXT */ /* Define to necessary symbol if this constant uses a non-standard name on your system. */ @@ -156,7 +175,7 @@ #define TEST_SRC_DIR "." /* Version number of package */ -#define VERSION "0.3.2" +/* #undef VERSION */ /* Stops putting the code inside the Google namespace */ #define _END_GOOGLE_NAMESPACE_ } @@ -164,8 +183,4 @@ /* Puts following code inside the Google namespace */ #define _START_GOOGLE_NAMESPACE_ namespace google { -/* isn't getting defined by configure script when clang compilers are used - and cuases compilation errors in stactrace/unwind modules */ -#ifdef __clang__ -# define NO_FRAME_POINTER -#endif +#define GOOGLE_GLOG_DLL_DECL diff --git a/extern/libmv/third_party/glog/src/demangle.h b/extern/libmv/third_party/glog/src/demangle.h index 9c7591527c0..265302997fc 100644 --- a/extern/libmv/third_party/glog/src/demangle.h +++ b/extern/libmv/third_party/glog/src/demangle.h @@ -77,7 +77,7 @@ _START_GOOGLE_NAMESPACE_ // Demangle "mangled". On success, return true and write the // demangled symbol name to "out". Otherwise, return false. // "out" is modified even if demangling is unsuccessful. -bool Demangle(const char *mangled, char *out, int out_size); +bool GOOGLE_GLOG_DLL_DECL Demangle(const char *mangled, char *out, int out_size); _END_GOOGLE_NAMESPACE_ diff --git a/extern/libmv/third_party/glog/src/glog/logging.h b/extern/libmv/third_party/glog/src/glog/logging.h index 247c0467b6a..c632fcaca1b 100644 --- a/extern/libmv/third_party/glog/src/glog/logging.h +++ b/extern/libmv/third_party/glog/src/glog/logging.h @@ -52,14 +52,6 @@ #endif #include -// Annoying stuff for windows -- makes sure clients can import these functions -#ifndef GOOGLE_GLOG_DLL_DECL -# if defined(_WIN32) && !defined(__CYGWIN__) -# define GOOGLE_GLOG_DLL_DECL __declspec(dllimport) -# else -# define GOOGLE_GLOG_DLL_DECL -# endif -#endif #if defined(_MSC_VER) #define GLOG_MSVC_PUSH_DISABLE_WARNING(n) __pragma(warning(push)) \ __pragma(warning(disable:n)) @@ -69,6 +61,15 @@ #define GLOG_MSVC_POP_WARNING() #endif +// Annoying stuff for windows -- makes sure clients can import these functions +#ifndef GOOGLE_GLOG_DLL_DECL +# if defined(_WIN32) && !defined(__CYGWIN__) +# define GOOGLE_GLOG_DLL_DECL __declspec(dllimport) +# else +# define GOOGLE_GLOG_DLL_DECL +# endif +#endif + // We care a lot about number of bits things take up. Unfortunately, // systems define their bit-specific ints in a lot of different ways. // We use our own way, and have a typedef to get there. @@ -133,15 +134,28 @@ typedef unsigned __int64 uint64; #ifndef GOOGLE_PREDICT_BRANCH_NOT_TAKEN #if 1 #define GOOGLE_PREDICT_BRANCH_NOT_TAKEN(x) (__builtin_expect(x, 0)) -#define GOOGLE_PREDICT_FALSE(x) (__builtin_expect(x, 0)) -#define GOOGLE_PREDICT_TRUE(x) (__builtin_expect(!!(x), 1)) #else #define GOOGLE_PREDICT_BRANCH_NOT_TAKEN(x) x +#endif +#endif + +#ifndef GOOGLE_PREDICT_FALSE +#if 1 +#define GOOGLE_PREDICT_FALSE(x) (__builtin_expect(x, 0)) +#else #define GOOGLE_PREDICT_FALSE(x) x +#endif +#endif + +#ifndef GOOGLE_PREDICT_TRUE +#if 1 +#define GOOGLE_PREDICT_TRUE(x) (__builtin_expect(!!(x), 1)) +#else #define GOOGLE_PREDICT_TRUE(x) x #endif #endif + // Make a bunch of macros for logging. The way to log things is to stream // things to LOG(). E.g., // @@ -351,6 +365,9 @@ DECLARE_int32(minloglevel); // default logging directory. DECLARE_string(log_dir); +// Set the log file mode. +DECLARE_int32(logfile_mode); + // Sets the path of the directory into which to put additional links // to the log files. DECLARE_string(log_link); @@ -546,7 +563,7 @@ class LogSink; // defined below // vector *outvec; // The cast is to disambiguate NULL arguments. #define LOG_STRING(severity, outvec) \ - LOG_TO_STRING_##severity(static_cast*>(outvec)).stream() + LOG_TO_STRING_##severity(static_cast*>(outvec)).stream() #define LOG_IF(severity, condition) \ !(condition) ? (void) 0 : google::LogMessageVoidify() & LOG(severity) @@ -631,7 +648,7 @@ void MakeCheckOpValueString(std::ostream* os, const unsigned char& v); // Build the error message string. Specify no inlining for code size. template std::string* MakeCheckOpString(const T1& v1, const T2& v2, const char* exprtext) - __attribute__ ((noinline)); + __attribute__((noinline)); namespace base { namespace internal { @@ -714,10 +731,10 @@ DEFINE_CHECK_OP_IMPL(Check_GT, > ) // to reduce the overhead of CHECK statments by 2x. // Real DCHECK-heavy tests have seen 1.5x speedups. -// The meaning of "string" might be different between now and +// The meaning of "string" might be different between now and // when this macro gets invoked (e.g., if someone is experimenting // with other string implementations that get defined after this -// file is included). Save the current meaning now and use it +// file is included). Save the current meaning now and use it // in the macro. typedef std::string _Check_string; #define CHECK_OP_LOG(name, op, val1, val2, log) \ @@ -910,6 +927,9 @@ template struct CompileAssert { }; struct CrashReason; + +// Returns true if FailureSignalHandler is installed. +bool IsFailureSignalHandlerInstalled(); } // namespace glog_internal_namespace_ #define GOOGLE_GLOG_COMPILE_ASSERT(expr, msg) \ @@ -1155,6 +1175,8 @@ public: char* str() const { return pbase(); } private: + LogStream(const LogStream&); + LogStream& operator=(const LogStream&); base_logging::LogStreamBuf streambuf_; int ctr_; // Counter hack (for the LOG_EVERY_X() macro) LogStream *self_; // Consistency check hack @@ -1222,7 +1244,7 @@ public: void SendToSyslogAndLog(); // Actually dispatch to syslog and the logs // Call abort() or similar to perform LOG(FATAL) crash. - static void Fail() __attribute__ ((noreturn)); + static void __attribute__((noreturn)) Fail(); std::ostream& stream(); @@ -1270,7 +1292,7 @@ class GOOGLE_GLOG_DLL_DECL LogMessageFatal : public LogMessage { public: LogMessageFatal(const char* file, int line); LogMessageFatal(const char* file, int line, const CheckOpString& result); - ~LogMessageFatal() __attribute__ ((noreturn)); + __attribute__((noreturn)) ~LogMessageFatal(); }; // A non-macro interface to the log facility; (useful @@ -1574,7 +1596,7 @@ class GOOGLE_GLOG_DLL_DECL NullStreamFatal : public NullStream { NullStreamFatal() { } NullStreamFatal(const char* file, int line, const CheckOpString& result) : NullStream(file, line, result) { } - __attribute__ ((noreturn)) ~NullStreamFatal() { _exit(1); } + __attribute__((noreturn)) ~NullStreamFatal() throw () { _exit(1); } }; // Install a signal handler that will dump signal information and a stack diff --git a/extern/libmv/third_party/glog/src/glog/raw_logging.h b/extern/libmv/third_party/glog/src/glog/raw_logging.h index b030f7f736d..de751d8a6b2 100644 --- a/extern/libmv/third_party/glog/src/glog/raw_logging.h +++ b/extern/libmv/third_party/glog/src/glog/raw_logging.h @@ -32,7 +32,6 @@ // Thread-safe logging routines that do not allocate any memory or // acquire any locks, and can therefore be used by low-level memory // allocation and synchronization code. - #ifdef WIN32 # include "windows/glog/raw_logging.h" #else // WIN32 @@ -177,7 +176,7 @@ GOOGLE_GLOG_DLL_DECL void RawLog__(LogSeverity severity, const char* file, int line, const char* format, ...) - __attribute__((__format__ (__printf__, 4, 5))); + ; // Hack to propagate time information into this module so that // this module does not have to directly call localtime_r(), diff --git a/extern/libmv/third_party/glog/src/logging.cc b/extern/libmv/third_party/glog/src/logging.cc index 75047353535..ec9eef1b83d 100644 --- a/extern/libmv/third_party/glog/src/logging.cc +++ b/extern/libmv/third_party/glog/src/logging.cc @@ -35,7 +35,6 @@ #include #include #include -#include #ifdef HAVE_UNISTD_H # include // For _exit. #endif @@ -89,6 +88,10 @@ using std::perror; using std::fdopen; #endif +#ifdef _WIN32 +#define fdopen _fdopen +#endif + // There is no thread annotation support. #define EXCLUSIVE_LOCKS_REQUIRED(mu) @@ -162,6 +165,8 @@ static const char* DefaultLogDir() { return ""; } +GLOG_DEFINE_int32(logfile_mode, 0664, "Log file mode/permissions."); + GLOG_DEFINE_string(log_dir, DefaultLogDir(), "If specified, logfiles are written into this directory instead " "of the default logging directory."); @@ -254,6 +259,7 @@ static bool TerminalSupportsColor() { !strcmp(term, "xterm") || !strcmp(term, "xterm-color") || !strcmp(term, "xterm-256color") || + !strcmp(term, "screen-256color") || !strcmp(term, "screen") || !strcmp(term, "linux") || !strcmp(term, "cygwin"); @@ -307,7 +313,7 @@ WORD GetColorAttribute(GLogColor color) { #else // Returns the ANSI color code for the given color. -static const char* GetAnsiColorCode(GLogColor color) { +const char* GetAnsiColorCode(GLogColor color) { switch (color) { case COLOR_RED: return "1"; case COLOR_GREEN: return "2"; @@ -570,7 +576,7 @@ inline void LogDestination::FlushLogFilesUnsafe(int min_severity) { // assume we have the log_mutex or we simply don't care // about it for (int i = min_severity; i < NUM_SEVERITIES; i++) { - LogDestination* log = log_destination(i); + LogDestination* log = log_destinations_[i]; if (log != NULL) { // Flush the base fileobject_ logger directly instead of going // through any wrappers to reduce chance of deadlock. @@ -817,6 +823,8 @@ void LogDestination::DeleteLogDestinations() { delete log_destinations_[severity]; log_destinations_[severity] = NULL; } + MutexLock l(&sink_mutex_); + delete sinks_; } namespace { @@ -897,7 +905,7 @@ bool LogFileObject::CreateLogfile(const string& time_pid_string) { string string_filename = base_filename_+filename_extension_+ time_pid_string; const char* filename = string_filename.c_str(); - int fd = open(filename, O_WRONLY | O_CREAT | O_EXCL, 0664); + int fd = open(filename, O_WRONLY | O_CREAT | O_EXCL, FLAGS_logfile_mode); if (fd == -1) return false; #ifdef HAVE_FCNTL // Mark the file close-on-exec. We don't really care if this fails @@ -1669,8 +1677,6 @@ void LogToStderr() { namespace base { namespace internal { -namespace { - bool GetExitOnDFatal() { MutexLock l(&log_mutex); return exit_on_dfatal; @@ -1691,8 +1697,6 @@ void SetExitOnDFatal(bool value) { exit_on_dfatal = value; } -} // namespace - } // namespace internal } // namespace base diff --git a/extern/libmv/third_party/glog/src/signalhandler.cc b/extern/libmv/third_party/glog/src/signalhandler.cc index cccd800d769..a7aef8b99d2 100644 --- a/extern/libmv/third_party/glog/src/signalhandler.cc +++ b/extern/libmv/third_party/glog/src/signalhandler.cc @@ -335,6 +335,22 @@ void FailureSignalHandler(int signal_number, #endif // HAVE_SIGACTION +namespace glog_internal_namespace_ { + +bool IsFailureSignalHandlerInstalled() { +#ifdef HAVE_SIGACTION + struct sigaction sig_action; + memset(&sig_action, 0, sizeof(sig_action)); + sigemptyset(&sig_action.sa_mask); + sigaction(SIGABRT, NULL, &sig_action); + if (sig_action.sa_sigaction == &FailureSignalHandler) + return true; +#endif // HAVE_SIGACTION + return false; +} + +} // namespace glog_internal_namespace_ + void InstallFailureSignalHandler() { #ifdef HAVE_SIGACTION // Build the sigaction struct. diff --git a/extern/libmv/third_party/glog/src/utilities.cc b/extern/libmv/third_party/glog/src/utilities.cc index 1e8836d243f..5c88e58d3c0 100644 --- a/extern/libmv/third_party/glog/src/utilities.cc +++ b/extern/libmv/third_party/glog/src/utilities.cc @@ -84,7 +84,7 @@ static void DebugWriteToStderr(const char* data, void *) { } } -static void DebugWriteToString(const char* data, void *arg) { +void DebugWriteToString(const char* data, void *arg) { reinterpret_cast(arg)->append(data); } @@ -138,13 +138,15 @@ static void DumpStackTraceAndExit() { // TOOD(hamaji): Use signal instead of sigaction? #ifdef HAVE_SIGACTION - // Set the default signal handler for SIGABRT, to avoid invoking our - // own signal handler installed by InstallFailedSignalHandler(). - struct sigaction sig_action; - memset(&sig_action, 0, sizeof(sig_action)); - sigemptyset(&sig_action.sa_mask); - sig_action.sa_handler = SIG_DFL; - sigaction(SIGABRT, &sig_action, NULL); + if (IsFailureSignalHandlerInstalled()) { + // Set the default signal handler for SIGABRT, to avoid invoking our + // own signal handler installed by InstallFailureSignalHandler(). + struct sigaction sig_action; + memset(&sig_action, 0, sizeof(sig_action)); + sigemptyset(&sig_action.sa_mask); + sig_action.sa_handler = SIG_DFL; + sigaction(SIGABRT, &sig_action, NULL); + } #endif // HAVE_SIGACTION abort(); diff --git a/extern/libmv/third_party/glog/src/vlog_is_on.cc b/extern/libmv/third_party/glog/src/vlog_is_on.cc index cd7fc19bca8..4c95583b683 100644 --- a/extern/libmv/third_party/glog/src/vlog_is_on.cc +++ b/extern/libmv/third_party/glog/src/vlog_is_on.cc @@ -62,8 +62,6 @@ _START_GOOGLE_NAMESPACE_ namespace glog_internal_namespace_ { -namespace { - // Implementation of fnmatch that does not need 0-termination // of arguments and does not allocate any memory, // but we only support "*" and "?" wildcards, not the "[...]" patterns. @@ -97,8 +95,6 @@ GOOGLE_GLOG_DLL_DECL bool SafeFNMatch_(const char* pattern, } } -} // namespace - } // namespace glog_internal_namespace_ using glog_internal_namespace_::SafeFNMatch_; @@ -166,30 +162,32 @@ int SetVLOGLevel(const char* module_pattern, int log_level) { int result = FLAGS_v; int const pattern_len = strlen(module_pattern); bool found = false; - MutexLock l(&vmodule_lock); // protect whole read-modify-write - for (const VModuleInfo* info = vmodule_list; - info != NULL; info = info->next) { - if (info->module_pattern == module_pattern) { - if (!found) { + { + MutexLock l(&vmodule_lock); // protect whole read-modify-write + for (const VModuleInfo* info = vmodule_list; + info != NULL; info = info->next) { + if (info->module_pattern == module_pattern) { + if (!found) { + result = info->vlog_level; + found = true; + } + info->vlog_level = log_level; + } else if (!found && + SafeFNMatch_(info->module_pattern.c_str(), + info->module_pattern.size(), + module_pattern, pattern_len)) { result = info->vlog_level; found = true; } + } + if (!found) { + VModuleInfo* info = new VModuleInfo; + info->module_pattern = module_pattern; info->vlog_level = log_level; - } else if (!found && - SafeFNMatch_(info->module_pattern.c_str(), - info->module_pattern.size(), - module_pattern, pattern_len)) { - result = info->vlog_level; - found = true; + info->next = vmodule_list; + vmodule_list = info; } } - if (!found) { - VModuleInfo* info = new VModuleInfo; - info->module_pattern = module_pattern; - info->vlog_level = log_level; - info->next = vmodule_list; - vmodule_list = info; - } RAW_VLOG(1, "Set VLOG level for \"%s\" to %d", module_pattern, log_level); return result; } diff --git a/extern/libmv/third_party/glog/src/windows/config.h b/extern/libmv/third_party/glog/src/windows/config.h index 9fb3cc564d5..279eca478d5 100644 --- a/extern/libmv/third_party/glog/src/windows/config.h +++ b/extern/libmv/third_party/glog/src/windows/config.h @@ -12,6 +12,10 @@ /* Puts following code inside the Google namespace */ #define _START_GOOGLE_NAMESPACE_ namespace google { +#ifdef __MINGW32__ +# define HAVE_SNPRINTF +#endif + /* Always the empty-string on non-windows systems. On windows, should be "__declspec(dllexport)". This way, when we compile the dll, we export our functions/classes. It's safe to define this here because config.h is only diff --git a/extern/libmv/third_party/glog/src/windows/glog/logging.h b/extern/libmv/third_party/glog/src/windows/glog/logging.h index 6e9c9224f92..fec5d7672cd 100644 --- a/extern/libmv/third_party/glog/src/windows/glog/logging.h +++ b/extern/libmv/third_party/glog/src/windows/glog/logging.h @@ -919,6 +919,9 @@ template struct CompileAssert { }; struct CrashReason; + +// Returns true if FailureSignalHandler is installed. +bool IsFailureSignalHandlerInstalled(); } // namespace glog_internal_namespace_ #define GOOGLE_GLOG_COMPILE_ASSERT(expr, msg) \ diff --git a/extern/libmv/third_party/glog/src/windows/port.cc b/extern/libmv/third_party/glog/src/windows/port.cc index c16111a4b6d..a2f8395de1d 100644 --- a/extern/libmv/third_party/glog/src/windows/port.cc +++ b/extern/libmv/third_party/glog/src/windows/port.cc @@ -36,7 +36,7 @@ # error You should only be including windows/port.cc in a windows environment! #endif -#include "config.h" +#include "../config.h" #include // for va_list, va_start, va_end #include // for strstr() #include @@ -55,7 +55,7 @@ int safe_vsnprintf(char *str, size_t size, const char *format, va_list ap) { return _vsnprintf(str, size-1, format, ap); } -#ifndef __MINGW64__ +#ifndef HAVE_SNPRINTF int snprintf(char *str, size_t size, const char *format, ...) { va_list ap; va_start(ap, format); diff --git a/extern/libmv/third_party/glog/src/windows/port.h b/extern/libmv/third_party/glog/src/windows/port.h index 4879cbf5f92..3be525e8ce9 100644 --- a/extern/libmv/third_party/glog/src/windows/port.h +++ b/extern/libmv/third_party/glog/src/windows/port.h @@ -41,7 +41,7 @@ #ifndef CTEMPLATE_WINDOWS_PORT_H_ #define CTEMPLATE_WINDOWS_PORT_H_ -#include "config.h" +#include "../config.h" #ifdef _WIN32 @@ -111,12 +111,16 @@ enum { STDIN_FILENO = 0, STDOUT_FILENO = 1, STDERR_FILENO = 2 }; * because they don't always NUL-terminate. :-( We also can't use the * name vsnprintf, since windows defines that (but not snprintf (!)). */ -extern int snprintf(char *str, size_t size, +#ifndef HAVE_SNPRINTF +extern int GOOGLE_GLOG_DLL_DECL snprintf(char *str, size_t size, const char *format, ...); -extern int safe_vsnprintf(char *str, size_t size, +#endif +extern int GOOGLE_GLOG_DLL_DECL safe_vsnprintf(char *str, size_t size, const char *format, va_list ap); #define vsnprintf(str, size, format, ap) safe_vsnprintf(str, size, format, ap) +#ifndef va_copy #define va_copy(dst, src) (dst) = (src) +#endif /* Windows doesn't support specifying the number of buckets as a * hash_map constructor arg, so we leave this blank. @@ -129,9 +133,6 @@ extern int safe_vsnprintf(char *str, size_t size, typedef int pid_t; #define getpid _getpid -#include -typedef SSIZE_T ssize_t; - #endif // _MSC_VER // ----------------------------------- THREADS @@ -143,30 +144,13 @@ enum { PTHREAD_ONCE_INIT = 0 }; // important that this be 0! for SpinLock #define pthread_equal(pthread_t_1, pthread_t_2) ((pthread_t_1)==(pthread_t_2)) inline struct tm* localtime_r(const time_t* timep, struct tm* result) { -#if __MINGW32__ - struct tm *local_result; - local_result = localtime (timep); - - if (local_result == NULL || result == NULL) - return NULL; - - memcpy (result, local_result, sizeof (result)); - - return result; -#else localtime_s(result, timep); return result; -#endif } inline char* strerror_r(int errnum, char* buf, size_t buflen) { -#if __MINGW32__ - strncpy(buf, "Not implemented yet", buflen); - return buf; -#else strerror_s(buf, buflen, errnum); return buf; -#endif } #ifndef __cplusplus diff --git a/extern/libmv/third_party/glog/src/windows/preprocess.sh b/extern/libmv/third_party/glog/src/windows/preprocess.sh index ea4352e8e3a..5398988e7ea 100755 --- a/extern/libmv/third_party/glog/src/windows/preprocess.sh +++ b/extern/libmv/third_party/glog/src/windows/preprocess.sh @@ -96,6 +96,7 @@ DLLDEF_DEFINES="\ -e "s!@ac_cv_have___builtin_expect@!0!g" \ -e "s!@ac_cv_cxx_using_operator@!1!g" \ -e "s!@ac_cv___attribute___noreturn@!!g" \ + -e "s!@ac_cv___attribute___noinline@!!g" \ -e "s!@ac_cv___attribute___printf_4_5@!!g" \ -e "s!@ac_google_attribute@!${HAVE___ATTRIBUTE__:-0}!g" \ -e "s!@ac_google_end_namespace@!$_END_GOOGLE_NAMESPACE_!g" \ -- cgit v1.2.3