Handle different installation layouts.

using  cmake option INSTALL_LAYOUT=STANDALONE would produce the layout as in 
tar.gz or zip packages.
INSTALL_LAYOUT=UNIX will produce unixish install layout  (with mysqld being in sbin subdirectory , libs in lib/mysql etc). This layout is used for RPM packages.

Subtle differences in both packages unfortunately lead to the need to recompile MySQL to use with other package type - as otherwise for example default plugins or data directories would be wrong set.

There are numerous other variables that  allow fine-tuning packaging layout. (INSTALL_BINDIR, INSTALL_LIBDIR , INSTALL_PLUGINDIR etc).

This options are different from autotools as they do not expect full paths to directories, but only subdirectory of CMAKE_INSTALL_PREFIX.

There are 2 special options that expect full directory paths
- MYSQL_DATADIR that defines default MYSQL data directory (autotools equivalent
is --localstatedir)
- SYSCONFDIR  can be added to search my.cnf search path (autotools equivalent is --sysconfdir)
This commit is contained in:
Vladislav Vaintroub 2010-01-24 16:23:16 +01:00
commit c514d75ebb
19 changed files with 256 additions and 92 deletions

View file

@ -22,6 +22,16 @@ ${CMAKE_SOURCE_DIR}/sql-bench/Comments/*
${CMAKE_SOURCE_DIR}/sql-bench/limits/*
)
IF(NOT INSTALL_SQLBENCHDIR)
RETURN()
ENDIF()
IF(INSTALL_SQLBENCHROOTDIR STREQUAL ".")
SET(prefix)
ELSE()
SET(prefix ${INSTALL_SQLBENCHROOTDIR}/)
ENDIF()
GET_FILENAME_COMPONENT(basedir ${CMAKE_SOURCE_DIR} ABSOLUTE)
FOREACH(file ${all_files})
IF(NOT IS_DIRECTORY ${file} AND NOT ${file} MATCHES "Make" )
@ -42,10 +52,10 @@ FOREACH(file ${all_files})
CONFIGURE_FILE(${file} ${target} COPYONLY)
IF (ext MATCHES ".bat")
IF(WIN32)
INSTALL(FILES ${target} DESTINATION ${dir})
INSTALL(FILES ${target} DESTINATION ${prefix}${dir})
ENDIF()
ELSE()
INSTALL(FILES ${target} DESTINATION ${dir})
INSTALL(FILES ${target} DESTINATION ${prefix}${dir})
ENDIF()
ENDIF()
ENDFOREACH()