blender/extern/libmv/third_party/ceres/ChangeLog

622 lines
23 KiB
Plaintext
Raw Normal View History

commit c290df85a40a8dd117b5eccc515bf22b0d9b1945
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Sun Apr 7 09:17:47 2013 -0700
Typo fix.
(Thanks to Pieree Moulon for reporting this)
Change-Id: I536724ab4b7e9c97768d5197aa86b41f37a04d38
commit dc3a27fa60ba7c6b152660afd5abe1c8b608dec3
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Sat Apr 6 19:32:47 2013 -0700
Fix MatrixVectorMultiply and incorrect DCHECKS.
(Thanks to Serget Sharybin for reporting this)
Change-Id: I6bbc41667308fc2932871cf25ad07b431f70801f
commit 585607171f20d591033dfea43b6dd22fea755a6c
Author: Petter Strandmark <petter.strandmark@gmail.com>
Date: Sun Apr 7 01:24:13 2013 +0200
<iterator> needed for back_insert_iterator
Adding this header was required to make Ceres compile with VS2010.
Change-Id: I000c860da4fd385d625e70695564225bdfd433c7
commit 520d35ef22dbcb05e344451c03ae64304e524a06
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Thu Apr 4 08:16:02 2013 -0700
Further BLAS improvements.
1. Switch to Eigen's implementation when all dimensions are fixed.
2. Use lazyProduct for eigen matrix-vector product. This brings
eigen's performance on iterative_schur closer to what it used
to be before the last commit. There is however still an
improvement to be had by using the naive implementation when
the matrix and vector have dynamic dimensions.
BENCHMARK
HEAD CHANGE
problem-16-22106-pre.txt
gcc-eigen sparse_schur 0.859 gcc-eigen sparse_schur 0.853
clang-eigen sparse_schur 0.848 clang-eigen sparse_schur 0.850
gcc-blas sparse_schur 0.956 gcc-blas sparse_schur 0.865
clang-blas sparse_schur 0.954 clang-blas sparse_schur 0.858
gcc-eigen iterative_schur 4.656 gcc-eigen iterative_schur 3.271
clang-eigen iterative_schur 4.664 clang-eigen iterative_schur 3.307
gcc-blas iterative_schur 2.598 gcc-blas iterative_schur 2.620
clang-blas iterative_schur 2.554 clang-blas iterative_schur 2.567
problem-49-7776-pre.txt
gcc-eigen sparse_schur 0.477 gcc-eigen sparse_schur 0.472
clang-eigen sparse_schur 0.475 clang-eigen sparse_schur 0.479
gcc-blas sparse_schur 0.521 gcc-blas sparse_schur 0.469
clang-blas sparse_schur 0.508 clang-blas sparse_schur 0.471
gcc-eigen iterative_schur 3.172 gcc-eigen iterative_schur 2.088
clang-eigen iterative_schur 3.161 clang-eigen iterative_schur 2.079
gcc-blas iterative_schur 1.701 gcc-blas iterative_schur 1.720
clang-blas iterative_schur 1.708 clang-blas iterative_schur 1.694
problem-245-198739-pre.txt
gcc-eigen sparse_schur 28.092 gcc-eigen sparse_schur 28.233
clang-eigen sparse_schur 28.148 clang-eigen sparse_schur 28.400
gcc-blas sparse_schur 30.919 gcc-blas sparse_schur 28.110
clang-blas sparse_schur 31.001 clang-blas sparse_schur 28.407
gcc-eigen iterative_schur 63.095 gcc-eigen iterative_schur 43.694
clang-eigen iterative_schur 63.412 clang-eigen iterative_schur 43.473
gcc-blas iterative_schur 33.353 gcc-blas iterative_schur 33.321
clang-blas iterative_schur 33.276 clang-blas iterative_schur 33.278
problem-257-65132-pre.txt
gcc-eigen sparse_schur 3.687 gcc-eigen sparse_schur 3.629
clang-eigen sparse_schur 3.669 clang-eigen sparse_schur 3.652
gcc-blas sparse_schur 3.947 gcc-blas sparse_schur 3.673
clang-blas sparse_schur 3.952 clang-blas sparse_schur 3.678
gcc-eigen iterative_schur 121.512 gcc-eigen iterative_schur 76.833
clang-eigen iterative_schur 123.547 clang-eigen iterative_schur 78.763
gcc-blas iterative_schur 68.334 gcc-blas iterative_schur 68.612
clang-blas iterative_schur 67.793 clang-blas iterative_schur 68.266
Notes:
1. Naive BLAS was a bit worse than eigen on fixed sized matrices. We did not see this
before because of the different inlining thresholds. Fixing this boosted eigen's
performance. Also the disparity between gcc and clang has gone away.
2. SPARSE_SCHUR performance remains the same, since it is only testing static sized
matrices.
3. ITERATIVE_SCHUR performance goes up substantially due to the lazyProduct change,
but even there, since most of the products are dynamic sized, the naive implementation
wins handily.
Change-Id: Idc17f35b9c68aaebb1b2e131adf3af8374a85a4c
commit 25ac54807eedf16fd6c34efc390901ee549a7d14
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Wed Apr 3 18:51:27 2013 -0700
Speed up Jets.
Change-Id: I101bac1b1a1cf72ca49ffcf843b73c0ef5a6dfcb
commit 3d6eceb45cf27024865908f0c10a5c2b0f8719cf
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Tue Apr 2 21:45:48 2013 -0700
Replace more instances of Eigen GEMV with Ceres BLAS.
With this ITERATIVE_SCHUR with JACOBI preconditioner went down from
280 seconds to 150 seconds on problem-744-543562-pre.txt.
Change-Id: I4f319c1108421e8d59f58654a4c0576ad65df609
commit 296fa9b1279ee1900c8ae32d70e97cd10fc0b46b
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Tue Apr 2 09:44:15 2013 -0700
Replace Eigen block operations with small GEMM and GEMV loops.
1. Add Matrix-Matrix and Matrix-Vector multiply functions.
2. Replace Eigen usage in SchurEliminator with these custom
matrix operations.
3. Save on some memory allocations in ChunkOuterProduct.
4. Replace LDLT with LLT.
As a result on problem-16-22106-pre.txt, the linear solver time
goes down from 1.2s to 0.64s.
Change-Id: I2daa667960e0a1e8834489965a30be31f37fd87f
commit 222ca20e8facf706582fe696b7f41247391eac12
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Mon Apr 1 09:11:07 2013 -0700
SuiteSparse cleanup.
1. Silence CHOLMOD's indefiniteness warnings.
2. Add a comment about how the error handling in suitesparse.cc
needs to be improved.
3. Move the analysis logging into suitesparse.cc and out of the
three callsites.
Change-Id: Idd396b8ea4bf59fc1ffc7f9fcbbc7b38ed71643c
commit b7ba93459b7f584eedb1a9f42f3d06bccabd33dc
Author: Petter Strandmark <petter.strandmark@gmail.com>
Date: Tue Feb 19 12:52:58 2013 +0100
Enable larger tuple sizes for Visual Studio 2012.
Visual Studio 2012 does not have variadic templates and implements
tuples differently. By default, only sizes up to 5 are supported,
which conflicts with Gtest.
Change-Id: Ieb8d59e4329863cbfa2729d8a76db0714c08d259
commit 564a83fcc690ac8383bf52a782c45757ae7fa2ad
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Tue Mar 26 11:11:43 2013 -0700
Lint cleanup from William Rucklidge.
Change-Id: I8d4a0aa3e264775d20e99a6b5265f3023de92560
commit cbe64827becbbaab5b435a71bf00353b4ddd026b
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Mon Mar 25 17:39:53 2013 -0700
Update documentation
Change-Id: Iea3c4b5409e593b1fb070a491ba8a479db32ca58
commit 802639c89603c9541e624766349d1989a1f641c0
Author: Pablo Speciale <pablo.speciale@gmail.com>
Date: Mon Mar 25 20:53:45 2013 -0700
ceresproblem label was incorrect
Change-Id: I3e210375adba4fa50ff3c25398b20a65d241cb35
commit 6bcb8d9c304a3b218f8788018dfdfe368bb7d60c
Author: Pablo Speciale <pablo.speciale@gmail.com>
Date: Mon Mar 25 16:40:26 2013 -0700
Compiling against static or shared library
Change-Id: I3fb35e9a49f90b8894f59dde49c90a7c2dd74b0a
commit 619cfe692020c078275b68eac2167232fafdfffb
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Mon Mar 25 14:03:41 2013 -0700
Update version history
Change-Id: I1d036efad1507efd19d8581f147b38170b1f0543
commit 6ae34757850a5fa8213e0d1a540d9d75d6840a08
Author: Pablo Speciale <pablo.speciale@gmail.com>
Date: Sun Mar 24 22:30:52 2013 -0700
Added documentation regarding the use of Ceres with cmake (once installed)
Commets about the flag ``BUILD_DOCUMENTATION=ON``
Change-Id: I8814927e60af190c8043bfc36e77fe76bfe6f562
commit f46de9e697eb5b8756084615e29ded48600a4d39
Author: Sergey Sharybin <sergey.vfx@gmail.com>
Date: Thu Mar 21 15:31:35 2013 +0600
Silent no previous declaration warning for FindParameterBlockOrDie
Use anonymous namespace for this. Also move some surrounding static
function to this anonymous namespace.
Change-Id: Ie235eb7936976563a9db115ec13c59e6e6869b96
commit 16636efeffacdd69d075a60ea8a94d98fd81c6fd
Author: Sergey Sharybin <sergey.vfx@gmail.com>
Date: Thu Mar 21 15:12:01 2013 +0600
Compilation fix for msvc2010
Usage of back_inserter requires <iterator> header when using msvc2010
Change-Id: I92ee1649795ce0468ce337fc414eb0ca6e90c51e
commit ac0d416991274ed67fe85371f09b07f706a6db9a
Author: Pablo Speciale <pablo.speciale@gmail.com>
Date: Wed Mar 20 18:32:14 2013 -0700
google-glog link wasn't working, 'http://' twice
Change-Id: I9cd96d3609f9b1ba31cd480fef1702972be86741
commit 55b6c966c4f697cb5d11982201733aa3bce7a5a7
Author: Pablo Speciale <pablo.speciale@gmail.com>
Date: Wed Mar 20 17:44:04 2013 -0700
* Fixed the location of the Ceres doc (once installed with 'make install')
* Doing 'make ceres_docs' can be used to create the documentation (if the BUILD_DOCUMENTATION=ON)
* Included the copyright boilerplate for FindSphinx.cmake
Change-Id: Iea21eba9e68384b4fe72c85fa88c76b0ba8a7a1d
commit a986912555b304a47dd0c2a02892046fde15d091
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Wed Mar 20 11:50:34 2013 -0700
Update version history
Change-Id: I238279719219a26d0d1bb32e0610f41007d3dcef
commit 16dbf11626c52c013f1dca6375f993a554e31d51
Author: Pablo Speciale <pablo.speciale@gmail.com>
Date: Mon Mar 11 14:44:02 2013 -0700
Added CeresConfig.cmake based on this example:
https://projects.kde.org/projects/kde/kdeexamples/repository/revisions/master/show/buildsystem/HowToInstallALibrary
Change-Id: I130cac5d43d9fbbf359abc04d3691e25c4e2bb63
commit 015d57f173fab7ea040ee01474101e208ff72be6
Author: Pablo Speciale <pablo.speciale@gmail.com>
Date: Tue Mar 19 14:05:14 2013 -0700
Avoiding the Warning: "deprecated conversion from string constant to char*"
Change-Id: Ifa47f9b0724f79c5c695828628c89818ddefd844
commit c51b11c1046366035e7da95e4d8a78100ef3f153
Author: Pablo Speciale <pablo.speciale@gmail.com>
Date: Tue Mar 12 00:56:56 2013 -0700
Sphinx and CMake, based on this example:
http://ericscottbarr.com/blog/2012/03/sphinx-and-cmake-beautiful-documentation-for-c-projects/
The 'docs/CMakeLists.txt' file was deleted in this commit: 0abfb8f46f534b05413bb4d64b960d6fd0a9befb
Thanks to Arnaud Gelas, he has passed some links:
https://github.com/InsightSoftwareConsortium/ITKExamples/blob/master/CMake/FindSphinx.cmake
https://github.com/InsightSoftwareConsortium/ITKExamples/blob/master/CMakeLists.txt#L120-L154
Change-Id: Ic65e7f8ec5280d1e71a897a144417a21761c5553
commit 793a339335d8d52279efb49bcd704d196646efb5
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Wed Mar 13 12:14:00 2013 -0700
Make Android.mk play better with the external consraints
Change-Id: Ia0a1037d97c032a4ba1a9acbf4e04c192d12ee61
commit 700d50d8074f0273b305fe6d9f795f1dcb988048
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Tue Mar 12 16:12:42 2013 -0700
Lint cleanup from William Rucklidge
Change-Id: Iacbf77246109f687708696eee7fb6144d23e7ec5
commit 8140f0fc979f5728f37cfb68362f31e7e37b46bb
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Tue Mar 12 09:45:08 2013 -0700
Modularize the build.
1. Add -DLINE_SEARCH_MINIMIZER to CMake to make the line search
minimizer optional.
2. Better handling of -DSUITESPARSE/-DCXSPARSE in top level cmake
file.
3. Disable code which will never be used if SuiteSparse and/or
CXSparse is not available.
4. Update build docs.
5. Update jni/Android.mk
6. Minor lint cleanup from William Rucklidge.
Change-Id: If60460a858000df82faed7a6bb056dd2bfdde562
commit c59c1e44727c62d43523b672c1c132865cd25784
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Mon Mar 11 17:28:38 2013 -0700
Propagate ifdefs correctly to improve build efficiency.
With -DRESTRICT_SCHUR_SPECIALIZATIONS, now the various
specializations are empty, decreasing build time and
reducing the size of the static library.
Change-Id: I8ec431279741a9a83516a4167c54a364c4608143
commit 32874b861fc54b33aa4272e8c81bb001aa1e1e60
Author: Yuliy Schwartzburg <syx818@gmail.com>
Date: Fri Mar 8 11:30:44 2013 +0100
Fix CMake "LIB_SUFFIX" for non-linux installations
Change-Id: Ieb8a2825a4378b388149e7934ecc7b96ba5a29fa
commit 58b8c68f29c2c15edbc5f77102796df661020312
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Sat Mar 9 17:17:43 2013 -0800
Clean up rotation.h
Change-Id: I3370c9883728cda068c9650a2c2a50641fd8299c
commit 020d8e1e48f341f3b990ac449998d36aaca2771f
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Wed Mar 6 16:19:26 2013 -0800
Better error reporting in the modeling API.
More informative error when user passes an
unknown parameter block to Problem methods.
Change-Id: I517360e4b0b55814904ca3e664877d76ad3f59e8
commit 5e7ce8a950cf5794c63817827ce66a3a4e66e7b6
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Wed Mar 6 11:38:41 2013 -0800
Fix Problem::Evaluate documentation
Change-Id: I8c70a24743cff2d9cface99ef0f5d34c78f769c6
commit 0a4f5f8f7428148f21183e743d091d2079406604
Author: Taylor Braun-Jones <taylor@braun-jones.org>
Date: Wed Mar 6 00:00:32 2013 -0500
Fix operator() signature in several sections of the documentation
Change-Id: I73f9d150a738f7b136fbc1f98fc60b0f306bd7f9
commit 2c648dbc43025927301684fc82d95ccf6b6c21bc
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Tue Mar 5 15:20:15 2013 -0800
Make examples independent of ceres internals.
Change-Id: I6b6913e067a86fea713646218c8da1439d349d74
commit e7148795c3f2ce1f6625a7c81545707a6cbde3eb
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Mon Mar 4 10:17:30 2013 -0800
Fix a memory leak in CXSparse::SolveCholesky.
Thanks to Alexander Mordvintsev for reporting this.
Change-Id: I5c6be4d3d28f062e83a1ad41cb8089c19362a005
commit 480f9b8551c02c429bc027197f3d868c5cc522c9
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Sun Mar 3 20:15:22 2013 -0800
Add gerrit instructions to the docs.
Change-Id: Ic98f20273f3ccbaeb8b4ca00c4ce0042a0d262f8
commit 7c60b5c2c6170f0f81a29dbaa2ca7d8031db843b
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Sun Mar 3 18:28:02 2013 -0800
version history update
Change-Id: Ia92caeb0f6659667ce1e56eefd0e3c87b3f6e538
commit a363a7b69c7b97e17ad671ba1aee30f201eafdd1
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Sun Mar 3 18:06:00 2013 -0800
Multithread DENSE_SCHUR
Replace the global lock in BlockRandomAccessDenseMatrix
with a per cell lock.
Change-Id: Iddbe38616157b6e0d3770eede3335a056c3ba18c
commit 31730ef55df802d1e251edab3bac3c0cdcb30647
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Thu Feb 28 11:20:28 2013 -0800
DenseSparseMatrix is now column-major.
1. Introduce new typdefs in eigen.h to allow for column
major matrices.
2. Clean up old unused typedefs, and the aligned typedefs
since they do not actually add any real performance.
3. Made eigen.h conform to the google style guide by removing
the using directives. They were polluting the ceres namespace.
4. Made the template specialization generator work again.
Change-Id: Ic2268c784534b737ebd6e1a043e2a327adaeca37
commit f8e43f7f2724c5413015e1f113ce860ee8b30428
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Wed Feb 27 08:55:20 2013 -0800
version history update
Change-Id: Ibd412a9e5beac3b3ac3e15b26fb11aa061956095
commit fef82b3a7af1e44f18f5343601fb19a4dd6f89ad
Author: Alex Stewart <alexs.mac@gmail.com>
Date: Wed Feb 27 10:44:12 2013 +0000
Bugfix - commenting-out unused member which results in build error on OS X with latest Xcode.
- Build error due to -Werror,-Wunused-private-field clang args.
- Raised with gtest group (as it also occurs with latest gtest:master but for a different
variable) with patch, but they don't want to fix for compatibility with legacy compilers/OS
see here: https://groups.google.com/forum/?fromgroups=#!topic/googletestframework/S1KLl2jkzws
Change-Id: I99984bcd9d07f6eb0e3fac58e27ddf0ac9e54265
commit 0bc3540b66cf9de4d4a317c6a760849aa66d414e
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Wed Feb 27 08:46:48 2013 -0800
Version history update
Change-Id: I6f79dd87e45bedf4bcf821e7b44f8b9553c39a7b
commit b59ac43b9d1122da3d00882efa7c5d6833c06ea7
Author: Alex Stewart <alexs.mac@gmail.com>
Date: Wed Feb 27 09:10:19 2013 +0000
Issue 83 fix: use correct pthread linker flags with clang.
1. -lpthreads was previously added to the CMAKE_CXX_FLAGS which are
not passed to the linker thus linking would fail.
2. Clang would emit a warning about -lpthreads being added to a
build instruction with -c (compile only).
This patch fixes both of these issues by adding -lpthreads to the
linker flags (and removes them from the CXX flags).
Change-Id: I5e54de3ab7eced177aa31f311926893598af5b56
commit 6fb1024ed5b197da261f71d1bb02716661da2fff
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Tue Feb 26 22:20:18 2013 -0800
Fix a small bug in evaluator.h
Change-Id: I2c4b8637e0ac8645721109f8b6bb2396ce8bb37b
commit 039ff07dd1a02e6c9cff335551f05bfe8269224b
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Tue Feb 26 09:15:39 2013 -0800
Evaluate ResidualBlocks without LossFunction if needed.
1. Add the ability to evaluate the problem without loss function.
2. Remove static Evaluator::Evaluate
3. Refactor the common code from problem_test.cc and
evaluator_test.cc into evaluator_test_utils.cc
Change-Id: I1aa841580afe91d288fbb65288b0ffdd1e43e827
commit c3fd3b960e489348d5b2c8b8f0167760e52ecbd9
Author: Taylor Braun-Jones <taylor@braun-jones.org>
Date: Tue Feb 26 00:30:35 2013 -0500
Only use cmake28 macro for RHEL6
This makes it possible to use the same spec to build on Fedora. It drops any
chance of building on RHEL5, but I doubt that was possible anyway.
Change-Id: Ia956eb6416504e520962ec2f617e03b40ca18203
commit b73148b9f38fe41032e696436566b78043a368db
Author: Taylor Braun-Jones <taylor@braun-jones.org>
Date: Mon Feb 25 02:34:00 2013 -0500
Remove -Wno-return-type-c-linkage option when using gcc
Only use this option when compiling with CLang which supports it.
Change-Id: I8555c16e82d61302f6a43672d0d63e5d4800c6b6
commit ba9442160dabf612a1dc51baf098937459b4b5ca
Author: Keir Mierle <mierle@gmail.com>
Date: Mon Feb 25 12:46:44 2013 -0800
Add the number of effective parameters to the final report.
Here is an example report, obtained by running:
bin/Debug/bundle_adjuster \
--input=../ceres-solver/data/problem-16-22106-pre.txt \
--linear_solver=iterative_schur \
--num_iterations=1 \
--alsologtostderr \
--use_local_parameterization \
--use_quaternions
Note that effective parameters is less than parameters by 16, which is the
number of cameras. In this case the local parameterization has a 3 dimensional
tangent space for the 4-dimensional quaternions.
Ceres Solver Report
-------------------
Original Reduced
Parameter blocks 22138 22138
Parameters 66478 66478
Effective parameters 66462 66462
Residual blocks 83718 83718
Residual 167436 167436
Minimizer TRUST_REGION
Trust Region Strategy LEVENBERG_MARQUARDT
Given Used
Linear solver ITERATIVE_SCHUR ITERATIVE_SCHUR
Preconditioner JACOBI JACOBI
Threads: 1 1
Linear solver threads 1 1
Linear solver ordering AUTOMATIC 22106, 32
Cost:
Initial 4.185660e+06
Final 7.221647e+04
Change 4.113443e+06
Number of iterations:
Successful 1
Unsuccessful 0
Total 1
Time (in seconds):
Preprocessor 0.697
Residual Evaluations 0.063
Jacobian Evaluations 27.608
Linear Solver 13.360
Minimizer 43.973
Postprocessor 0.004
Total 44.756
Termination: NO_CONVERGENCE
Change-Id: I6b6b8ac24f71bd187e67d95651290917642be74f
commit 36dc14ddf2fd53238c2ce21f172aa1989b31c0fd
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Mon Feb 25 10:33:10 2013 -0800
Fix a clang warning
Change-Id: I5ef32c6329f1f75efb30b16519b8de146a8339fa
commit 931c309b2734329ec6e5f0b88ce4a0b488ac47e5
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Mon Feb 25 09:46:21 2013 -0800
Cleanup based on comments by William Rucklidge
Change-Id: If269ba8e388965a8ea32260fd6f17a133a19ab9b
commit df36218c953e05d665df2cc96a6d7625e2307d97
Author: Taylor Braun-Jones <taylor@braun-jones.org>
Date: Fri Feb 15 18:28:11 2013 -0500
Add support for the CMake "LIB_SUFFIX" convention
Allows `make install` to work correctly on e.g. 64-bit systems where the
native libraries are installed to /usr/lib64
Change-Id: I71b4fae7b459c003cb5fac981278c668f2e29779