blob: e22879538c2683b443e77fe5b47a637fd287d258 [file] [log] [blame]
Vitaly Bukac4593402016-10-20 16:17:52 -07001# Copyright 2016 Google Inc. All rights reserved.
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
Vitaly Buka1109c002016-10-20 17:25:19 -070015cmake_minimum_required(VERSION 3.5)
Vitaly Bukac4593402016-10-20 16:17:52 -070016project(LibProtobufMutator CXX)
17
18# External dependencies
19set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/external)
20
21# External dependencies
22include(googletest)
23include(protobuf)
Vitaly Buka1109c002016-10-20 17:25:19 -070024include(zlib)
Vitaly Bukac2f0c692017-01-05 18:36:12 -080025include(ProcessorCount)
Vitaly Bukac4593402016-10-20 16:17:52 -070026
27find_package (Threads)
28
Vitaly Buka5ee534b2016-11-18 10:02:01 -080029set(CMAKE_CXX_STANDARD 11)
Vitaly Buka432b5452016-12-09 14:42:09 -080030set(EXTRA_FLAGS "-fno-exceptions -Werror -Wall")
31set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_FLAGS}")
32set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_FLAGS}")
Vitaly Bukac4593402016-10-20 16:17:52 -070033
34add_library(protobuf-mutator ../protobuf_mutator.cc)
Vitaly Buka5ee534b2016-11-18 10:02:01 -080035target_link_libraries(protobuf-mutator
36 ${PROTOBUF_LIBRARY})
Vitaly Bukac4593402016-10-20 16:17:52 -070037
Vitaly Buka7247cfe2016-11-16 16:18:13 -080038protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS ../protobuf_mutator.proto)
Vitaly Bukac4593402016-10-20 16:17:52 -070039
Vitaly Buka1109c002016-10-20 17:25:19 -070040enable_testing()
Vitaly Buka4af611d2016-12-03 18:57:32 -080041add_executable(protobuf_mutator_test
42 ../protobuf_mutator_test.cc
43 ../weighted_reservoir_sampler_test.cc
44 ${PROTO_SRCS} ${PROTO_HDRS})
Vitaly Buka1109c002016-10-20 17:25:19 -070045target_link_libraries(protobuf_mutator_test
Vitaly Buka5ee534b2016-11-18 10:02:01 -080046 protobuf-mutator
Vitaly Buka1109c002016-10-20 17:25:19 -070047 ${ZLIB_LIBRARIES}
48 ${PROTOBUF_LIBRARY}
49 ${GTEST_BOTH_LIBRARIES}
50 ${CMAKE_THREAD_LIBS_INIT})
51
Vitaly Bukac2f0c692017-01-05 18:36:12 -080052ProcessorCount(CPU_COUNT)
53math(EXPR TEST_SHARDS_COUNT 2*${CPU_COUNT})
54math(EXPR TEST_SHARDS_MAX ${TEST_SHARDS_COUNT}-1)
55foreach(SHARD RANGE ${TEST_SHARDS_MAX})
56 add_test(test.protobuf_mutator_test_${SHARD} protobuf_mutator_test --gtest_color=yes AUTO)
57 set_property(
58 TEST test.protobuf_mutator_test_${SHARD}
59 APPEND PROPERTY ENVIRONMENT
60 GTEST_SHARD_INDEX=${SHARD}
61 GTEST_TOTAL_SHARDS=${TEST_SHARDS_COUNT})
62endforeach(SHARD)
63
64add_custom_target(check
65 COMMAND ${CMAKE_CTEST_COMMAND} -j${CPU_COUNT} --output-on-failure
66 DEPENDS protobuf_mutator_test)