用于EagleEye3.0 规则集漏报和误报测试的示例项目,项目收集于github和gitee
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

135 lines
4.5 KiB

3 months ago
# Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License, version 2.0,
# as published by the Free Software Foundation.
#
# This program is also distributed with certain software (including
# but not limited to OpenSSL) that is licensed under separate terms,
# as designated in a particular file or component or in included license
# documentation. The authors of MySQL hereby grant you an additional
# permission to link the program and your derivative works with the
# separately licensed software that they have included with MySQL.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
INCLUDE(cmake/version.cmake)
SET(CMAKE_MODULE_PATH
${CMAKE_MODULE_PATH}
"${CMAKE_SOURCE_DIR}"
"${CMAKE_CURRENT_SOURCE_DIR}"
"${CMAKE_CURRENT_SOURCE_DIR}/cmake")
# enable MACOSX_RPATH
CMAKE_POLICY(SET CMP0042 NEW)
# warn about non-existing dependencies in add_dependencies()
CMAKE_POLICY(SET CMP0046 NEW)
# set the VERSION as documented in PROJECT() command
CMAKE_POLICY(SET CMP0048 NEW)
# only interpret if() arguments as variables or keywords when unquoted
CMAKE_POLICY(SET CMP0054 NEW)
PROJECT("MySQLRouter" VERSION ${PROJECT_VERSION_TEXT} LANGUAGES C CXX)
# In CMake 3.12 and above, the
#
# * ``check_include_file`` macro in the ``CheckIncludeFile`` module, the
# * ``check_include_file_cxx`` macro in the
# ``CheckIncludeFileCXX`` module, and the
# * ``check_include_files`` macro in the ``CheckIncludeFiles`` module
#
# now prefer to link the check executable to the libraries listed in the
# ``CMAKE_REQUIRED_LIBRARIES`` variable.
IF(POLICY CMP0075)
CMAKE_POLICY(SET CMP0075 OLD)
ENDIF()
IF(SOLARIS)
# disable rapidjson optimisation on Solaris as it breaks
# shared objects that build with -fPIC
ADD_DEFINITIONS(-DRAPIDJSON_48BITPOINTER_OPTIMIZATION=0)
# Sun Studio 12.6 creates a bogus code when -x02 is used
# that crashes whenever std::condition_variable::wait_for() is used
IF(SOLARIS_INTEL)
STRING_APPEND(CMAKE_CXX_FLAGS_RELWITHDEBINFO " -xO1")
STRING_APPEND(CMAKE_CXX_FLAGS_RELEASE " -xO1")
STRING_APPEND(CMAKE_CXX_FLAGS_MINSIZEREL " -xO1")
ENDIF()
ENDIF()
# ld.lld: error: corrupt input file:
# version definition index 0 for symbol __gcov_var is out of bounds
IF(ENABLE_GCOV)
STRING(REPLACE "-fuse-ld=lld" ""
CMAKE_C_LINK_FLAGS ${CMAKE_C_LINK_FLAGS})
STRING(REPLACE "-fuse-ld=lld" ""
CMAKE_CXX_LINK_FLAGS ${CMAKE_CXX_LINK_FLAGS})
STRING(REPLACE "-Wl,--gdb-index" ""
CMAKE_C_LINK_FLAGS ${CMAKE_C_LINK_FLAGS})
STRING(REPLACE "-Wl,--gdb-index" ""
CMAKE_CXX_LINK_FLAGS ${CMAKE_CXX_LINK_FLAGS})
ENDIF()
IF(WIN32)
# Activate necessary dllexport/dllimport declarations.
ADD_DEFINITIONS(-DPROTOBUF_USE_DLLS)
ENDIF()
IF(WIN32)
# 'identifier' : class 'type' needs to have dll-interface to be used
# by clients of class 'type2'
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4251")
ENDIF()
INCLUDE(${CMAKE_SOURCE_DIR}/cmake/rapidjson.cmake)
SET(ROUTER_LICENSE_FILE "${CMAKE_SOURCE_DIR}/router/LICENSE.router")
SET(ROUTER_README_FILE "${CMAKE_SOURCE_DIR}/router/README.router")
SET(DOC_DESTINATION ".")
IF(NOT INSTALL_LAYOUT MATCHES "RPM")
INSTALL(FILES
${ROUTER_LICENSE_FILE}
${ROUTER_README_FILE}
DESTINATION ${DOC_DESTINATION} COMPONENT Router OPTIONAL)
ENDIF()
INCLUDE(cmake/settings.cmake)
INCLUDE(cmake/set_rpath.cmake)
# Required tools, libraries, etc..
INCLUDE(cmake/testing.cmake) # does not enable testing
INCLUDE(cmake/configure.cmake)
INCLUDE(cmake/packaging.cmake)
INCLUDE(cmake/Plugin.cmake)
INCLUDE(cmake/fuzzer.cmake)
INCLUDE_DIRECTORIES(${PROJECT_BINARY_DIR}/include)
# a meta-target to allow build everything router related, but nothing that
# it doesn't depend on
#
# each target needs to add itself via
#
# ADD_DEPENDENCIES(${MYSQL_ROUTER_BUILD_ALL_TARGET} ...)
#
SET(MYSQL_ROUTER_BUILD_ALL_TARGET mysqlrouter_all)
ADD_CUSTOM_TARGET(${MYSQL_ROUTER_BUILD_ALL_TARGET})
# Load all modules, including plugins
ADD_SUBDIRECTORY(src)
# Enable testing
IF(WITH_UNIT_TESTS AND GMOCK_FOUND)
ADD_SUBDIRECTORY(tests)
ENDIF()