aboutsummaryrefslogtreecommitdiffhomepage
path: root/cmake/CMakeLists.txt
diff options
context:
space:
mode:
authorGravatar Konstantin Podsvirov <konstantin@podsvirov.pro>2015-08-01 02:01:42 +0300
committerGravatar Konstantin Podsvirov <konstantin@podsvirov.pro>2015-08-01 02:01:42 +0300
commit743ec448c5358a95d10e655ab256d7911e2145d5 (patch)
tree8dfe3862e7ca33b25ca392481cd96e9ad6230ded /cmake/CMakeLists.txt
parent82983433cf6fdc9857a5ca57f281ad0b5f41817c (diff)
Parsing version from configure.ac for CMake project
Diffstat (limited to 'cmake/CMakeLists.txt')
-rw-r--r--cmake/CMakeLists.txt37
1 files changed, 22 insertions, 15 deletions
diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index dbcf3490..1b477762 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -11,24 +11,31 @@ if (MSVC)
option(ZLIB "Build with zlib support" OFF)
endif (MSVC)
-# Path to common header
-set(protobuf_COMMON_HEADER "../src/google/protobuf/stubs/common.h")
+# Path to main configure script
+set(protobuf_CONFIGURE_SCRIPT "../configure.ac")
-# Parse version from common header
-file(STRINGS "${protobuf_COMMON_HEADER}" protobuf_VERSION_LINE
+# Parse version from configure script
+file(STRINGS "${protobuf_CONFIGURE_SCRIPT}" protobuf_VERSION_LINE
LIMIT_COUNT 1
- REGEX "^#define GOOGLE_PROTOBUF_VERSION [0-9]+$")
-string(REGEX REPLACE "^.*PROTOBUF_VERSION ([0-9]+).*$" "\\1"
- protobuf_VERSION_NUMBER "${protobuf_VERSION_LINE}")
-math(EXPR protobuf_VERSION_MICRO
- "${protobuf_VERSION_NUMBER} % 1000")
-math(EXPR protobuf_VERSION_MINOR
- "(${protobuf_VERSION_NUMBER} - ${protobuf_VERSION_MICRO}) % 1000000 / 1000")
-math(EXPR protobuf_VERSION_MAJOR
- "(${protobuf_VERSION_NUMBER} - ${protobuf_VERSION_MINOR} * 1000 - ${protobuf_VERSION_MICRO}) % 1000000000 / 1000000")
-set(protobuf_VERSION_PATCH ${protobuf_VERSION_MICRO})
+ 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 version tweaks
+string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\\.([0-9]+).*$" "\\1"
+ protobuf_VERSION_MAJOR "${protobuf_VERSION_STRING}")
+string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\\.([0-9]+).*$" "\\2"
+ protobuf_VERSION_MINOR "${protobuf_VERSION_STRING}")
+string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\\.([0-9]+).*$" "\\3"
+ protobuf_VERSION_PATCH "${protobuf_VERSION_STRING}")
+# Package version
set(protobuf_VERSION
- "${protobuf_VERSION_MAJOR}.${protobuf_VERSION_MINOR}.${protobuf_VERSION_MICRO}")
+ "${protobuf_VERSION_MAJOR}.${protobuf_VERSION_MINOR}.${protobuf_VERSION_PATCH}")
add_definitions(-DGOOGLE_PROTOBUF_CMAKE_BUILD)