|
@@ -5,6 +5,7 @@ cmake_minimum_required(VERSION 2.8)
|
|
|
project(protobuf C CXX)
|
|
|
|
|
|
# Options
|
|
|
+option(protobuf_VERBOSE "Enable for verbose output" OFF)
|
|
|
option(BUILD_TESTING "Build tests" ON)
|
|
|
option(BUILD_SHARED_LIBS "Build Shared Libraries" OFF)
|
|
|
if (MSVC)
|
|
@@ -14,29 +15,40 @@ endif (MSVC)
|
|
|
# Path to main configure script
|
|
|
set(protobuf_CONFIGURE_SCRIPT "../configure.ac")
|
|
|
|
|
|
-# Parse version from configure script
|
|
|
-file(STRINGS "${protobuf_CONFIGURE_SCRIPT}" protobuf_VERSION_LINE
|
|
|
- LIMIT_COUNT 1
|
|
|
- REGEX "^AC_INIT")
|
|
|
-# Replace special characters
|
|
|
-string(REPLACE "(" "_" protobuf_VERSION_LINE ${protobuf_VERSION_LINE})
|
|
|
-string(REPLACE ")" "_" protobuf_VERSION_LINE ${protobuf_VERSION_LINE})
|
|
|
-string(REPLACE "[" "_" protobuf_VERSION_LINE ${protobuf_VERSION_LINE})
|
|
|
-string(REPLACE "]" "_" protobuf_VERSION_LINE ${protobuf_VERSION_LINE})
|
|
|
-# Parse version string
|
|
|
-string(REGEX REPLACE "^AC_INIT__Protocol Buffers_,_([^_]+).*$" "\\1"
|
|
|
- protobuf_VERSION_STRING "${protobuf_VERSION_LINE}")
|
|
|
+# Parse configure script
|
|
|
+set(protobuf_AC_INIT_REGEX
|
|
|
+ "^AC_INIT\\(\\[([^]]+)\\],\\[([^]]+)\\],\\[([^]]+)\\],\\[([^]]+)\\]\\)$")
|
|
|
+file(STRINGS "${protobuf_CONFIGURE_SCRIPT}" protobuf_AC_INIT_LINE
|
|
|
+ LIMIT_COUNT 1 REGEX "^AC_INIT")
|
|
|
+# Description
|
|
|
+string(REGEX REPLACE "${protobuf_AC_INIT_REGEX}" "\\1"
|
|
|
+ protobuf_DESCRIPTION "${protobuf_AC_INIT_LINE}")
|
|
|
+# Version
|
|
|
+string(REGEX REPLACE "${protobuf_AC_INIT_REGEX}" "\\2"
|
|
|
+ protobuf_VERSION_STRING "${protobuf_AC_INIT_LINE}")
|
|
|
+# Contact
|
|
|
+string(REGEX REPLACE "${protobuf_AC_INIT_REGEX}" "\\3"
|
|
|
+ protobuf_CONTACT "${protobuf_AC_INIT_LINE}")
|
|
|
# Parse version tweaks
|
|
|
-string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\\.([0-9]+).*$" "\\1"
|
|
|
+set(protobuf_VERSION_REGEX "^([0-9]+)\\.([0-9]+)\\.([0-9]+).*$")
|
|
|
+string(REGEX REPLACE "${protobuf_VERSION_REGEX}" "\\1"
|
|
|
protobuf_VERSION_MAJOR "${protobuf_VERSION_STRING}")
|
|
|
-string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\\.([0-9]+).*$" "\\2"
|
|
|
+string(REGEX REPLACE "${protobuf_VERSION_REGEX}" "\\2"
|
|
|
protobuf_VERSION_MINOR "${protobuf_VERSION_STRING}")
|
|
|
-string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\\.([0-9]+).*$" "\\3"
|
|
|
+string(REGEX REPLACE "${protobuf_VERSION_REGEX}" "\\3"
|
|
|
protobuf_VERSION_PATCH "${protobuf_VERSION_STRING}")
|
|
|
# Package version
|
|
|
set(protobuf_VERSION
|
|
|
"${protobuf_VERSION_MAJOR}.${protobuf_VERSION_MINOR}.${protobuf_VERSION_PATCH}")
|
|
|
|
|
|
+if(protobuf_VERBOSE)
|
|
|
+ message(STATUS "Configuration script parsing status [")
|
|
|
+ message(STATUS " Description : ${protobuf_DESCRIPTION}")
|
|
|
+ message(STATUS " Version : ${protobuf_VERSION} (${protobuf_VERSION_STRING})")
|
|
|
+ message(STATUS " Contact : ${protobuf_CONTACT}")
|
|
|
+ message(STATUS "]")
|
|
|
+endif()
|
|
|
+
|
|
|
add_definitions(-DGOOGLE_PROTOBUF_CMAKE_BUILD)
|
|
|
|
|
|
find_package(Threads REQUIRED)
|