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
135 lines
4.5 KiB
5 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()
|