mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2024-11-08 08:47:17 +01:00
95 lines
3.8 KiB
CMake
95 lines
3.8 KiB
CMake
|
#
|
||
|
# Copyright (C) 2013-2018 MariaDB Corporation AB
|
||
|
#
|
||
|
# Redistribution and use is allowed according to the terms of the New
|
||
|
# BSD license.
|
||
|
# For details see the COPYING-CMAKE-SCRIPTS file.
|
||
|
#
|
||
|
# plugin configuration
|
||
|
|
||
|
include(${CC_SOURCE_DIR}/cmake/install_plugins.cmake)
|
||
|
include(${CC_SOURCE_DIR}/cmake/sign.cmake)
|
||
|
|
||
|
FUNCTION(REGISTER_PLUGIN)
|
||
|
|
||
|
SET(one_value_keywords TARGET DEFAULT TYPE)
|
||
|
SET(multi_value_keywords CONFIGURATIONS SOURCES LIBRARIES INCLUDES COMPILE_OPTIONS)
|
||
|
|
||
|
cmake_parse_arguments(CC_PLUGIN
|
||
|
"${options}"
|
||
|
"${one_value_keywords}"
|
||
|
"${multi_value_keywords}"
|
||
|
${ARGN})
|
||
|
|
||
|
# overwrite default if it was specified with cmake option
|
||
|
string(TOUPPER ${CC_PLUGIN_TARGET} cc_plugin)
|
||
|
if(NOT "${CLIENT_PLUGIN_${cc_plugin}}" STREQUAL "")
|
||
|
SET(CC_PLUGIN_DEFAULT ${CLIENT_PLUGIN_${cc_plugin}})
|
||
|
endif()
|
||
|
|
||
|
# use uppercase
|
||
|
string(TOUPPER ${CC_PLUGIN_TARGET} target_name)
|
||
|
string(TOUPPER "${CC_PLUGIN_CONFIGURATIONS}" CC_PLUGIN_CONFIGURATIONS)
|
||
|
|
||
|
if(NOT ${PLUGIN_${target_name}} STREQUAL "")
|
||
|
string(TOUPPER ${PLUGIN_${target_name}} PLUGIN_${target_name})
|
||
|
set(CC_PLUGIN_DEFAULT ${PLUGIN_${target_name}})
|
||
|
endif()
|
||
|
|
||
|
# check if default value is valid
|
||
|
string(TOUPPER ${CC_PLUGIN_DEFAULT} CC_PLUGIN_DEFAULT)
|
||
|
list(FIND CC_PLUGIN_CONFIGURATIONS ${CC_PLUGIN_DEFAULT} configuration_found)
|
||
|
if(${configuration_found} EQUAL -1)
|
||
|
message(FATAL_ERROR "Invalid plugin type ${CC_PLUGIN_DEFAULT}. Allowed plugin types are ${CC_PLUGIN_CONFIGURATIONS}")
|
||
|
endif()
|
||
|
|
||
|
if(NOT ${CC_PLUGIN_DEFAULT} STREQUAL "OFF")
|
||
|
set(PLUGIN_${CC_PLUGIN_TARGET}_TYPE ${CC_PLUGIN_TYPE})
|
||
|
|
||
|
if(${CC_PLUGIN_DEFAULT} STREQUAL "DYNAMIC")
|
||
|
|
||
|
set(PLUGINS_DYNAMIC ${PLUGINS_DYNAMIC} ${CC_PLUGIN_TARGET} PARENT_SCOPE)
|
||
|
if(WIN32)
|
||
|
set(target ${CC_PLUGIN_TARGET})
|
||
|
set(FILE_TYPE "VFT_DLL")
|
||
|
set(FILE_DESCRIPTION "MariaDB client plugin")
|
||
|
set(FILE_VERSION ${CPACK_PACKAGE_VERSION})
|
||
|
set(ORIGINAL_FILE_NAME "${target}.dll")
|
||
|
configure_file(${CC_SOURCE_DIR}/win/resource.rc.in
|
||
|
${CC_BINARY_DIR}/win/${target}.rc
|
||
|
@ONLY)
|
||
|
set(CC_PLUGIN_SOURCES ${CC_PLUGIN_SOURCES} ${CC_BINARY_DIR}/win/${target}.rc ${CC_SOURCE_DIR}/plugins/plugin.def)
|
||
|
endif()
|
||
|
add_library(${CC_PLUGIN_TARGET} MODULE ${CC_PLUGIN_SOURCES})
|
||
|
target_link_libraries(${CC_PLUGIN_TARGET} ${CC_PLUGIN_LIBRARIES})
|
||
|
set_target_properties(${CC_PLUGIN_TARGET} PROPERTIES PREFIX "")
|
||
|
set_target_properties(${CC_PLUGIN_TARGET}
|
||
|
PROPERTIES COMPILE_FLAGS
|
||
|
"-DPLUGIN_DYNAMIC=1 ${CC_PLUGIN_COMPILE_OPTIONS}")
|
||
|
if (NOT "${CC_PLUGIN_INCLUDES}" STREQUAL "")
|
||
|
if(CMAKE_VERSION VERSION_LESS 2.8.11)
|
||
|
include_directories(${CC_PLUGIN_INCLUDES})
|
||
|
else()
|
||
|
target_include_directories(${CC_PLUGIN_TARGET} PRIVATE ${CC_PLUGIN_INCLUDES})
|
||
|
endif()
|
||
|
endif()
|
||
|
if (${CC_TARGET_COMPILE_OPTIONS})
|
||
|
target_compile_options(${CC_PLUGIN_TARGET} ${CC_TARGET_COMPILE_OPTIONS})
|
||
|
endif()
|
||
|
|
||
|
if(WIN32)
|
||
|
SIGN_TARGET(${target})
|
||
|
endif()
|
||
|
INSTALL_PLUGIN(${CC_PLUGIN_TARGET} ${CMAKE_CURRENT_BINARY_DIR})
|
||
|
elseif(${CC_PLUGIN_DEFAULT} STREQUAL "STATIC")
|
||
|
set(PLUGINS_STATIC ${PLUGINS_STATIC} ${CC_PLUGIN_TARGET} PARENT_SCOPE)
|
||
|
set(LIBMARIADB_PLUGIN_CFLAGS ${LIBMARIADB_PLUGIN_CFLAGS} ${CC_PLUGIN_COMPILE_OPTIONS} PARENT_SCOPE)
|
||
|
set(LIBMARIADB_PLUGIN_INCLUDES ${LIBMARIADB_PLUGIN_INCLUDES} ${CC_PLUGIN_INCLUDES} PARENT_SCOPE)
|
||
|
set(LIBMARIADB_PLUGIN_SOURCES ${LIBMARIADB_PLUGIN_SOURCES} ${CC_PLUGIN_SOURCES} PARENT_SCOPE)
|
||
|
set(LIBMARIADB_PLUGIN_LIBS ${LIBMARIADB_PLUGIN_LIBS} ${CC_PLUGIN_LIBRARIES} PARENT_SCOPE)
|
||
|
endif()
|
||
|
else()
|
||
|
set(PLUGINS_OFF ${PLUGINS_OFF} ${CC_PLUGIN_TARGET})
|
||
|
endif()
|
||
|
endfunction()
|