用于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.
 
 
 
 
 
 

179 lines
6.7 KiB

# Copyright (c) 2017, 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, version 2.0, 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
MACRO(GET_CURL_VERSION)
FILE(STRINGS "${CURL_INCLUDE_DIR}/curl/curlver.h"
CURL_VERSION_NUMBERS
REGEX "^#[ ]*define[\t ]+LIBCURL_VERSION_[A-Z]+[\t ]+[0-9].*"
)
STRING(REGEX REPLACE
"^.*LIBCURL_VERSION_MAJOR[\t ]+([0-9]+).*$" "\\1"
CURL_VERSION_MAJOR "${CURL_VERSION_NUMBERS}"
)
STRING(REGEX REPLACE
"^.*LIBCURL_VERSION_MINOR[\t ]+([0-9]+).*$" "\\1"
CURL_VERSION_MINOR "${CURL_VERSION_NUMBERS}"
)
MESSAGE(STATUS "CURL version: ${CURL_VERSION_MAJOR}.${CURL_VERSION_MINOR}")
ENDMACRO()
MACRO(MYSQL_CHECK_CURL)
IF(WITH_CURL STREQUAL "system")
# FindCURL.cmake will set
# CURL_INCLUDE_DIRS - where to find curl/curl.h, etc.
# CURL_LIBRARIES - List of libraries when using curl.
# CURL_FOUND - True if curl found.
# CURL_VERSION_STRING - the version of curl found (since CMake 2.8.8)
FIND_PACKAGE(CURL)
IF(CURL_FOUND AND
CURL_LIBRARIES AND
NOT CURL_LIBRARIES MATCHES "CURL_LIBRARY-NOTFOUND" AND
NOT CURL_INCLUDE_DIRS MATCHES "CURL_INCLUDE_DIR-NOTFOUND")
SET(CURL_LIBRARY ${CURL_LIBRARIES} CACHE FILEPATH "Curl library")
SET(CURL_INCLUDE_DIR ${CURL_INCLUDE_DIRS} CACHE PATH "Curl include")
GET_CURL_VERSION()
ELSE()
SET(CURL_LIBRARY "")
SET(CURL_INCLUDE_DIR "")
ENDIF()
MESSAGE(STATUS "CURL_LIBRARY = ${CURL_LIBRARY}")
MESSAGE(STATUS "CURL_INCLUDE_DIR = ${CURL_INCLUDE_DIR}")
ELSEIF(WITH_CURL STREQUAL "bundled")
MESSAGE(FATAL_ERROR "There is no bundled CURL library.")
ELSEIF(WITH_CURL)
# Explicit path given. Normalize path for the following regex replace.
FILE(TO_CMAKE_PATH "${WITH_CURL}" WITH_CURL)
# Pushbuild adds /lib to the CURL path
STRING(REGEX REPLACE "/lib$" "" WITH_CURL "${WITH_CURL}")
LIST(REVERSE CMAKE_FIND_LIBRARY_SUFFIXES)
FIND_LIBRARY(CURL_LIBRARY
NAMES curl libcurl
PATHS ${WITH_CURL} ${WITH_CURL}/lib
NO_DEFAULT_PATH
NO_CMAKE_ENVIRONMENT_PATH
NO_SYSTEM_ENVIRONMENT_PATH
)
LIST(REVERSE CMAKE_FIND_LIBRARY_SUFFIXES)
IF(CURL_LIBRARY MATCHES "CURL_LIBRARY-NOTFOUND")
MESSAGE(FATAL_ERROR "CURL library not found under '${WITH_CURL}'")
ENDIF()
FIND_PATH(CURL_INCLUDE_DIR
NAMES curl/curl.h
PATHS ${WITH_CURL} ${WITH_CURL}/include
NO_DEFAULT_PATH
NO_CMAKE_ENVIRONMENT_PATH
NO_SYSTEM_ENVIRONMENT_PATH
)
IF(CURL_INCLUDE_DIR MATCHES "CURL_INCLUDE_DIR-NOTFOUND")
MESSAGE(FATAL_ERROR "CURL include files not found under '${WITH_CURL}'")
ENDIF()
SET(WITH_CURL_PATH ${WITH_CURL} CACHE PATH "path to CURL installation")
SET(WITH_CURL_PATH ${WITH_CURL})
GET_CURL_VERSION()
MESSAGE(STATUS "CURL_LIBRARY = ${CURL_LIBRARY}")
MESSAGE(STATUS "CURL_INCLUDE_DIR = ${CURL_INCLUDE_DIR}")
ELSE()
MESSAGE(STATUS "No WITH_CURL has been set. Not using any curl library.")
SET(CURL_LIBRARY "")
SET(CURL_INCLUDE_DIR "")
MESSAGE(STATUS "CURL_LIBRARY = ${CURL_LIBRARY}")
MESSAGE(STATUS "CURL_INCLUDE_DIR = ${CURL_INCLUDE_DIR}")
ENDIF()
ENDMACRO()
MACRO(MYSQL_CHECK_CURL_DLLS)
IF (WITH_CURL_PATH AND WIN32)
MESSAGE(STATUS "WITH_CURL_PATH ${WITH_CURL_PATH}")
GET_FILENAME_COMPONENT(CURL_NAME "${CURL_LIBRARY}" NAME_WE)
FIND_FILE(HAVE_CURL_DLL
NAMES "${CURL_NAME}.dll"
PATHS "${WITH_CURL_PATH}/lib"
NO_DEFAULT_PATH
)
MESSAGE(STATUS "HAVE_CURL_DLL ${HAVE_CURL_DLL}")
IF(HAVE_CURL_DLL)
SET(CURL_LIBRARY "CURL_LIBRARY-NOTFOUND")
FIND_LIBRARY(CURL_LIBRARY
NAMES libcurl_imp.lib
PATHS ${WITH_CURL} ${WITH_CURL}/lib
NO_DEFAULT_PATH
NO_CMAKE_ENVIRONMENT_PATH
NO_SYSTEM_ENVIRONMENT_PATH
)
IF(CURL_LIBRARY MATCHES "CURL_LIBRARY-NOTFOUND")
MESSAGE(FATAL_ERROR
"CURL dll import library not found under '${WITH_CURL}'")
ENDIF()
GET_FILENAME_COMPONENT(CURL_DLL_NAME "${HAVE_CURL_DLL}" NAME)
ADD_CUSTOM_TARGET(copy_curl_dlls ALL
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${HAVE_CURL_DLL}"
"${CMAKE_BINARY_DIR}/runtime_output_directory/${CMAKE_CFG_INTDIR}/${CURL_DLL_NAME}"
)
MESSAGE(STATUS "INSTALL ${HAVE_CURL_DLL} to ${INSTALL_BINDIR}")
INSTALL(FILES "${HAVE_CURL_DLL}"
DESTINATION "${INSTALL_BINDIR}" COMPONENT SharedLibraries)
SET(ZLIB_DLL_REQUIRED 1)
FIND_OBJECT_DEPENDENCIES("${HAVE_CURL_DLL}" DEPENDENCY_LIST)
LIST(FIND DEPENDENCY_LIST "zlib1.dll" FOUNDIT)
MESSAGE(STATUS "${CURL_DLL_NAME} DEPENDENCY_LIST ${DEPENDENCY_LIST}")
IF(FOUNDIT LESS 0)
UNSET(ZLIB_DLL_REQUIRED)
ENDIF()
FIND_FILE(HAVE_ZLIB_DLL
NAMES zlib1.dll
PATHS "${WITH_CURL_PATH}/lib"
NO_DEFAULT_PATH
)
MESSAGE(STATUS "HAVE_ZLIB_DLL ${HAVE_ZLIB_DLL}")
IF(ZLIB_DLL_REQUIRED AND NOT HAVE_ZLIB_DLL)
MESSAGE(FATAL_ERROR "libcurl.dll depends on zlib1.dll")
ENDIF()
IF(ZLIB_DLL_REQUIRED AND HAVE_ZLIB_DLL)
MESSAGE(STATUS "INSTALL ${HAVE_ZLIB_DLL} to ${INSTALL_BINDIR}")
INSTALL(FILES "${HAVE_ZLIB_DLL}"
DESTINATION "${INSTALL_BINDIR}" COMPONENT SharedLibraries)
GET_FILENAME_COMPONENT(ZLIB_DLL_NAME "${HAVE_ZLIB_DLL}" NAME)
ADD_CUSTOM_TARGET(copy_zlib_dlls ALL
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${HAVE_ZLIB_DLL}"
"${CMAKE_BINARY_DIR}/runtime_output_directory/${CMAKE_CFG_INTDIR}/${ZLIB_DLL_NAME}"
)
ADD_DEPENDENCIES(copy_curl_dlls copy_zlib_dlls)
ENDIF()
ELSE()
MESSAGE(STATUS "Cannot find CURL dynamic libraries")
ENDIF()
ENDIF()
ENDMACRO()