summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSébastien GALLOU <sebastien.gallou@xerox.com>2017-02-06 16:39:59 (GMT)
committerBrad King <brad.king@kitware.com>2017-02-06 21:12:39 (GMT)
commita3f71349deaf533201d3cb2e8076bb4e7edfbbf6 (patch)
tree334309c42e8f5b12af489b987c0395c0034fcac3
parentfddc01bab3352d12c0eba1ff781b359a7dec529c (diff)
downloadCMake-a3f71349deaf533201d3cb2e8076bb4e7edfbbf6.zip
CMake-a3f71349deaf533201d3cb2e8076bb4e7edfbbf6.tar.gz
CMake-a3f71349deaf533201d3cb2e8076bb4e7edfbbf6.tar.bz2
FindProtobuf: Add option to find static libraries on UNIX
Add a `Protobuf_USE_STATIC_LIBS` input variable to optionally restrict searches to static library names. This follows the approach of `FindBoost`.
-rw-r--r--Help/release/dev/FindProtobuf-static-libs.rst5
-rw-r--r--Modules/FindProtobuf.cmake27
2 files changed, 32 insertions, 0 deletions
diff --git a/Help/release/dev/FindProtobuf-static-libs.rst b/Help/release/dev/FindProtobuf-static-libs.rst
new file mode 100644
index 0000000..fcc0678
--- /dev/null
+++ b/Help/release/dev/FindProtobuf-static-libs.rst
@@ -0,0 +1,5 @@
+FindProtobuf-static-libs
+------------------------
+
+* The :module:`FindProtobuf` module now supports usage of static libraries
+ for Unix via a new ``Protobuf_USE_STATIC_LIBS`` input variable.
diff --git a/Modules/FindProtobuf.cmake b/Modules/FindProtobuf.cmake
index 3ffd5a7..102ed42 100644
--- a/Modules/FindProtobuf.cmake
+++ b/Modules/FindProtobuf.cmake
@@ -20,6 +20,9 @@
# imported .proto files.
# ``Protobuf_DEBUG``
# Show debug messages.
+# ``Protobuf_USE_STATIC_LIBS``
+# Set to ON to force the use of the static libraries.
+# Default is OFF.
#
# Defines the following variables:
#
@@ -218,6 +221,14 @@ function(PROTOBUF_GENERATE_PYTHON SRCS)
set(${SRCS} ${${SRCS}} PARENT_SCOPE)
endfunction()
+
+if(Protobuf_DEBUG)
+ # Output some of their choices
+ message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+ "Protobuf_USE_STATIC_LIBS = ${Protobuf_USE_STATIC_LIBS}")
+endif()
+
+
# Backwards compatibility
# Define camel case versions of input variables
foreach(UPPER
@@ -245,6 +256,17 @@ if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(_PROTOBUF_ARCH_DIR x64/)
endif()
+
+# Support preference of static libs by adjusting CMAKE_FIND_LIBRARY_SUFFIXES
+if( Protobuf_USE_STATIC_LIBS )
+ set( _protobuf_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
+ if(WIN32)
+ set(CMAKE_FIND_LIBRARY_SUFFIXES .lib .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
+ else()
+ set(CMAKE_FIND_LIBRARY_SUFFIXES .a )
+ endif()
+endif()
+
include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
# Internal function: search for normal library as well as a debug one
@@ -399,6 +421,11 @@ if(Protobuf_FOUND)
set(Protobuf_INCLUDE_DIRS ${Protobuf_INCLUDE_DIR})
endif()
+# Restore the original find library ordering
+if( Protobuf_USE_STATIC_LIBS )
+ set(CMAKE_FIND_LIBRARY_SUFFIXES ${_protobuf_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES})
+endif()
+
# Backwards compatibility
# Define upper case versions of output variables
foreach(Camel