mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
8664de2230
The autotools-based build system has been superseded and is being removed in order to ease the maintenance burden on developers tweaking and maintaining the build system. In order to support tools that need to extract the server version, a new file that (only) contains the server version, called VERSION, is introduced. The file contents are human and machine-readable. The format is: MYSQL_VERSION_MAJOR=5 MYSQL_VERSION_MINOR=5 MYSQL_VERSION_PATCH=8 MYSQL_VERSION_EXTRA=-rc The CMake based version extraction in cmake/mysql_version.cmake is changed to extract the version from this file. The configure to CMake wrapper is retained for backwards compatibility and to support the BUILD/ scripts. Also, a new a makefile target show-dist-name that prints the server version is introduced. VERSION: Add top-level version file. cmake/mysql_version.cmake: Get version information from the top-level VERSION file. Do not cache the version components (MAJOR_VERSION, etc). Add MYSQL_RPM_VERSION as a replacement for MYSQL_U_SCORE_VERSION.
154 lines
4.7 KiB
CMake
154 lines
4.7 KiB
CMake
# Copyright (C) 2009 Sun Microsystems, Inc
|
|
#
|
|
# 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-1301 USA
|
|
|
|
# Make source distribution
|
|
# If bzr is present, run bzr export.
|
|
# Otherwise, just run cpack with source configuration.
|
|
|
|
SET(CMAKE_SOURCE_DIR "@CMAKE_SOURCE_DIR@")
|
|
SET(CMAKE_BINARY_DIR "@CMAKE_BINARY_DIR@")
|
|
SET(CPACK_SOURCE_PACKAGE_FILE_NAME "@CPACK_SOURCE_PACKAGE_FILE_NAME@")
|
|
SET(CMAKE_CPACK_COMMAND "@CMAKE_CPACK_COMMAND@")
|
|
SET(CMAKE_COMMAND "@CMAKE_COMMAND@")
|
|
SET(BZR_EXECUTABLE "@BZR_EXECUTABLE@")
|
|
SET(GTAR_EXECUTABLE "@GTAR_EXECUTABLE@")
|
|
SET(TAR_EXECUTABLE "@TAR_EXECUTABLE@")
|
|
SET(CMAKE_GENERATOR "@CMAKE_GENERATOR@")
|
|
SET(CMAKE_MAKE_PROGRAM "@CMAKE_MAKE_PROGRAM@")
|
|
SET(CMAKE_SYSTEM_NAME "@CMAKE_SYSTEM_NAME@")
|
|
|
|
SET(MYSQL_DOCS_LOCATION "@MYSQL_DOCS_LOCATION@")
|
|
|
|
|
|
SET(PACKAGE_DIR ${CMAKE_BINARY_DIR}/${CPACK_SOURCE_PACKAGE_FILE_NAME})
|
|
|
|
FILE(REMOVE_RECURSE ${PACKAGE_DIR})
|
|
FILE(REMOVE ${PACKAGE_DIR}.tar.gz )
|
|
|
|
IF(BZR_EXECUTABLE)
|
|
MESSAGE(STATUS "Running bzr export")
|
|
EXECUTE_PROCESS(
|
|
COMMAND "${BZR_EXECUTABLE}" export
|
|
${PACKAGE_DIR}
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
RESULT_VARIABLE RESULT
|
|
)
|
|
|
|
IF(NOT RESULT EQUAL 0)
|
|
SET(BZR_EXECUTABLE)
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
IF(NOT BZR_EXECUTABLE)
|
|
MESSAGE(STATUS "bzr not found or source dir is not a repo, use CPack")
|
|
|
|
IF(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
|
|
# In-source build is the worst option, we have to cleanup source tree.
|
|
|
|
# Save bison output first.
|
|
CONFIGURE_FILE(${CMAKE_BINARY_DIR}/sql/sql_yacc.cc
|
|
${CMAKE_BINARY_DIR}/sql_yacc.cc COPY_ONLY)
|
|
CONFIGURE_FILE(${CMAKE_BINARY_DIR}/sql/sql_yacc.h
|
|
${CMAKE_BINARY_DIR}/sql_yacc.h COPY_ONLY)
|
|
|
|
IF(CMAKE_GENERATOR MATCHES "Makefiles")
|
|
# make clean
|
|
EXECUTE_PROCESS(
|
|
COMMAND ${CMAKE_MAKE_PROGRAM} clean
|
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
|
)
|
|
ENDIF()
|
|
|
|
# Restore bison output
|
|
CONFIGURE_FILE(${CMAKE_BINARY_DIR}/sql_yacc.cc
|
|
${CMAKE_BINARY_DIR}/sql/sql_yacc.cc COPY_ONLY)
|
|
CONFIGURE_FILE(${CMAKE_BINARY_DIR}/sql_yacc.h
|
|
${CMAKE_BINARY_DIR}/sql/sql_yacc.h COPY_ONLY)
|
|
FILE(REMOVE ${CMAKE_BINARY_DIR}/sql_yacc.cc)
|
|
FILE(REMOVE ${CMAKE_BINARY_DIR}/sql_yacc.h)
|
|
ENDIF()
|
|
|
|
EXECUTE_PROCESS(
|
|
COMMAND ${CMAKE_CPACK_COMMAND} -G TGZ --config ./CPackSourceConfig.cmake
|
|
${CMAKE_BINARY_DIR}/CPackSourceConfig.cmake
|
|
|
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
|
)
|
|
EXECUTE_PROCESS(
|
|
COMMAND ${CMAKE_COMMAND} -E tar xzf
|
|
${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz
|
|
${PACK_SOURCE_PACKAGE_FILE_NAME}
|
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
|
)
|
|
ENDIF()
|
|
|
|
# Copy bison output
|
|
CONFIGURE_FILE(${CMAKE_BINARY_DIR}/sql/sql_yacc.h
|
|
${PACKAGE_DIR}/sql/sql_yacc.h COPYONLY)
|
|
CONFIGURE_FILE(${CMAKE_BINARY_DIR}/sql/sql_yacc.cc
|
|
${PACKAGE_DIR}/sql/sql_yacc.cc COPYONLY)
|
|
|
|
# Add documentation, if user has specified where to find them
|
|
IF(MYSQL_DOCS_LOCATION)
|
|
MESSAGE("Copying documentation files from " ${MYSQL_DOCS_LOCATION})
|
|
EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy_directory "${MYSQL_DOCS_LOCATION}" "${PACKAGE_DIR}")
|
|
ENDIF()
|
|
|
|
# In case we used CPack, it could have copied some
|
|
# extra files that are not usable on different machines.
|
|
FILE(REMOVE ${PACKAGE_DIR}/CMakeCache.txt)
|
|
|
|
# When packing source, prefer gnu tar to "cmake -P tar"
|
|
# cmake does not preserve timestamps.gnuwin32 tar is broken, cygwin is ok
|
|
|
|
IF(CMAKE_SYSTEM_NAME MATCHES "Windows")
|
|
IF (EXISTS C:/cygwin/bin/tar.exe)
|
|
SET(TAR_EXECUTABLE C:/cygwin/bin/tar.exe)
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
IF(GTAR_EXECUTABLE)
|
|
SET(GNUTAR ${GTAR_EXECUTABLE})
|
|
ELSEIF(TAR_EXECUTABLE)
|
|
EXECUTE_PROCESS(
|
|
COMMAND "${TAR_EXECUTABLE}" --version
|
|
RESULT_VARIABLE RESULT OUTPUT_VARIABLE OUT ERROR_VARIABLE ERR
|
|
)
|
|
IF(RESULT EQUAL 0 AND OUT MATCHES "GNU")
|
|
SET(GNUTAR ${TAR_EXECUTABLE})
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
SET($ENV{GZIP} "--best")
|
|
|
|
IF(GNUTAR)
|
|
SET(PACK_COMMAND
|
|
${GNUTAR} cfz
|
|
${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz
|
|
${CPACK_SOURCE_PACKAGE_FILE_NAME}
|
|
)
|
|
ELSE()
|
|
SET(PACK_COMMAND ${CMAKE_COMMAND} -E tar cfz
|
|
${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz
|
|
${CPACK_SOURCE_PACKAGE_FILE_NAME}
|
|
)
|
|
ENDIF()
|
|
|
|
MESSAGE(STATUS "Creating source package")
|
|
|
|
EXECUTE_PROCESS(
|
|
COMMAND ${PACK_COMMAND}
|
|
)
|
|
MESSAGE(STATUS "Source package ${PACKAGE_DIR}.tar.gz created")
|