mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
9e1b3af4a4
To change all executables to have a mariadb name I had to: - Do name changes in every CMakeLists.txt that produces executables - CREATE_MARIADB_SYMLINK was removed and GET_SYMLINK added by Wlad to reuse the function in other places also - The scripts/CMakeLists.txt could make use of GET_SYMLINK instead of introducing redundant code, but I thought I'll leave that for next release - A lot of changes to debian/.install and debian/.links files due to swapping of real executable and symlink. I did not however change the name of the manpages, so the real name is still mysql there and mariadb are symlinks. - The Windows part needed a change now when we made the executables mariadb -named. MSI (and ZIP) do not support symlinks and to not break backward compatibility we had to include mysql named binaries also. Done by Wlad
123 lines
3.9 KiB
CMake
123 lines
3.9 KiB
CMake
# Copyright (c) 2009, 2010, 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 as published by
|
|
# the Free Software Foundation; version 2 of the License.
|
|
#
|
|
# 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-1335 USA
|
|
|
|
# Add executable plus some additional MySQL specific stuff
|
|
# Usage (same as for standard CMake's ADD_EXECUTABLE)
|
|
#
|
|
# MYSQL_ADD_EXECUTABLE(target source1...sourceN)
|
|
#
|
|
# MySQL specifics:
|
|
# - instruct CPack to install executable under ${CMAKE_INSTALL_PREFIX}/bin directory
|
|
# On Windows :
|
|
# - add version resource
|
|
# - instruct CPack to do autenticode signing if SIGNCODE is set
|
|
|
|
INCLUDE(CMakeParseArguments)
|
|
|
|
FUNCTION (MYSQL_ADD_EXECUTABLE)
|
|
# Pass-through arguments for ADD_EXECUTABLE
|
|
CMAKE_PARSE_ARGUMENTS(ARG
|
|
"WIN32;MACOSX_BUNDLE;EXCLUDE_FROM_ALL"
|
|
"DESTINATION;COMPONENT"
|
|
""
|
|
${ARGN}
|
|
)
|
|
LIST(GET ARG_UNPARSED_ARGUMENTS 0 target)
|
|
LIST(REMOVE_AT ARG_UNPARSED_ARGUMENTS 0)
|
|
|
|
SET(sources ${ARG_UNPARSED_ARGUMENTS})
|
|
ADD_VERSION_INFO(${target} EXECUTABLE sources)
|
|
|
|
IF(MSVC)
|
|
# Add compatibility manifest, to fix GetVersionEx on Windows 8.1 and later
|
|
IF (CMAKE_VERSION VERSION_GREATER 3.3)
|
|
SET(sources ${sources} ${PROJECT_SOURCE_DIR}/cmake/win_compatibility.manifest)
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
IF (ARG_WIN32)
|
|
SET(WIN32 WIN32)
|
|
ELSE()
|
|
UNSET(WIN32)
|
|
ENDIF()
|
|
IF (ARG_MACOSX_BUNDLE)
|
|
SET(MACOSX_BUNDLE MACOSX_BUNDLE)
|
|
ELSE()
|
|
UNSET(MACOSX_BUNDLE)
|
|
ENDIF()
|
|
IF (ARG_EXCLUDE_FROM_ALL)
|
|
SET(EXCLUDE_FROM_ALL EXCLUDE_FROM_ALL)
|
|
ELSE()
|
|
UNSET(EXCLUDE_FROM_ALL)
|
|
ENDIF()
|
|
|
|
ADD_EXECUTABLE(${target} ${WIN32} ${MACOSX_BUNDLE} ${EXCLUDE_FROM_ALL} ${sources})
|
|
|
|
# tell CPack where to install
|
|
IF(NOT ARG_EXCLUDE_FROM_ALL)
|
|
IF(NOT ARG_DESTINATION)
|
|
SET(ARG_DESTINATION ${INSTALL_BINDIR})
|
|
ENDIF()
|
|
IF(ARG_COMPONENT)
|
|
SET(COMP ${ARG_COMPONENT})
|
|
ELSEIF(MYSQL_INSTALL_COMPONENT)
|
|
SET(COMP ${MYSQL_INSTALL_COMPONENT})
|
|
ELSE()
|
|
SET(COMP Client)
|
|
ENDIF()
|
|
IF (COMP MATCHES ${SKIP_COMPONENTS})
|
|
RETURN()
|
|
ENDIF()
|
|
|
|
IF (WITH_STRIPPED_CLIENT AND NOT target STREQUAL mariadbd)
|
|
INSTALL(CODE "SET(CMAKE_INSTALL_DO_STRIP 1)" COMPONENT ${COMP})
|
|
SET(reset_strip ON)
|
|
ENDIF()
|
|
|
|
MYSQL_INSTALL_TARGETS(${target} DESTINATION ${ARG_DESTINATION} COMPONENT ${COMP})
|
|
|
|
IF (reset_strip)
|
|
INSTALL(CODE "SET(CMAKE_INSTALL_DO_STRIP 0)" COMPONENT ${COMP})
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
# create MySQL named "legacy links"
|
|
GET_SYMLINK(${target} link)
|
|
IF(link)
|
|
IF(UNIX)
|
|
ADD_CUSTOM_COMMAND(TARGET ${target} POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E create_symlink
|
|
${target} ${link}
|
|
COMMENT "Creating ${link} link"
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR})
|
|
INSTALL(PROGRAMS
|
|
${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${link}
|
|
DESTINATION
|
|
${ARG_DESTINATION}
|
|
COMPONENT ${COMP})
|
|
ELSE()
|
|
# Windows note:
|
|
# Here, hardlinks are used, because cmake can't install symlinks.
|
|
# In packages, there are won't be links, just copies.
|
|
SET(link ${link}.exe)
|
|
ADD_CUSTOM_COMMAND(TARGET ${target} POST_BUILD
|
|
COMMAND cmake -E remove -f ${link}
|
|
COMMAND mklink /H ${link} $<TARGET_FILE_NAME:${target}>
|
|
COMMENT "Creating ${link} link"
|
|
WORKING_DIRECTORY $<TARGET_FILE_DIR:${target}>)
|
|
INSTALL(PROGRAMS $<TARGET_FILE_DIR:${target}>/${link} DESTINATION ${ARG_DESTINATION} COMPONENT ${COMP})
|
|
ENDIF()
|
|
ENDIF()
|
|
ENDFUNCTION()
|